q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ed58165b501d24aee0cffebe464208cdf850ecda
commit ed58165b501d24aee0cffebe464208cdf850ecda Author: Daniel Kolesa <d.kol...@osg.samsung.com> Date: Tue May 12 16:15:29 2015 +0100 eolian: butts --- src/bin/eolian/eo_generator.c | 4 +- src/bin/eolian/types_generator.c | 6 +-- src/bindings/luajit/eolian.lua | 22 +++----- src/lib/ecore_con/ecore_con_base.eo | 4 +- src/lib/eolian/Eolian.h | 3 -- src/lib/eolian/database_expr.c | 52 ++---------------- src/lib/eolian/database_expr_api.c | 11 ++-- src/lib/eolian/database_type.c | 19 +------ src/lib/eolian/database_validate.c | 30 +---------- src/lib/eolian/eo_parser.c | 103 +++--------------------------------- src/tests/eolian/data/enum.eo | 4 +- src/tests/eolian/data/free_func.eo | 8 --- src/tests/eolian/data/struct.eo | 14 +---- src/tests/eolian/data/struct_ref.c | 24 +++------ src/tests/eolian/eolian_parsing.c | 25 ++------- 15 files changed, 50 insertions(+), 279 deletions(-) diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index 617de5f..738f32a 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -468,7 +468,7 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, eina_strbuf_append_printf(params_init, " if (%s) *%s = %s;", pname, pname, val_str); - if (eolian_expression_type_get(dflt_value) == EOLIAN_EXPR_ENUM) + if (eolian_expression_type_get(dflt_value) == EOLIAN_EXPR_NAME) { Eina_Stringshare *string = eolian_expression_serialize(dflt_value); eina_strbuf_append_printf(params_init, " /* %s */", string); @@ -586,7 +586,7 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, eina_strbuf_append_printf(eo_func_decl, ", %s%s, %s", ret_const ? "const " : "", rettype, val_str?val_str:"0"); - if (val_str && eolian_expression_type_get(default_ret_val) == EOLIAN_EXPR_ENUM) + if (val_str && eolian_expression_type_get(default_ret_val) == EOLIAN_EXPR_NAME) { Eina_Stringshare *string = eolian_expression_serialize(default_ret_val); eina_strbuf_append_printf(eo_func_decl, " /* %s */", string); diff --git a/src/bin/eolian/types_generator.c b/src/bin/eolian/types_generator.c index 15bf535..abe926b 100644 --- a/src/bin/eolian/types_generator.c +++ b/src/bin/eolian/types_generator.c @@ -91,8 +91,7 @@ _type_generate(const Eolian_Type *tp, Eina_Bool in_typedef, Eina_Bool full) free(name); break; } - eina_strbuf_append_printf(buf, "struct%s%s {\n", name?" ":"", name?name:""); - free(name); + eina_strbuf_append_printf(buf, "typedef struct\n{\n"); Eina_Iterator *members = eolian_type_struct_fields_get(tp); EINA_ITERATOR_FOREACH(members, member) { @@ -106,7 +105,8 @@ _type_generate(const Eolian_Type *tp, Eina_Bool in_typedef, Eina_Bool full) eina_strbuf_append(buf, "\n"); } eina_iterator_free(members); - eina_strbuf_append(buf, "}"); + eina_strbuf_append_printf(buf, "} %s", name); + free(name); break; } case EOLIAN_TYPE_ENUM: diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 9868170..21c73d7 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -61,8 +61,6 @@ ffi.cdef [[ EOLIAN_TYPE_UNKNOWN_TYPE, EOLIAN_TYPE_VOID, EOLIAN_TYPE_REGULAR, - EOLIAN_TYPE_REGULAR_STRUCT, - EOLIAN_TYPE_REGULAR_ENUM, EOLIAN_TYPE_COMPLEX, EOLIAN_TYPE_POINTER, EOLIAN_TYPE_FUNCTION, @@ -88,7 +86,6 @@ ffi.cdef [[ EOLIAN_EXPR_NULL, EOLIAN_EXPR_BOOL, EOLIAN_EXPR_NAME, - EOLIAN_EXPR_ENUM, EOLIAN_EXPR_UNARY, EOLIAN_EXPR_BINARY } Eolian_Expression_Type; @@ -431,16 +428,14 @@ M.type_type = { UNKNOWN = 0, VOID = 1, REGULAR = 2, - REGULAR_STRUCT = 3, - REGULAR_ENUM = 4, - COMPLEX = 5, - POINTER = 6, - FUNCTION = 7, - STRUCT = 8, - STRUCT_OPAQUE = 9, - ENUM = 10, - ALIAS = 11, - CLASS = 12 + COMPLEX = 3, + POINTER = 4, + FUNCTION = 5, + STRUCT = 6, + STRUCT_OPAQUE = 7, + ENUM = 8, + ALIAS = 9, + CLASS = 10 } ffi.metatype("Eolian_Struct_Type_Field", { @@ -1059,7 +1054,6 @@ M.expression_type = { NULL = 11, BOOL = 12, NAME = 13, - ENUM = 14, UNARY = 15, BINARY = 16 } diff --git a/src/lib/ecore_con/ecore_con_base.eo b/src/lib/ecore_con/ecore_con_base.eo index 20c0a21..9400335 100644 --- a/src/lib/ecore_con/ecore_con_base.eo +++ b/src/lib/ecore_con/ecore_con_base.eo @@ -174,10 +174,10 @@ abstract Ecore.Con.Base (Eo.Base) { } /* FIXME: Should actually be a binbuf. */ -type Ecore_Con_Event_Data_Received: struct { +struct Ecore_Con_Event_Data_Received { data: void *; /*@ The data thet got sent. */ size: int; /*@ The length of the data sent. */ -}; +} /* TODO * Add events (to all of the ecore con stuff, e.g url). diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index af2d575..63ff0cf 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -191,8 +191,6 @@ typedef enum EOLIAN_TYPE_UNKNOWN_TYPE, EOLIAN_TYPE_VOID, EOLIAN_TYPE_REGULAR, - EOLIAN_TYPE_REGULAR_STRUCT, - EOLIAN_TYPE_REGULAR_ENUM, EOLIAN_TYPE_COMPLEX, EOLIAN_TYPE_POINTER, EOLIAN_TYPE_STRUCT, @@ -218,7 +216,6 @@ typedef enum EOLIAN_EXPR_NULL, EOLIAN_EXPR_BOOL, EOLIAN_EXPR_NAME, - EOLIAN_EXPR_ENUM, EOLIAN_EXPR_UNARY, EOLIAN_EXPR_BINARY } Eolian_Expression_Type; diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c index e804e9a..3cf82a0 100644 --- a/src/lib/eolian/database_expr.c +++ b/src/lib/eolian/database_expr.c @@ -508,24 +508,11 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask, return expr_error(expr, "undefined variable"); etp = eolian_type_alias_get_by_name(fulln); - while (etp && etp->type == EOLIAN_TYPE_ALIAS) - { - etp = eolian_type_base_type_get(etp); - if (etp->type == EOLIAN_TYPE_ENUM) - break; - if (etp->type == EOLIAN_TYPE_REGULAR_ENUM) - break; - if (etp->type != EOLIAN_TYPE_REGULAR) - { - etp = NULL; - break; - } - etp = eolian_type_alias_get_by_name(etp->full_name); - } - - if (etp && etp->type == EOLIAN_TYPE_REGULAR_ENUM) - etp = eolian_type_enum_get_by_name(etp->full_name); + while (etp && (etp->type == EOLIAN_TYPE_ALIAS + || etp->type == EOLIAN_TYPE_REGULAR)) + etp = eolian_type_base_type_get(etp); + if (!etp) etp = eolian_type_enum_get_by_name(fulln); if (!etp || etp->type != EOLIAN_TYPE_ENUM) { free(fulln); @@ -547,37 +534,6 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask, return eval_exp(exp, mask, out); } - case EOLIAN_EXPR_ENUM: - { - const Eolian_Type *etp; - const Eolian_Expression *exp = NULL; - const Eolian_Enum_Type_Field *fl; - - char *fulln = NULL, *memb = NULL; - if (!split_enum_name(expr->value.s, &fulln, &memb)) - { - return expr_error(expr, "invalid enum"); - } - - etp = eolian_type_enum_get_by_name(fulln); - if (etp && etp->type == EOLIAN_TYPE_REGULAR_ENUM) - etp = eolian_type_enum_get_by_name(etp->full_name); - - if (!etp) - { - free(fulln); - return expr_error(expr, "invalid enum"); - } - - fl = eolian_type_enum_field_get(etp, memb); - if (fl) exp = eolian_type_enum_field_value_get(fl); - free(fulln); - - if (!exp) - return expr_error(expr, "invalid enum field"); - - return eval_exp(exp, mask, out); - } case EOLIAN_EXPR_UNARY: return eval_unary(expr, mask, out); case EOLIAN_EXPR_BINARY: diff --git a/src/lib/eolian/database_expr_api.c b/src/lib/eolian/database_expr_api.c index cb225af..abc9fda 100644 --- a/src/lib/eolian/database_expr_api.c +++ b/src/lib/eolian/database_expr_api.c @@ -36,11 +36,17 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type *type) } case EOLIAN_TYPE_CLASS: return database_expr_eval(expr, EOLIAN_MASK_NULL); + case EOLIAN_TYPE_ENUM: + return database_expr_eval(expr, EOLIAN_MASK_INT); case EOLIAN_TYPE_REGULAR: { int kw = eo_lexer_keyword_str_to_id(type->name); if (!kw || kw < KW_byte || kw >= KW_void) - return err; + { + const Eolian_Type *base = eolian_type_base_type_get(type); + if (base) return _eval_type(expr, base); + return err; + } switch (kw) { case KW_byte: @@ -249,10 +255,7 @@ _expr_serialize(const Eolian_Expression *expr, Eina_Strbuf *buf, Eina_Bool outer eina_strbuf_append(buf, expr->value.b ? "true" : "false"); break; case EOLIAN_EXPR_NAME: - case EOLIAN_EXPR_ENUM: { - if (expr->type == EOLIAN_EXPR_ENUM) - eina_strbuf_append(buf, "enum "); eina_strbuf_append(buf, expr->value.s); break; } diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index 23097c5..cfe0dad 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -188,8 +188,6 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name) } if ((tp->type == EOLIAN_TYPE_REGULAR || tp->type == EOLIAN_TYPE_COMPLEX - || tp->type == EOLIAN_TYPE_REGULAR_STRUCT - || tp->type == EOLIAN_TYPE_REGULAR_ENUM || tp->type == EOLIAN_TYPE_VOID || tp->type == EOLIAN_TYPE_CLASS) && tp->is_const) @@ -198,20 +196,10 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name) } if (tp->type == EOLIAN_TYPE_REGULAR || tp->type == EOLIAN_TYPE_COMPLEX - || tp->type == EOLIAN_TYPE_CLASS - || tp->type == EOLIAN_TYPE_REGULAR_STRUCT - || tp->type == EOLIAN_TYPE_REGULAR_ENUM) + || tp->type == EOLIAN_TYPE_CLASS) { Eina_List *l; const char *sp; - if (tp->type == EOLIAN_TYPE_REGULAR_STRUCT) - { - eina_strbuf_append(buf, "struct "); - } - else if (tp->type == EOLIAN_TYPE_REGULAR_ENUM) - { - eina_strbuf_append(buf, "enum "); - } EINA_LIST_FOREACH(tp->namespaces, l, sp) { eina_strbuf_append(buf, sp); @@ -273,11 +261,8 @@ database_type_print(Eolian_Type *tp) printf("%s", tp->full_name); else if (tp->type == EOLIAN_TYPE_VOID) printf("void"); - else if (tp->type == EOLIAN_TYPE_REGULAR_STRUCT - || tp->type == EOLIAN_TYPE_STRUCT_OPAQUE) + else if (tp->type == EOLIAN_TYPE_STRUCT_OPAQUE) printf("struct %s", tp->full_name); - else if (tp->type == EOLIAN_TYPE_REGULAR_ENUM) - printf("enum %s", tp->full_name); else if (tp->type == EOLIAN_TYPE_POINTER) { database_type_print(tp->base_type); diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index 224d916..43cd53b 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -52,37 +52,11 @@ _validate_type(const Eolian_Type *tp) if (id) return eo_lexer_is_type_keyword(id); /* user defined */ - tpp = eolian_type_alias_get_by_name(tp->full_name); + tpp = eolian_type_base_type_get(tp); if (!tpp) { char buf[256]; - snprintf(buf, sizeof(buf), "undefined alias %s", tp->full_name); - _type_error(tp, buf); - return EINA_TRUE; /* for now only warn */ - } - return _validate_type(tpp); - } - case EOLIAN_TYPE_REGULAR_STRUCT: - { - const Eolian_Type *tpp; - tpp = eolian_type_struct_get_by_name(tp->full_name); - if (!tpp) - { - char buf[256]; - snprintf(buf, sizeof(buf), "undefined struct %s", tp->full_name); - _type_error(tp, buf); - return EINA_TRUE; /* for now only warn */ - } - return _validate_type(tpp); - } - case EOLIAN_TYPE_REGULAR_ENUM: - { - const Eolian_Type *tpp; - tpp = eolian_type_enum_get_by_name(tp->full_name); - if (!tpp) - { - char buf[256]; - snprintf(buf, sizeof(buf), "undefined enum %s", tp->full_name); + snprintf(buf, sizeof(buf), "undefined type %s", tp->full_name); _type_error(tp, buf); return EINA_TRUE; /* for now only warn */ } diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 8a87a07..3a0b80f 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -380,18 +380,11 @@ parse_expr_simple(Eo_Lexer *ls) eo_lexer_get(ls); break; } - case KW_enum: default: { Eina_Strbuf *buf = push_strbuf(ls); - Eolian_Expression_Type tp = EOLIAN_EXPR_NAME; - if (ls->t.kw == KW_enum) - { - eo_lexer_get(ls); - tp = EOLIAN_EXPR_ENUM; - } expr = push_expr(ls); - expr->type = tp; + expr->type = EOLIAN_EXPR_NAME; parse_name(ls, buf); expr->value.s = eina_stringshare_add(eina_strbuf_string_get (buf)); @@ -453,7 +446,6 @@ parse_expr(Eo_Lexer *ls) } static Eolian_Type *parse_type_void(Eo_Lexer *ls); -static Eolian_Type *parse_type_named_void(Eo_Lexer *ls, Eina_Bool allow_named); static Eolian_Type * parse_type(Eo_Lexer *ls) @@ -470,21 +462,6 @@ parse_type(Eo_Lexer *ls) return ret; } -static Eolian_Type * -parse_type_named(Eo_Lexer *ls, Eina_Bool allow_named) -{ - Eolian_Type *ret; - eo_lexer_context_push(ls); - ret = parse_type_named_void(ls, allow_named); - if (ret->type == EOLIAN_TYPE_VOID) - { - eo_lexer_context_restore(ls); - eo_lexer_syntax_error(ls, "non-void type expected"); - } - eo_lexer_context_pop(ls); - return ret; -} - static void _struct_field_free(Eolian_Struct_Type_Field *def) { @@ -642,8 +619,8 @@ parse_enum(Eo_Lexer *ls, const char *name, Eina_Bool is_extern, } static void -parse_struct_attrs(Eo_Lexer *ls, Eina_Bool is_enum, Eina_Bool allow_named, - Eina_Bool *is_extern, const char **freefunc) +parse_struct_attrs(Eo_Lexer *ls, Eina_Bool is_enum, Eina_Bool *is_extern, + const char **freefunc) { Eina_Bool has_extern = EINA_FALSE, has_free = EINA_FALSE; *freefunc = NULL; @@ -652,15 +629,6 @@ parse_struct_attrs(Eo_Lexer *ls, Eina_Bool is_enum, Eina_Bool allow_named, { case KW_at_extern: CASE_LOCK(ls, extern, "@extern qualifier") - if (!allow_named) - { - if (is_enum) - eo_lexer_syntax_error(ls, - "only enum declarations can be extern"); - else - eo_lexer_syntax_error(ls, - "only named structs can be extern"); - } eo_lexer_get(ls); *is_extern = EINA_TRUE; break; @@ -695,7 +663,7 @@ _append_dep(Eo_Lexer *ls, const char *fname, const char *name, int line, int col } static Eolian_Type * -parse_type_named_void(Eo_Lexer *ls, Eina_Bool allow_named) +parse_type_void(Eo_Lexer *ls) { Eolian_Type *def; const char *ctype; @@ -760,57 +728,6 @@ parse_type_named_void(Eo_Lexer *ls, Eina_Bool allow_named) check_match(ls, ')', '(', pline, pcolumn); goto parse_ptr; } - case KW_struct: - case KW_enum: - { - const char *freefunc; - Eina_Bool has_extern; - Eina_Bool is_enum = (ls->t.kw == KW_enum); - eo_lexer_get(ls); - parse_struct_attrs(ls, is_enum, allow_named, &has_extern, &freefunc); - if (freefunc && !allow_named) - check(ls, '{'); - if (!is_enum && (ls->t.token == '{')) - { - if (has_extern) - eo_lexer_syntax_error(ls, "extern anonymous struct"); - return parse_struct(ls, NULL, EINA_FALSE, line, col, freefunc); - } - buf = push_strbuf(ls); - eo_lexer_context_push(ls); - line = ls->line_number; - col = ls->column; - parse_name(ls, buf); - sname = push_str(ls, eina_strbuf_string_get(buf)); - pop_strbuf(ls); - /* if we're extern and allow structs, gotta enforce it */ - if (allow_named && (has_extern || freefunc)) - check(ls, '{'); - if (allow_named && ls->t.token == '{') - { - Eolian_Type *tp = (Eolian_Type*)eina_hash_find(_structs, - sname); - if (tp) - { - eo_lexer_context_restore(ls); - redef_error(ls, is_enum ? EOLIAN_TYPE_ENUM - : EOLIAN_TYPE_STRUCT, tp); - } - eo_lexer_context_pop(ls); - pop_str(ls); - if (is_enum) - return parse_enum(ls, sname, has_extern, line, col); - return parse_struct(ls, sname, has_extern, line, col, freefunc); - } - eo_lexer_context_pop(ls); - def = push_type(ls); - def->type = is_enum ? EOLIAN_TYPE_REGULAR_ENUM - : EOLIAN_TYPE_REGULAR_STRUCT; - FILL_BASE(def->base, ls, line, col); - pop_str(ls); - _fill_name(sname, &def->full_name, &def->name, &def->namespaces); - goto parse_ptr; - } default: break; } @@ -902,12 +819,6 @@ parse_ptr: } static Eolian_Type * -parse_type_void(Eo_Lexer *ls) -{ - return parse_type_named_void(ls, EINA_FALSE); -} - -static Eolian_Type * parse_typedef(Eo_Lexer *ls) { Eolian_Type *def = push_type(ls); @@ -915,7 +826,7 @@ parse_typedef(Eo_Lexer *ls) const char *freefunc; Eina_Strbuf *buf; eo_lexer_get(ls); - parse_struct_attrs(ls, EINA_FALSE, EINA_TRUE, &has_extern, &freefunc); + parse_struct_attrs(ls, EINA_FALSE, &has_extern, &freefunc); def->freefunc = freefunc; pop_str(ls); def->type = EOLIAN_TYPE_ALIAS; @@ -934,7 +845,7 @@ parse_typedef(Eo_Lexer *ls) } eo_lexer_context_pop(ls); check_next(ls, ':'); - def->base_type = parse_type_named(ls, EINA_TRUE); + def->base_type = parse_type(ls); pop_type(ls); check_next(ls, ';'); if (ls->t.token == TOK_COMMENT) @@ -1858,7 +1769,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) const char *freefunc; Eina_Strbuf *buf; eo_lexer_get(ls); - parse_struct_attrs(ls, is_enum, EINA_TRUE, &has_extern, &freefunc); + parse_struct_attrs(ls, is_enum, &has_extern, &freefunc); buf = push_strbuf(ls); eo_lexer_context_push(ls); line = ls->line_number; diff --git a/src/tests/eolian/data/enum.eo b/src/tests/eolian/data/enum.eo index f326e47..0f803da 100644 --- a/src/tests/eolian/data/enum.eo +++ b/src/tests/eolian/data/enum.eo @@ -6,7 +6,7 @@ enum Foo { } enum Bar { - foo = enum Foo.baz + foo = Foo.baz } enum Baz { @@ -15,7 +15,7 @@ enum Baz { flag3 = 1 << 2 } -const Bah: int = enum Baz.flag1; +const Bah: int = Baz.flag1; class Enum { methods { diff --git a/src/tests/eolian/data/free_func.eo b/src/tests/eolian/data/free_func.eo index 8944924..6215add 100644 --- a/src/tests/eolian/data/free_func.eo +++ b/src/tests/eolian/data/free_func.eo @@ -10,14 +10,6 @@ struct @free(test_free) Named2 { type Typedef1: int; type @free(def_free) Typedef2: int; -/* anon struct */ -type Anon1: struct { - field: int; -}; -type Anon2: struct @free(anon_free) { - field: int; -}; - /* opaque */ struct Opaque1; struct @free(opaque_free) Opaque2; diff --git a/src/tests/eolian/data/struct.eo b/src/tests/eolian/data/struct.eo index 7b952df..5777dd6 100644 --- a/src/tests/eolian/data/struct.eo +++ b/src/tests/eolian/data/struct.eo @@ -4,21 +4,9 @@ struct Named { } struct Another { - field: struct Named; + field: Named; } -/* named typedef'd */ -type Foo: struct _Foo { - field: int; - another: float; -}; - -/* anonymous */ -type Bar: struct { - a: Foo; - b: struct _Foo; -}; - /* opaque struct */ struct Opaque; diff --git a/src/tests/eolian/data/struct_ref.c b/src/tests/eolian/data/struct_ref.c index 0c4058b..117a584 100644 --- a/src/tests/eolian/data/struct_ref.c +++ b/src/tests/eolian/data/struct_ref.c @@ -11,26 +11,16 @@ typedef Eo Struct; #ifndef _STRUCT_EO_TYPES #define _STRUCT_EO_TYPES -typedef struct _Foo Foo; - -typedef struct { - Foo a; - struct _Foo b; -} Bar; - -struct Named { +typedef struct +{ int field; const char *something; -}; +} Named; -struct Another { - struct Named field; -}; - -struct _Foo { - int field; - float another; -}; +typedef struct +{ + Named field; +} Another; struct Opaque; diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index fddc183..58c7973 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -721,20 +721,9 @@ START_TEST(eolian_struct) fail_if(!(ftype = eolian_type_struct_field_type_get(field))); fail_if(!(type_name = eolian_type_name_get(ftype))); fail_if(strcmp(type_name, "Named")); - fail_if(eolian_type_type_get(ftype) != EOLIAN_TYPE_REGULAR_STRUCT); - - /* typedef */ - fail_if(!(atype = eolian_type_alias_get_by_name("Foo"))); - fail_if(!(type = eolian_type_base_type_get(atype))); - fail_if(!(type_name = eolian_type_name_get(type))); - fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_STRUCT); - fail_if(strcmp(type_name, "_Foo")); - - /* typedef - anon */ - fail_if(!(atype = eolian_type_alias_get_by_name("Bar"))); - fail_if(!(type = eolian_type_base_type_get(atype))); - fail_if(!!(type_name = eolian_type_name_get(type))); - fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_STRUCT); + fail_if(eolian_type_type_get(ftype) != EOLIAN_TYPE_REGULAR); + fail_if(eolian_type_type_get(eolian_type_base_type_get(ftype)) + != EOLIAN_TYPE_STRUCT); /* opaque struct */ fail_if(!(type = eolian_type_struct_get_by_name("Opaque"))); @@ -981,14 +970,6 @@ START_TEST(eolian_free_func) fail_if(!(type = eolian_type_alias_get_by_name("Typedef2"))); fail_if(strcmp(eolian_type_free_func_get(type), "def_free")); - /* anon struct */ - fail_if(!(type = eolian_type_alias_get_by_name("Anon1"))); - fail_if(!(type = eolian_type_base_type_get(type))); - fail_if(eolian_type_free_func_get(type)); - fail_if(!(type = eolian_type_alias_get_by_name("Anon2"))); - fail_if(!(type = eolian_type_base_type_get(type))); - fail_if(strcmp(eolian_type_free_func_get(type), "anon_free")); - /* opaque struct */ fail_if(!(type = eolian_type_struct_get_by_name("Opaque1"))); fail_if(eolian_type_free_func_get(type)); --