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*/