ab_map.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /***************************************************************************
  2. *
  3. * 通用代码
  4. * Map implements
  5. *
  6. * HashMap
  7. * TreeMap
  8. *
  9. * Author : Li Bo Feng
  10. *
  11. * Update History
  12. * DATE OWNER DESCRIPTION
  13. * ----------- ------------ -----------
  14. * 2010-01-19 Li Bo Feng Generated
  15. *
  16. ***************************************************************************/
  17. #ifndef _AB_MAP_H_
  18. #define _AB_MAP_H_
  19. /**
  20. * 内存分配和释放
  21. */
  22. #define MALLOC(n) mc_malloc(n, __FILE__, __LINE__)
  23. #define FREE(p) mc_free(p, __FILE__, __LINE__)
  24. typedef void (*mc_print_function)(long mtc, char *info, char* file, int line);
  25. extern mc_print_function mc_print;
  26. void* mc_malloc(int n, char* file, int line);
  27. void mc_free(void* p, char* file, int line);
  28. /**
  29. * Map Entry
  30. */
  31. typedef struct _map_entry
  32. {
  33. int entry_size;
  34. char* key;
  35. void* value;
  36. int copy_value_length; // 0 for use value point directly.
  37. char value_type; // Long String Double Bytes Map Pointer
  38. struct _map_entry* prev;
  39. struct _map_entry* next;
  40. }*MapEntry;
  41. long new_mapping();
  42. long new_sorted_mapping();
  43. void put_mapping(long mapid, char* key, void* value, int copy_value_length);
  44. void* get_mapping(long mapid, char* key);
  45. void* remove_mapping(long mapid, char* key);
  46. void delete_mapping(long mapid);
  47. void clear_mapping();
  48. MapEntry items_mapping(long mapid);
  49. int size_mapping(long mapid);
  50. /* return item equal or less than special key in sorted mapping */
  51. MapEntry nearby_item_sorted_mapping(long mapid, char* key);
  52. void put_all_mapping(long destmap, long srcmap);
  53. /* return mapping string, unsupport multi call in sametime */
  54. char* string_mapping(long mapid);
  55. void put_string_mapping(long mapid, char* key, char* value);
  56. void put_submap_mapping(long mapid, char* key, long value);
  57. void put_long_mapping(long mapid, char* key, long value);
  58. void put_double_mapping(long mapid, char* key, double value);
  59. char* get_string_mapping(long mapid, char* key);
  60. long get_submap_mapping(long mapid, char* key);
  61. long get_long_mapping(long mapid, char* key);
  62. double get_double_mapping(long mapid, char* key);
  63. typedef int (*event_map_entry)(long, char*, void*);
  64. event_map_entry get_event(long mapid, int event);
  65. event_map_entry set_event(long mapid, int event, event_map_entry);
  66. #endif