123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /***************************************************************************
- *
- * 通用代码
- * Map implements
- *
- * HashMap
- * TreeMap
- *
- * Author : Li Bo Feng
- *
- * Update History
- * DATE OWNER DESCRIPTION
- * ----------- ------------ -----------
- * 2010-01-19 Li Bo Feng Generated
- *
- ***************************************************************************/
- #ifndef _AB_MAP_H_
- #define _AB_MAP_H_
- /**
- * 内存分配和释放
- */
- #define MALLOC(n) mc_malloc(n, __FILE__, __LINE__)
- #define FREE(p) mc_free(p, __FILE__, __LINE__)
- typedef void (*mc_print_function)(long mtc, char *info, char* file, int line);
- extern mc_print_function mc_print;
- void* mc_malloc(int n, char* file, int line);
- void mc_free(void* p, char* file, int line);
- /**
- * Map Entry
- */
- typedef struct _map_entry
- {
- int entry_size;
- char* key;
- void* value;
- int copy_value_length; // 0 for use value point directly.
- char value_type; // Long String Double Bytes Map Pointer
- struct _map_entry* prev;
- struct _map_entry* next;
- }*MapEntry;
- long new_mapping();
- long new_sorted_mapping();
- void put_mapping(long mapid, char* key, void* value, int copy_value_length);
- void* get_mapping(long mapid, char* key);
- void* remove_mapping(long mapid, char* key);
- void delete_mapping(long mapid);
- void clear_mapping();
- MapEntry items_mapping(long mapid);
- int size_mapping(long mapid);
- /* return item equal or less than special key in sorted mapping */
- MapEntry nearby_item_sorted_mapping(long mapid, char* key);
- void put_all_mapping(long destmap, long srcmap);
- /* return mapping string, unsupport multi call in sametime */
- char* string_mapping(long mapid);
- void put_string_mapping(long mapid, char* key, char* value);
- void put_submap_mapping(long mapid, char* key, long value);
- void put_long_mapping(long mapid, char* key, long value);
- void put_double_mapping(long mapid, char* key, double value);
- char* get_string_mapping(long mapid, char* key);
- long get_submap_mapping(long mapid, char* key);
- long get_long_mapping(long mapid, char* key);
- double get_double_mapping(long mapid, char* key);
- typedef int (*event_map_entry)(long, char*, void*);
- event_map_entry get_event(long mapid, int event);
- event_map_entry set_event(long mapid, int event, event_map_entry);
- #endif
|