2014-07-10 04:15:29 -07:00
|
|
|
#include <Eina.h>
|
|
|
|
#include "eolian_database.h"
|
|
|
|
|
|
|
|
void
|
2014-07-10 06:30:34 -07:00
|
|
|
database_class_del(Eolian_Class *cl)
|
2014-07-10 04:15:29 -07:00
|
|
|
{
|
|
|
|
Eina_Stringshare *inherit_name;
|
2014-07-10 06:30:34 -07:00
|
|
|
Eina_List *inherits = cl->inherits;
|
2014-07-10 04:15:29 -07:00
|
|
|
Eolian_Function *fid;
|
|
|
|
Eolian_Event *ev;
|
2014-07-21 05:56:20 -07:00
|
|
|
const char *sp;
|
2014-07-10 04:15:29 -07:00
|
|
|
|
2014-08-07 07:15:07 -07:00
|
|
|
if (cl->base.file) eina_stringshare_del(cl->base.file);
|
|
|
|
|
2014-07-10 04:15:29 -07:00
|
|
|
EINA_LIST_FREE(inherits, inherit_name)
|
|
|
|
eina_stringshare_del(inherit_name);
|
|
|
|
|
|
|
|
Eolian_Implement *impl;
|
2014-07-10 06:30:34 -07:00
|
|
|
Eina_List *implements = cl->implements;
|
2014-07-10 04:15:29 -07:00
|
|
|
EINA_LIST_FREE(implements, impl)
|
|
|
|
{
|
|
|
|
eina_stringshare_del(impl->full_name);
|
|
|
|
free(impl);
|
|
|
|
}
|
|
|
|
|
2014-07-10 06:30:34 -07:00
|
|
|
EINA_LIST_FREE(cl->methods, fid) database_function_del(fid);
|
|
|
|
EINA_LIST_FREE(cl->properties, fid) database_function_del(fid);
|
|
|
|
EINA_LIST_FREE(cl->events, ev) database_event_del(ev);
|
2014-07-10 04:15:29 -07:00
|
|
|
|
2014-07-10 06:30:34 -07:00
|
|
|
eina_stringshare_del(cl->name);
|
|
|
|
eina_stringshare_del(cl->full_name);
|
|
|
|
eina_stringshare_del(cl->description);
|
|
|
|
eina_stringshare_del(cl->legacy_prefix);
|
|
|
|
eina_stringshare_del(cl->eo_prefix);
|
|
|
|
eina_stringshare_del(cl->data_type);
|
2014-07-10 04:15:29 -07:00
|
|
|
|
2014-07-21 05:56:20 -07:00
|
|
|
if (cl->namespaces) EINA_LIST_FREE(cl->namespaces, sp)
|
|
|
|
eina_stringshare_del(sp);
|
|
|
|
|
2014-07-10 06:30:34 -07:00
|
|
|
free(cl);
|
2014-07-10 04:15:29 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
Eolian_Class *
|
|
|
|
database_class_add(const char *class_name, Eolian_Class_Type type)
|
|
|
|
{
|
|
|
|
char *full_name = strdup(class_name);
|
|
|
|
char *name = full_name;
|
|
|
|
char *colon = full_name;
|
|
|
|
Eolian_Class *cl = calloc(1, sizeof(*cl));
|
|
|
|
cl->full_name = eina_stringshare_add(class_name);
|
|
|
|
cl->type = type;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
colon = strchr(colon, '.');
|
|
|
|
if (colon)
|
|
|
|
{
|
|
|
|
*colon = '\0';
|
|
|
|
cl->namespaces = eina_list_append(cl->namespaces,
|
|
|
|
eina_stringshare_add(name));
|
|
|
|
colon += 1;
|
|
|
|
name = colon;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
while(colon);
|
|
|
|
cl->name = eina_stringshare_add(name);
|
2014-07-30 03:57:11 -07:00
|
|
|
eina_hash_set(_classes, cl->full_name, cl);
|
2014-07-10 04:15:29 -07:00
|
|
|
free(full_name);
|
|
|
|
return cl;
|
|
|
|
}
|