| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #ifndef _DS_COMMON_H_
- #define _DS_COMMON_H_
- #include <stdlib.h>
- // data type
- typedef void* ds_data_t;
- // function used for traversal a container, stop traversal when return 0
- typedef int (*func_each)(ds_data_t);
- typedef void (*func_destroyer)(ds_data_t);
- // function used for comparing two values
- typedef int (*func_comparer)(ds_data_t, ds_data_t);
- typedef int (*func_foreach)(func_each cb);
- typedef int (*func_sort)(func_comparer comparer);
- // memory
- typedef void* (*func_malloc)(size_t);
- typedef void (*func_free)(void*);
- // install new mem-allocate function
- void ds_setup(func_malloc m, func_free f);
- // default implementings of useful functions
- void ds_cb_default_destroyer(ds_data_t);
- void ds_cb_default_each(ds_data_t);
- int ds_cb_default_comparer(ds_data_t, ds_data_t);
- #define IMPL_FOREACH \
- (void*)0
-
- #define DS_TREE_NODE_COMMON(node_type) \
- ds_data_t data; \
- node_type* left; \
- node_type* right
- #define UNUSED(x) (void*)(x)
- #define DS_DEF_ARRAY_SIZE 32
- #endif
|