forked from enlightenment/efl
eolian: pass unit to alias get by name
This commit is contained in:
parent
6d0ee5d2df
commit
52a0255e38
|
@ -297,7 +297,7 @@ ffi.cdef [[
|
||||||
Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
|
Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
|
||||||
Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
|
Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
|
||||||
const char *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
|
const char *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
|
||||||
const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const char *name);
|
const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit, const char *name);
|
||||||
const Eolian_Typedecl *eolian_typedecl_struct_get_by_name(const char *name);
|
const Eolian_Typedecl *eolian_typedecl_struct_get_by_name(const char *name);
|
||||||
const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
|
const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
|
||||||
Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname);
|
Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname);
|
||||||
|
@ -1142,8 +1142,8 @@ M.Class = ffi.metatype("Eolian_Class", {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
M.typedecl_alias_get_by_name = function(name)
|
M.typedecl_alias_get_by_name = function(unit, name)
|
||||||
local v = eolian.eolian_typedecl_alias_get_by_name(name)
|
local v = eolian.eolian_typedecl_alias_get_by_name(unit, name)
|
||||||
if v == nil then return nil end
|
if v == nil then return nil end
|
||||||
return v
|
return v
|
||||||
end
|
end
|
||||||
|
|
|
@ -1370,12 +1370,13 @@ EAPI Eina_Stringshare *eolian_class_c_data_type_get(const Eolian_Class *klass);
|
||||||
/*
|
/*
|
||||||
* @brief Get an alias type declaration by name. Supports namespaces.
|
* @brief Get an alias type declaration by name. Supports namespaces.
|
||||||
*
|
*
|
||||||
|
* @param[in] unit the unit to look in
|
||||||
* @param[in] name the name of the alias
|
* @param[in] name the name of the alias
|
||||||
* @return the alias type or NULL
|
* @return the alias type or NULL
|
||||||
*
|
*
|
||||||
* @ingroup Eolian
|
* @ingroup Eolian
|
||||||
*/
|
*/
|
||||||
EAPI const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const char *name);
|
EAPI const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit, const char *name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief Get a struct declaration by name. Supports namespaces.
|
* @brief Get a struct declaration by name. Supports namespaces.
|
||||||
|
|
|
@ -513,7 +513,8 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask,
|
||||||
if (!(mask & EOLIAN_MASK_INT))
|
if (!(mask & EOLIAN_MASK_INT))
|
||||||
return expr_type_error(expr, EOLIAN_MASK_INT, mask);
|
return expr_type_error(expr, EOLIAN_MASK_INT, mask);
|
||||||
|
|
||||||
etpd = eolian_typedecl_alias_get_by_name(fulln);
|
/* FIXME: pass unit properly */
|
||||||
|
etpd = eolian_typedecl_alias_get_by_name(NULL, fulln);
|
||||||
while (etpd && etpd->type == EOLIAN_TYPEDECL_ALIAS)
|
while (etpd && etpd->type == EOLIAN_TYPEDECL_ALIAS)
|
||||||
{
|
{
|
||||||
const Eolian_Type *etp = eolian_typedecl_base_type_get(etpd);
|
const Eolian_Type *etp = eolian_typedecl_base_type_get(etpd);
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
#include "eo_lexer.h"
|
#include "eo_lexer.h"
|
||||||
|
|
||||||
EAPI const Eolian_Typedecl *
|
EAPI const Eolian_Typedecl *
|
||||||
eolian_typedecl_alias_get_by_name(const char *name)
|
eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
|
||||||
|
const char *name)
|
||||||
{
|
{
|
||||||
if (!_aliases) return NULL;
|
if (!_aliases) return NULL;
|
||||||
Eina_Stringshare *shr = eina_stringshare_add(name);
|
Eina_Stringshare *shr = eina_stringshare_add(name);
|
||||||
|
|
|
@ -329,7 +329,7 @@ START_TEST(eolian_typedef)
|
||||||
fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
|
fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
|
||||||
|
|
||||||
/* Basic type */
|
/* Basic type */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord")));
|
||||||
fail_if(eolian_typedecl_type_get(tdl) != EOLIAN_TYPEDECL_ALIAS);
|
fail_if(eolian_typedecl_type_get(tdl) != EOLIAN_TYPEDECL_ALIAS);
|
||||||
fail_if(!(type_name = eolian_typedecl_name_get(tdl)));
|
fail_if(!(type_name = eolian_typedecl_name_get(tdl)));
|
||||||
fail_if(strcmp(type_name, "Coord"));
|
fail_if(strcmp(type_name, "Coord"));
|
||||||
|
@ -348,12 +348,12 @@ START_TEST(eolian_typedef)
|
||||||
fail_if(strcmp(file, "typedef.eo"));
|
fail_if(strcmp(file, "typedef.eo"));
|
||||||
|
|
||||||
/* Lowest alias base */
|
/* Lowest alias base */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord3")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord3")));
|
||||||
fail_if(!(type = eolian_typedecl_aliased_base_get(tdl)));
|
fail_if(!(type = eolian_typedecl_aliased_base_get(tdl)));
|
||||||
fail_if(strcmp(eolian_type_name_get(type), "int"));
|
fail_if(strcmp(eolian_type_name_get(type), "int"));
|
||||||
|
|
||||||
/* Complex type */
|
/* Complex type */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("List_Objects")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "List_Objects")));
|
||||||
fail_if(!(type_name = eolian_typedecl_name_get(tdl)));
|
fail_if(!(type_name = eolian_typedecl_name_get(tdl)));
|
||||||
fail_if(strcmp(type_name, "List_Objects"));
|
fail_if(strcmp(type_name, "List_Objects"));
|
||||||
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
||||||
|
@ -742,11 +742,11 @@ START_TEST(eolian_extern)
|
||||||
fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
|
fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
|
||||||
|
|
||||||
/* regular type */
|
/* regular type */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Foo")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Foo")));
|
||||||
fail_if(eolian_typedecl_is_extern(tdl));
|
fail_if(eolian_typedecl_is_extern(tdl));
|
||||||
|
|
||||||
/* extern type */
|
/* extern type */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord")));
|
||||||
fail_if(!eolian_typedecl_is_extern(tdl));
|
fail_if(!eolian_typedecl_is_extern(tdl));
|
||||||
|
|
||||||
/* regular struct */
|
/* regular struct */
|
||||||
|
@ -986,9 +986,9 @@ START_TEST(eolian_free_func)
|
||||||
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "test_free"));
|
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "test_free"));
|
||||||
|
|
||||||
/* typedef */
|
/* typedef */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Typedef1")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Typedef1")));
|
||||||
fail_if(eolian_typedecl_free_func_get(tdl));
|
fail_if(eolian_typedecl_free_func_get(tdl));
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Typedef2")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Typedef2")));
|
||||||
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "def_free"));
|
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "def_free"));
|
||||||
|
|
||||||
/* opaque struct */
|
/* opaque struct */
|
||||||
|
@ -998,10 +998,10 @@ START_TEST(eolian_free_func)
|
||||||
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "opaque_free"));
|
fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "opaque_free"));
|
||||||
|
|
||||||
/* pointer */
|
/* pointer */
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Pointer1")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Pointer1")));
|
||||||
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
||||||
fail_if(eolian_type_free_func_get(type));
|
fail_if(eolian_type_free_func_get(type));
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Pointer2")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Pointer2")));
|
||||||
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
fail_if(!(type = eolian_typedecl_base_type_get(tdl)));
|
||||||
fail_if(strcmp(eolian_type_free_func_get(type), "ptr_free"));
|
fail_if(strcmp(eolian_type_free_func_get(type), "ptr_free"));
|
||||||
|
|
||||||
|
@ -1071,7 +1071,7 @@ START_TEST(eolian_import)
|
||||||
fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/import.eo")));
|
fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/import.eo")));
|
||||||
fail_if(!(class = eolian_class_get_by_name(unit, "Import")));
|
fail_if(!(class = eolian_class_get_by_name(unit, "Import")));
|
||||||
|
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Imported")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Imported")));
|
||||||
fail_if(strcmp(eolian_typedecl_file_get(tdl), "import_types.eot"));
|
fail_if(strcmp(eolian_typedecl_file_get(tdl), "import_types.eot"));
|
||||||
|
|
||||||
fail_if(!(tdl = eolian_typedecl_struct_get_by_name("Imported_Struct")));
|
fail_if(!(tdl = eolian_typedecl_struct_get_by_name("Imported_Struct")));
|
||||||
|
@ -1287,7 +1287,7 @@ START_TEST(eolian_docs)
|
||||||
"Docs for bar."));
|
"Docs for bar."));
|
||||||
fail_if(eolian_documentation_description_get(doc));
|
fail_if(eolian_documentation_description_get(doc));
|
||||||
|
|
||||||
fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Alias")));
|
fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Alias")));
|
||||||
fail_if(!(doc = eolian_typedecl_documentation_get(tdl)));
|
fail_if(!(doc = eolian_typedecl_documentation_get(tdl)));
|
||||||
fail_if(strcmp(eolian_documentation_summary_get(doc),
|
fail_if(strcmp(eolian_documentation_summary_get(doc),
|
||||||
"Docs for typedef."));
|
"Docs for typedef."));
|
||||||
|
|
Loading…
Reference in New Issue