#define art_alloc #define art_free #define art_realloc #define art_new (type, n) #define art_renew (p, type, n)
These API functions are a set of wrapper functions around the OS-specific memory management functions: they are used to keep the user-level code portable. Their definitions are straighforward so we will not get into any details. XXX: check for g_new behaviour when memory allocation problem.
#define art_new(type, n) ((type *)art_alloc ((n) * sizeof(type)))
This macro is not equivalent to the glib g_new function. As g_new, it takes two parameters: the type of the object to instantiate as first parameter and the number of such objects to instantiate as second parameter. It will return a dynamically allocated array of memory you can use to store objects in. In case of failure of the memory allocation, it will return NULL (this is very diffrent from g_new which does not return in case of failure. g_new allways suceeds).
#define art_renew(p, type, n) ((type *)art_realloc (p, (n) * sizeof(type)))
This macro allows you to reallocate a dynamically allocated array of objects. As with realloc and malloc, if p is NULL, this is equivalent to art_new.