forked from enlightenment/efl
eolian: remove retrieval funcs for type-style enums/aliases/structs
This commit is contained in:
parent
8614ee1e91
commit
4e40b60f06
|
@ -1268,36 +1268,33 @@ EAPI Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
|
|||
EAPI Eina_Stringshare *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
|
||||
|
||||
/*
|
||||
* @brief Get an alias type by name. Supports namespaces.
|
||||
* @brief Get an alias type declaration by name. Supports namespaces.
|
||||
*
|
||||
* @param[in] name the name of the alias
|
||||
* @return the alias type or NULL
|
||||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI const Eolian_Type *eolian_type_alias_get_by_name(const char *name);
|
||||
EAPI const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const char *name);
|
||||
|
||||
/*
|
||||
* @brief Get a struct by name. Supports namespaces.
|
||||
* @brief Get a struct declaration by name. Supports namespaces.
|
||||
*
|
||||
* @param[in] name the name of the struct
|
||||
* @return the struct or NULL
|
||||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI const Eolian_Type *eolian_type_struct_get_by_name(const char *name);
|
||||
EAPI const Eolian_Typedecl *eolian_typedecl_struct_get_by_name(const char *name);
|
||||
|
||||
/*
|
||||
* @brief Get an enum by name. Supports namespaces.
|
||||
* @brief Get an enum declaration by name. Supports namespaces.
|
||||
*
|
||||
* @param[in] name the name of the struct
|
||||
* @return the struct or NULL
|
||||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI const Eolian_Type *eolian_type_enum_get_by_name(const char *name);
|
||||
EAPI const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
|
||||
|
||||
/*
|
||||
|
@ -1310,7 +1307,6 @@ EAPI const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
|
|||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI Eina_Iterator *eolian_type_aliases_get_by_file(const char *fname);
|
||||
EAPI Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname);
|
||||
|
||||
/*
|
||||
|
@ -1323,7 +1319,6 @@ EAPI Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname);
|
|||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI Eina_Iterator *eolian_type_structs_get_by_file(const char *fname);
|
||||
EAPI Eina_Iterator *eolian_typedecl_structs_get_by_file(const char *fname);
|
||||
|
||||
/*
|
||||
|
@ -1336,7 +1331,6 @@ EAPI Eina_Iterator *eolian_typedecl_structs_get_by_file(const char *fname);
|
|||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI Eina_Iterator *eolian_type_enums_get_by_file(const char *fname);
|
||||
EAPI Eina_Iterator *eolian_typedecl_enums_get_by_file(const char *fname);
|
||||
|
||||
/*
|
||||
|
|
|
@ -497,7 +497,7 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask,
|
|||
|
||||
if (!var)
|
||||
{
|
||||
const Eolian_Type *etp;
|
||||
const Eolian_Typedecl *etpd;
|
||||
const Eolian_Enum_Type_Field *fl;
|
||||
|
||||
/* try aliases, hoping it'll be enum */
|
||||
|
@ -510,19 +510,23 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask,
|
|||
if (!(mask & EOLIAN_MASK_INT))
|
||||
return expr_type_error(expr, EOLIAN_MASK_INT, mask);
|
||||
|
||||
etp = eolian_type_alias_get_by_name(fulln);
|
||||
while (etp && (etp->type == EOLIAN_TYPE_ALIAS
|
||||
|| etp->type == EOLIAN_TYPE_REGULAR))
|
||||
etp = eolian_type_base_type_get(etp);
|
||||
etpd = eolian_typedecl_alias_get_by_name(fulln);
|
||||
while (etpd && etpd->type == EOLIAN_TYPEDECL_ALIAS)
|
||||
{
|
||||
const Eolian_Type *etp = eolian_typedecl_base_type_get(etpd);
|
||||
if (!etp || etp->type != EOLIAN_TYPE_REGULAR)
|
||||
break;
|
||||
etpd = eolian_type_typedecl_get(etp);
|
||||
}
|
||||
|
||||
if (!etp) etp = eolian_type_enum_get_by_name(fulln);
|
||||
if (!etp || etp->type != EOLIAN_TYPE_ENUM)
|
||||
if (!etpd) etpd = eolian_typedecl_enum_get_by_name(fulln);
|
||||
if (!etpd || etpd->type != EOLIAN_TYPEDECL_ENUM)
|
||||
{
|
||||
free(fulln);
|
||||
return expr_error(expr, "undefined variable");
|
||||
}
|
||||
|
||||
fl = eolian_type_enum_field_get(etp, memb);
|
||||
fl = eolian_typedecl_enum_field_get(etpd, memb);
|
||||
if (fl) exp = eolian_type_enum_field_value_get(fl, EINA_TRUE);
|
||||
free(fulln);
|
||||
|
||||
|
|
|
@ -6,69 +6,37 @@
|
|||
#include "eolian_database.h"
|
||||
#include "eo_lexer.h"
|
||||
|
||||
EAPI const Eolian_Type *
|
||||
eolian_type_alias_get_by_name(const char *name)
|
||||
EAPI const Eolian_Typedecl *
|
||||
eolian_typedecl_alias_get_by_name(const char *name)
|
||||
{
|
||||
if (!_aliases) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(name);
|
||||
Eolian_Type *tp = eina_hash_find(_aliases, shr);
|
||||
eina_stringshare_del(shr);
|
||||
return tp;
|
||||
}
|
||||
|
||||
EAPI const Eolian_Typedecl *
|
||||
eolian_typedecl_alias_get_by_name(const char *name)
|
||||
{
|
||||
const Eolian_Type *ret = eolian_type_alias_get_by_name(name);
|
||||
if (!ret) return NULL;
|
||||
return ret->decl;
|
||||
}
|
||||
|
||||
EAPI const Eolian_Type *
|
||||
eolian_type_struct_get_by_name(const char *name)
|
||||
{
|
||||
if (!_structs) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(name);
|
||||
Eolian_Type *tp = eina_hash_find(_structs, shr);
|
||||
eina_stringshare_del(shr);
|
||||
return tp;
|
||||
if (!tp) return NULL;
|
||||
return tp->decl;
|
||||
}
|
||||
|
||||
EAPI const Eolian_Typedecl *
|
||||
eolian_typedecl_struct_get_by_name(const char *name)
|
||||
{
|
||||
const Eolian_Type *ret = eolian_type_struct_get_by_name(name);
|
||||
if (!ret) return NULL;
|
||||
return ret->decl;
|
||||
}
|
||||
|
||||
EAPI const Eolian_Type *
|
||||
eolian_type_enum_get_by_name(const char *name)
|
||||
{
|
||||
if (!_enums) return NULL;
|
||||
if (!_structs) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(name);
|
||||
Eolian_Type *tp = eina_hash_find(_enums, shr);
|
||||
Eolian_Type *tp = eina_hash_find(_structs, shr);
|
||||
eina_stringshare_del(shr);
|
||||
return tp;
|
||||
if (!tp) return NULL;
|
||||
return tp->decl;
|
||||
}
|
||||
|
||||
EAPI const Eolian_Typedecl *
|
||||
eolian_typedecl_enum_get_by_name(const char *name)
|
||||
{
|
||||
const Eolian_Type *ret = eolian_type_enum_get_by_name(name);
|
||||
if (!ret) return NULL;
|
||||
return ret->decl;
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eolian_type_aliases_get_by_file(const char *fname)
|
||||
{
|
||||
if (!_aliasesf) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(fname);
|
||||
Eina_List *l = eina_hash_find(_aliasesf, shr);
|
||||
if (!_enums) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(name);
|
||||
Eolian_Type *tp = eina_hash_find(_enums, shr);
|
||||
eina_stringshare_del(shr);
|
||||
if (!l) return NULL;
|
||||
return eina_list_iterator_new(l);
|
||||
if (!tp) return NULL;
|
||||
return tp->decl;
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
|
@ -82,17 +50,6 @@ eolian_typedecl_aliases_get_by_file(const char *fname)
|
|||
return eina_list_iterator_new(l);
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eolian_type_structs_get_by_file(const char *fname)
|
||||
{
|
||||
if (!_structsf) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(fname);
|
||||
Eina_List *l = eina_hash_find(_structsf, shr);
|
||||
eina_stringshare_del(shr);
|
||||
if (!l) return NULL;
|
||||
return eina_list_iterator_new(l);
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eolian_typedecl_structs_get_by_file(const char *fname)
|
||||
{
|
||||
|
@ -104,17 +61,6 @@ eolian_typedecl_structs_get_by_file(const char *fname)
|
|||
return eina_list_iterator_new(l);
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eolian_type_enums_get_by_file(const char *fname)
|
||||
{
|
||||
if (!_enumsf) return NULL;
|
||||
Eina_Stringshare *shr = eina_stringshare_add(fname);
|
||||
Eina_List *l = eina_hash_find(_enumsf, shr);
|
||||
eina_stringshare_del(shr);
|
||||
if (!l) return NULL;
|
||||
return eina_list_iterator_new(l);
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eolian_typedecl_enums_get_by_file(const char *fname)
|
||||
{
|
||||
|
|
|
@ -27,20 +27,20 @@ _validate_ref(const Validator *vs EINA_UNUSED, const char *ref,
|
|||
|
||||
Eina_Stringshare *base = eina_stringshare_add_length(ref, suffix - ref);
|
||||
|
||||
const Eolian_Type *tp = eolian_type_struct_get_by_name(base);
|
||||
if (tp)
|
||||
const Eolian_Typedecl *tpd = eolian_typedecl_struct_get_by_name(base);
|
||||
if (tpd)
|
||||
{
|
||||
eina_stringshare_del(base);
|
||||
if (!eolian_type_struct_field_get(tp, suffix + 1))
|
||||
if (!eolian_typedecl_struct_field_get(tpd, suffix + 1))
|
||||
goto failed;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
tp = eolian_type_enum_get_by_name(base);
|
||||
if (tp)
|
||||
tpd = eolian_typedecl_enum_get_by_name(base);
|
||||
if (tpd)
|
||||
{
|
||||
eina_stringshare_del(base);
|
||||
if (!eolian_type_enum_field_get(tp, suffix + 1))
|
||||
if (!eolian_typedecl_enum_field_get(tpd, suffix + 1))
|
||||
goto failed;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue