forked from enlightenment/efl
eolian: store typedecl/class in type
This commit is contained in:
parent
4dfde2cd24
commit
db41734954
|
@ -225,7 +225,6 @@ _validate_type(const Eolian_Unit *src, Eolian_Type *tp)
|
||||||
}
|
}
|
||||||
return _validate(&tp->base);
|
return _validate(&tp->base);
|
||||||
}
|
}
|
||||||
Eolian_Typedecl *tpp;
|
|
||||||
/* builtins */
|
/* builtins */
|
||||||
int id = eo_lexer_keyword_str_to_id(tp->full_name);
|
int id = eo_lexer_keyword_str_to_id(tp->full_name);
|
||||||
if (id)
|
if (id)
|
||||||
|
@ -253,21 +252,22 @@ _validate_type(const Eolian_Unit *src, Eolian_Type *tp)
|
||||||
return _validate(&tp->base);
|
return _validate(&tp->base);
|
||||||
}
|
}
|
||||||
/* user defined */
|
/* user defined */
|
||||||
tpp = (Eolian_Typedecl *)eolian_type_typedecl_get(src, tp);
|
tp->tdecl = (Eolian_Typedecl *)eolian_type_typedecl_get(src, tp);
|
||||||
if (!tpp)
|
if (!tp->tdecl)
|
||||||
{
|
{
|
||||||
snprintf(buf, sizeof(buf), "undefined type %s", tp->full_name);
|
snprintf(buf, sizeof(buf), "undefined type %s", tp->full_name);
|
||||||
return _obj_error(&tp->base, buf);
|
return _obj_error(&tp->base, buf);
|
||||||
}
|
}
|
||||||
if (!_validate_typedecl(src, tpp))
|
if (!_validate_typedecl(src, tp->tdecl))
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
if (tpp->freefunc && !tp->freefunc)
|
if (tp->tdecl->freefunc && !tp->freefunc)
|
||||||
tp->freefunc = eina_stringshare_ref(tpp->freefunc);
|
tp->freefunc = eina_stringshare_ref(tp->tdecl->freefunc);
|
||||||
return _validate(&tp->base);
|
return _validate(&tp->base);
|
||||||
}
|
}
|
||||||
case EOLIAN_TYPE_CLASS:
|
case EOLIAN_TYPE_CLASS:
|
||||||
{
|
{
|
||||||
if (!eolian_type_class_get(src, tp))
|
tp->klass = (Eolian_Class *)eolian_type_class_get(src, tp);
|
||||||
|
if (!tp->klass)
|
||||||
{
|
{
|
||||||
snprintf(buf, sizeof(buf), "undefined class %s "
|
snprintf(buf, sizeof(buf), "undefined class %s "
|
||||||
"(likely wrong namespacing)", tp->full_name);
|
"(likely wrong namespacing)", tp->full_name);
|
||||||
|
|
|
@ -196,6 +196,11 @@ struct _Eolian_Type
|
||||||
Eina_Stringshare *full_name;
|
Eina_Stringshare *full_name;
|
||||||
Eina_List *namespaces;
|
Eina_List *namespaces;
|
||||||
Eina_Stringshare *freefunc;
|
Eina_Stringshare *freefunc;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
Eolian_Class *klass;
|
||||||
|
Eolian_Typedecl *tdecl;
|
||||||
|
};
|
||||||
Eina_Bool is_const :1;
|
Eina_Bool is_const :1;
|
||||||
Eina_Bool is_ptr :1;
|
Eina_Bool is_ptr :1;
|
||||||
Eina_Bool owned :1;
|
Eina_Bool owned :1;
|
||||||
|
|
Loading…
Reference in New Issue