You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
3.7 KiB
141 lines
3.7 KiB
#include "codegen.h" |
|
|
|
void |
|
property_free(DBus_Property *property) |
|
{ |
|
property->iface->properties = eina_inlist_remove(property->iface->properties, |
|
EINA_INLIST_GET(property)); |
|
free(property->c_name); |
|
free(property->cb_name); |
|
free(property->name); |
|
free(property->type); |
|
free(property); |
|
} |
|
|
|
DBus_Property * |
|
property_new(DBus_Interface *iface) |
|
{ |
|
DBus_Property *prop = calloc(1, sizeof(DBus_Property)); |
|
EINA_SAFETY_ON_NULL_RETURN_VAL(prop, NULL); |
|
iface->properties = eina_inlist_append(iface->properties, |
|
EINA_INLIST_GET(prop)); |
|
prop->iface = iface; |
|
return prop; |
|
} |
|
|
|
DBus_Method * |
|
method_new(DBus_Interface *iface) |
|
{ |
|
DBus_Method *method = calloc(1, sizeof(DBus_Method)); |
|
EINA_SAFETY_ON_NULL_RETURN_VAL(method, NULL); |
|
iface->methods = eina_inlist_append(iface->methods, EINA_INLIST_GET(method)); |
|
method->iface = iface; |
|
return method; |
|
} |
|
|
|
void |
|
method_free(DBus_Method *method) |
|
{ |
|
DBus_Arg *arg; |
|
Eina_Inlist *inlist; |
|
|
|
EINA_INLIST_FOREACH_SAFE(method->args, inlist, arg) |
|
arg_free(arg); |
|
method->iface->methods = eina_inlist_remove(method->iface->methods, |
|
EINA_INLIST_GET(method)); |
|
free(method->c_name); |
|
free(method->cb_name); |
|
free(method->function_cb); |
|
free(method->name); |
|
free(method); |
|
} |
|
|
|
void |
|
arg_free(DBus_Arg *arg) |
|
{ |
|
free(arg->c_name); |
|
free(arg->name); |
|
free(arg->type); |
|
free(arg); |
|
} |
|
|
|
DBus_Signal * |
|
signal_new(DBus_Interface *iface) |
|
{ |
|
DBus_Signal *signal = calloc(1, sizeof(DBus_Signal)); |
|
EINA_SAFETY_ON_NULL_RETURN_VAL(signal, NULL); |
|
iface->signals = eina_inlist_append(iface->signals, EINA_INLIST_GET(signal)); |
|
signal->iface = iface; |
|
return signal; |
|
} |
|
|
|
void |
|
signal_free(DBus_Signal *signal) |
|
{ |
|
DBus_Arg *arg; |
|
Eina_Inlist *inlist; |
|
|
|
EINA_INLIST_FOREACH_SAFE(signal->args, inlist, arg) |
|
arg_free(arg); |
|
signal->iface->signals = eina_inlist_remove(signal->iface->signals, |
|
EINA_INLIST_GET(signal)); |
|
free(signal->c_name); |
|
free(signal->struct_name); |
|
free(signal->free_function); |
|
free(signal->cb_name); |
|
free(signal->name); |
|
free(signal->signal_event); |
|
free(signal); |
|
} |
|
|
|
DBus_Interface * |
|
interface_new(DBus_Object *obj) |
|
{ |
|
DBus_Interface *iface = calloc(1, sizeof(DBus_Interface)); |
|
EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL); |
|
obj->ifaces = eina_inlist_append(obj->ifaces, EINA_INLIST_GET(iface)); |
|
iface->obj = obj; |
|
return iface; |
|
} |
|
|
|
void |
|
interface_free(DBus_Interface *iface) |
|
{ |
|
while (iface->signals) |
|
{ |
|
DBus_Signal *signal = EINA_INLIST_CONTAINER_GET(iface->signals, |
|
DBus_Signal); |
|
signal_free(signal); |
|
} |
|
while (iface->methods) |
|
{ |
|
DBus_Method *method = EINA_INLIST_CONTAINER_GET(iface->methods, |
|
DBus_Method); |
|
method_free(method); |
|
} |
|
while (iface->properties) |
|
{ |
|
DBus_Property *property = EINA_INLIST_CONTAINER_GET(iface->properties, |
|
DBus_Property); |
|
property_free(property); |
|
} |
|
iface->obj->ifaces = eina_inlist_remove(iface->obj->ifaces, |
|
EINA_INLIST_GET(iface)); |
|
free(iface->c_name); |
|
free(iface->name); |
|
free(iface); |
|
} |
|
|
|
void |
|
object_free(DBus_Object *obj) |
|
{ |
|
while (obj->ifaces) |
|
{ |
|
DBus_Interface *iface = EINA_INLIST_CONTAINER_GET(obj->ifaces, |
|
DBus_Interface); |
|
interface_free(iface); |
|
} |
|
free(obj->c_name); |
|
free(obj->name); |
|
free(obj); |
|
}
|
|
|