32 #include "avrmalloc.h" 56 callback_new (CallBack_FP func, AvrClass *data)
61 callback_construct (cb, func, data);
68 callback_construct (CallBack *cb, CallBack_FP func, AvrClass *data)
84 callback_destroy (
void *cb)
86 CallBack *_cb = (CallBack *)cb;
98 callback_list_add (DList *head, CallBack *cb)
100 return dlist_add (head, (AvrClass *)cb, NULL);
104 callback_execute (AvrClass *data,
void *user_data)
106 CallBack *cb = (CallBack *)data;
107 uint64_t time = *(uint64_t *) user_data;
109 return cb->func (time, cb->data);
113 callback_list_execute_all (DList *head, uint64_t time)
DList * dlist_iterator(DList *head, DListFP_Iter func, void *user_data)
Iterate over all elements of the list.
void class_ref(AvrClass *klass)
Increments the reference count for the klass object.
DList * dlist_add(DList *head, AvrClass *data, DListFP_Cmp cmp)
Add a new node to the end of the list.
void class_destroy(void *klass)
Releases resources allocated by class's <klass>_new() function.
void class_unref(AvrClass *klass)
Decrements the reference count for the klass object.
#define avr_error(fmt, args...)
Print an error message to stderr and terminate program.
#define avr_new(type, count)
Macro for allocating memory.
void class_overload_destroy(AvrClass *klass, AvrClassFP_Destroy destroy)
Overload the default destroy method.
void class_construct(AvrClass *klass)
Initializes the AvrClass data structure.