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