mie: builtin: add function to create mie_type_attr instances

This commit is contained in:
2026-01-21 14:38:01 +00:00
parent 33f9ccd871
commit f6f6131f52

View File

@@ -7,6 +7,23 @@
#include <mie/parse/parser.h>
#include <mie/print/printer.h>
struct mie_attribute *mie_type_attr_create(
struct mie_ctx *ctx, const struct mie_type *ty)
{
struct mie_type_attr *out = malloc(sizeof *out);
if (!out) {
return NULL;
}
memset(out, 0x0, sizeof *out);
out->ty_base.a_def
= mie_ctx_get_attribute_definition(ctx, "builtin", "type");
out->ty_value = ty;
return (struct mie_attribute *)out;
}
static enum mie_status print(
const struct mie_attribute *value, struct mie_printer *out)
{
@@ -25,25 +42,11 @@ static enum mie_status print(
return MIE_SUCCESS;
}
static struct mie_type_attr *type_attr_create(struct mie_ctx *ctx)
{
struct mie_type_attr *ty = malloc(sizeof *ty);
if (!ty) {
return NULL;
}
memset(ty, 0x0, sizeof *ty);
ty->ty_base.a_def
= mie_ctx_get_attribute_definition(ctx, "builtin", "type");
return ty;
}
static enum mie_status parse(
struct mie_parser *ctx, const struct mie_attribute **out)
{
struct mie_type_attr *ty = type_attr_create(mie_parser_get_mie_ctx(ctx));
struct mie_type_attr *ty = (struct mie_type_attr *)mie_type_attr_create(
mie_parser_get_mie_ctx(ctx), NULL);
if (!ty) {
return MIE_ERR_NO_MEMORY;
}