Actual source code: run-map.h
1: #if !defined(RUN_MAP_H)
2: #define RUN_MAP_H
4: #if defined(__cplusplus)
6: #endif
8: static int desc_size = 0;
9: static int entry_size = 0;
10: static int bucket_size = 0;
11: static int entries_per_bucket = 0;
12: static int buckets_per_block = 0;
13: static int map_size = 0;
15: # define DEFAULT_MAP_SIZE 1000
16: # define DEFAULT_BUCKET_SIZE 10
17: # define DEFAULT_BUCKETS_PER_BLOCK 100
18: typedef struct {
19: void* key;
20: double val[1];
21: } Pair;
22: typedef struct {
23: Pair* cache;
24: Pair* next;
25: } MapEntry;
26: static MapEntry* map_def = 0;
28: typedef struct genlist {
29: struct genlist *next;
30: double data[1];
31: } genlist_t;
32: static genlist_t* freeList;
33: static genlist_t* blockList;
34: static genlist_t* curBlock;
36: typedef struct {
37: int isSingle;
38: double* base;
39: double* top;
40: void* desc;
41: } ArrayEntry;
44: void* ad_map_init(int dsize, int msize, int bsize, int asize);
45: void ad_map_cleanup();
46: void* ad_map_reg_array_d(double* base, int size);
47: void* ad_map_reg_array_s(float* base, int size);
48: void* ad_map_get(void* key);
49: static void* ad_map_alloc_bucket(void);
50: void* ad_map_free_bucket(void* ptr);
51: void* ad_map_free(void* key);
53: #if defined(__cplusplus)
54: }
55: #endif
57: #endif /*RUN_MAP_H*/