*/
typedef struct _Eolian_Type Eolian_Type;
+/* Type declaration.
+ *
+ * @ingroup Eolian
+ */
+typedef struct _Eolian_Typedecl Eolian_Typedecl;
+
/* Class function parameter information
*
* @ingroup Eolian
if (tp->base.file) eina_stringshare_del(tp->base.file);
if (tp->subtypes) EINA_LIST_FREE(tp->subtypes, stp)
database_type_del(stp);
- if (tp->base_type)
- database_type_del(tp->base_type);
+ database_type_del(tp->base_type);
if (tp->name) eina_stringshare_del(tp->name);
if (tp->full_name) eina_stringshare_del(tp->full_name);
if (tp->fields) eina_hash_free(tp->fields);
}
void
+database_typedecl_del(Eolian_Typedecl *tp)
+{
+ if (!tp) return;
+ const char *sp;
+ if (tp->base.file) eina_stringshare_del(tp->base.file);
+ database_type_del(tp->base_type);
+ if (tp->name) eina_stringshare_del(tp->name);
+ if (tp->full_name) eina_stringshare_del(tp->full_name);
+ if (tp->fields) eina_hash_free(tp->fields);
+ if (tp->field_list) eina_list_free(tp->field_list);
+ if (tp->namespaces) EINA_LIST_FREE(tp->namespaces, sp)
+ eina_stringshare_del(sp);
+ if (tp->legacy) eina_stringshare_del(tp->legacy);
+ database_doc_del(tp->doc);
+ free(tp);
+}
+
+void
database_typedef_del(Eolian_Type *tp)
{
if (!tp) return;
eina_init();
_classes = eina_hash_stringshared_new(EINA_FREE_CB(database_class_del));
_aliases = eina_hash_stringshared_new(EINA_FREE_CB(database_typedef_del));
+ _aliasesd = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
_structs = eina_hash_stringshared_new(EINA_FREE_CB(database_type_del));
+ _structsd = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
_enums = eina_hash_stringshared_new(EINA_FREE_CB(database_type_del));
+ _enumsd = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
_globals = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del));
_constants = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del));
_classesf = eina_hash_stringshared_new(NULL);
{
Eolian_Object base;
Eolian_Typedecl_Type type;
+ Eolian_Type *base_type;
Eina_Stringshare *name;
Eina_Stringshare *full_name;
Eina_List *namespaces;
void database_type_del(Eolian_Type *tp);
void database_typedef_del(Eolian_Type *tp);
+void database_typedecl_del(Eolian_Typedecl *tp);
+
void database_type_print(Eolian_Type *type);
void database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name);