Lines Matching defs:index

43  * Indexer - to find a structure given an index
45 * We store pointers using a double lookup and return an index to the
47 * the index are itself an index into an array of memory allocations.
51 * This allows us to adjust the number of pointers stored by the index
89 int index;
91 if ((index = idx->free_list) == 0) {
92 if ((index = idx_grow(idx)) <= 0)
93 return index;
96 entry = idx->array[idx_array_index(index)];
97 idx->free_list = entry[idx_entry_index(index)].next;
98 entry[idx_entry_index(index)].item = item;
99 return index;
102 void *idx_remove(struct indexer *idx, int index)
107 entry = idx->array[idx_array_index(index)];
108 item = entry[idx_entry_index(index)].item;
109 entry[idx_entry_index(index)].next = idx->free_list;
110 idx->free_list = index;
114 void idx_replace(struct indexer *idx, int index, void *item)
118 entry = idx->array[idx_array_index(index)];
119 entry[idx_entry_index(index)].item = item;
123 static int idm_grow(struct index_map *idm, int index)
125 idm->array[idx_array_index(index)] = calloc(IDX_ENTRY_SIZE, sizeof(void *));
126 if (!idm->array[idx_array_index(index)])
129 return index;
136 int idm_set(struct index_map *idm, int index, void *item)
140 if (index > IDX_MAX_INDEX) {
145 if (!idm->array[idx_array_index(index)]) {
146 if (idm_grow(idm, index) < 0)
150 entry = idm->array[idx_array_index(index)];
151 entry[idx_entry_index(index)] = item;
152 return index;
155 void *idm_clear(struct index_map *idm, int index)
160 entry = idm->array[idx_array_index(index)];
161 item = entry[idx_entry_index(index)];
162 entry[idx_entry_index(index)] = NULL;