common.h 995 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _DS_COMMON_H_
  2. #define _DS_COMMON_H_
  3. #include <stdlib.h>
  4. // data type
  5. typedef void* ds_data_t;
  6. // function used for traversal a container, stop traversal when return 0
  7. typedef int (*func_each)(ds_data_t);
  8. typedef void (*func_destroyer)(ds_data_t);
  9. // function used for comparing two values
  10. typedef int (*func_comparer)(ds_data_t, ds_data_t);
  11. typedef int (*func_foreach)(func_each cb);
  12. typedef int (*func_sort)(func_comparer comparer);
  13. // memory
  14. typedef void* (*func_malloc)(size_t);
  15. typedef void (*func_free)(void*);
  16. // install new mem-allocate function
  17. void ds_setup(func_malloc m, func_free f);
  18. // default implementings of useful functions
  19. void ds_cb_default_destroyer(ds_data_t);
  20. void ds_cb_default_each(ds_data_t);
  21. int ds_cb_default_comparer(ds_data_t, ds_data_t);
  22. #define IMPL_FOREACH \
  23. (void*)0
  24. #define DS_TREE_NODE_COMMON(node_type) \
  25. ds_data_t data; \
  26. node_type* left; \
  27. node_type* right
  28. #define UNUSED(x) (void*)(x)
  29. #define DS_DEF_ARRAY_SIZE 32
  30. #endif