2014-07-10 05:13:46 -07:00
|
|
|
#include <Eina.h>
|
|
|
|
#include "eolian_database.h"
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare *
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_file_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
return cl ? cl->file : NULL;
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare *
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_full_name_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
return cl ? cl->full_name : NULL;
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare *
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_name_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
return cl ? cl->name : NULL;
|
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_namespaces_get(const Eolian_Class *cl)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
2014-07-23 05:44:42 -07:00
|
|
|
return ((cl && cl->namespaces) ? eina_list_iterator_new(cl->namespaces)
|
|
|
|
: NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI const Eolian_Class *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_get_by_name(const char *class_name)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
Eina_List *itr;
|
|
|
|
Eolian_Class *cl;
|
|
|
|
Eina_Stringshare *shr_name = eina_stringshare_add(class_name);
|
|
|
|
EINA_LIST_FOREACH(_classes, itr, cl)
|
|
|
|
if (cl->full_name == shr_name) goto end;
|
|
|
|
cl = NULL;
|
|
|
|
end:
|
|
|
|
eina_stringshare_del(shr_name);
|
|
|
|
return cl;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI const Eolian_Class *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_get_by_file(const char *file_name)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
Eina_List *itr;
|
|
|
|
Eolian_Class *cl;
|
|
|
|
Eina_Stringshare *shr_file = eina_stringshare_add(file_name);
|
|
|
|
EINA_LIST_FOREACH(_classes, itr, cl)
|
|
|
|
if (cl->file == shr_file) goto end;
|
|
|
|
cl = NULL;
|
|
|
|
end:
|
|
|
|
eina_stringshare_del(shr_file);
|
|
|
|
return cl;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Eolian_Class_Type
|
|
|
|
eolian_class_type_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EOLIAN_CLASS_UNKNOWN_TYPE);
|
|
|
|
return cl->type;
|
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_all_classes_get(void)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
2014-07-23 05:44:42 -07:00
|
|
|
return (_classes ? eina_list_iterator_new(_classes) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare *
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_description_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
|
|
|
return cl->description;
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare*
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_legacy_prefix_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
|
|
|
return cl->legacy_prefix;
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare*
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_eo_prefix_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
|
|
|
return cl->eo_prefix;
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:04:13 -07:00
|
|
|
EAPI Eina_Stringshare*
|
2014-07-10 05:13:46 -07:00
|
|
|
eolian_class_data_type_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
|
|
|
return cl->data_type;
|
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_inherits_get(const Eolian_Class *cl)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->inherits ? eina_list_iterator_new(cl->inherits) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator*
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_implements_get(const Eolian_Class *cl)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->implements ? eina_list_iterator_new(cl->implements) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI const Eolian_Function *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_function_get_by_name(const Eolian_Class *cl, const char *func_name, Eolian_Function_Type f_type)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
Eina_List *itr;
|
|
|
|
Eolian_Function *fid;
|
|
|
|
if (!cl) return NULL;
|
|
|
|
|
|
|
|
if (f_type == EOLIAN_UNRESOLVED || f_type == EOLIAN_METHOD)
|
|
|
|
EINA_LIST_FOREACH(cl->methods, itr, fid)
|
|
|
|
{
|
|
|
|
if (!strcmp(fid->name, func_name))
|
|
|
|
return fid;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (f_type == EOLIAN_UNRESOLVED || f_type == EOLIAN_PROPERTY ||
|
|
|
|
f_type == EOLIAN_PROP_SET || f_type == EOLIAN_PROP_GET)
|
|
|
|
{
|
|
|
|
EINA_LIST_FOREACH(cl->properties, itr, fid)
|
|
|
|
{
|
|
|
|
if (!strcmp(fid->name, func_name))
|
|
|
|
return fid;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (f_type == EOLIAN_UNRESOLVED || f_type == EOLIAN_CTOR)
|
|
|
|
{
|
|
|
|
EINA_LIST_FOREACH(cl->constructors, itr, fid)
|
|
|
|
{
|
|
|
|
if (!strcmp(fid->name, func_name))
|
|
|
|
return fid;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ERR("Function %s not found in class %s", func_name, cl->name);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_functions_get(const Eolian_Class *cl, Eolian_Function_Type foo_type)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
|
|
|
switch (foo_type)
|
|
|
|
{
|
|
|
|
case EOLIAN_PROPERTY:
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->properties ? eina_list_iterator_new(cl->properties) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
case EOLIAN_METHOD:
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->methods ? eina_list_iterator_new(cl->methods) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
case EOLIAN_CTOR:
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->constructors ? eina_list_iterator_new(cl->constructors) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
default: return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-07-23 00:24:59 -07:00
|
|
|
EAPI Eina_Iterator *
|
2014-07-23 06:13:21 -07:00
|
|
|
eolian_class_events_get(const Eolian_Class *cl)
|
2014-07-10 05:13:46 -07:00
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
|
2014-07-23 05:44:42 -07:00
|
|
|
return (cl->events ? eina_list_iterator_new(cl->events) : NULL);
|
2014-07-10 05:13:46 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Eina_Bool
|
|
|
|
eolian_class_ctor_enable_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EINA_FALSE);
|
|
|
|
return cl->class_ctor_enable;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI Eina_Bool
|
|
|
|
eolian_class_dtor_enable_get(const Eolian_Class *cl)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EINA_FALSE);
|
|
|
|
return cl->class_dtor_enable;
|
|
|
|
}
|