X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fq.h;h=e1e9466e744c2ffc933c1d4d3760def02106e1bd;hb=700f136a477a84d5a13fb1f8d6cb51f81e158328;hp=52d63923cac530a14d009a4a1a41925738518732;hpb=d0814136e2d0a4261931c644e6282c480a11d62f;p=swftools.git diff --git a/lib/q.h b/lib/q.h index 52d6392..e1e9466 100644 --- a/lib/q.h +++ b/lib/q.h @@ -28,7 +28,7 @@ extern "C" { #endif -#define NEW(t,y) t*y = (t*)malloc(sizeof(t));memset(y, 0, sizeof(t)); +#define NEW(t,y) t*y = (t*)rfx_calloc(sizeof(t)); /* dynamically growing mem section */ typedef struct _mem_t { @@ -156,8 +156,9 @@ void stringarray_destroy(stringarray_t*sa); dict_t*dict_new(); dict_t*dict_new2(type_t*type); -void dict_init(dict_t*dict); +void dict_init(dict_t*dict, int size); dictentry_t*dict_put(dict_t*h, const void*key, void* data); +void dict_put2(dict_t*h, const char*s, void*data); int dict_count(dict_t*h); void dict_dump(dict_t*h, FILE*fi, const char*prefix); void* dict_lookup(dict_t*h, const void*s); @@ -191,10 +192,12 @@ void array_free(array_t*array); void*array_getkey(array_t*array, int nr); void*array_getvalue(array_t*array, int nr); int array_append(array_t*array, const void*name, void*data); +#define array_contains(a,b) (array_find((a),(b))>=0) int array_find(array_t*array, const void*name); int array_find2(array_t*array, const void*name, void*data); int array_update(array_t*array, const void*name, void*data); int array_append_if_new(array_t*array, const void*name, void*data); +#define array_length(a) ((a)->num) #define DECLARE(x) struct _##x;typedef struct _##x x##_t; #define DECLARE_LIST(x) \ @@ -203,14 +206,17 @@ struct _##x##_list { \ struct _##x##_list*next; \ }; \ typedef struct _##x##_list x##_list_t; -int list_length(void*_list); +int list_length_(void*_list); void*list_clone_(void*_list); void list_append_(void*_list, void*entry); +void list_prepend_(void*_list, void*entry); void list_free_(void*_list); #define list_new() ((void*)0) #define list_append(list, e) {sizeof((list)->next);list_append_(&(list),(e));} +#define list_prepend(list, e) {sizeof((list)->next);list_prepend_(&(list),(e));} #define list_free(list) {sizeof((list)->next);list_free_(&(list));} #define list_clone(list) (sizeof((list)->next),list_clone_(&(list))) +#define list_length(list) (sizeof((list)->next),list_length_(list)) #ifdef __cplusplus }