Lines Matching refs:cache
35 #define FULLNESS(cache) \
36 ((((cache)->size * 75) / 100) <= (cache)->used)
37 #define EXPANSION(cache) \
38 ((cache)->size * 2)
44 cache_ptr cache;
50 /* Allocate the cache structure. calloc insures its initialization
52 cache = (cache_ptr) objc_calloc (1, sizeof (struct cache));
53 assert (cache);
55 /* Allocate the array of buckets for the cache. calloc initializes
57 cache->node_table
59 assert (cache->node_table);
61 cache->size = size;
64 cache->mask = (size - 1);
67 cache->hash_func = hash_func;
71 cache->compare_func = compare_func;
73 return cache;
78 objc_hash_delete (cache_ptr cache)
88 for (i = 0; i < cache->size; i++)
90 if ((node = cache->node_table[i]))
96 objc_hash_remove (cache,node->key);
99 objc_hash_remove (cache,node->key);
103 /* Release the array of nodes and the cache itself. */
104 objc_free(cache->node_table);
105 objc_free(cache);
137 /* Bump the number of entries in the cache. */
154 DEBUG_PRINTF ("Expanding cache %p from %d to %d\n",
161 /* Trash the old cache. */
170 objc_hash_remove (cache_ptr cache, const void *key)
172 size_t indx = (*cache->hash_func) (cache, key);
173 node_ptr node = cache->node_table[indx];
181 if ((*cache->compare_func) (node->key, key))
183 cache->node_table[indx] = node->next;
193 if ((*cache->compare_func) (node->key, key))
206 --cache->used;
211 objc_hash_next (cache_ptr cache, node_ptr node)
216 cache->last_bucket = 0;
229 ++cache->last_bucket;
234 if (cache->last_bucket < cache->size)
238 while (cache->last_bucket < cache->size)
239 if (cache->node_table[cache->last_bucket])
240 return cache->node_table[cache->last_bucket];
242 ++cache->last_bucket;
252 /* Given KEY, return corresponding value for it in CACHE. Return NULL
255 objc_hash_value_for_key (cache_ptr cache, const void *key)
257 node_ptr node = cache->node_table[(*cache->hash_func) (cache, key)];
263 if ((*cache->compare_func) (node->key, key))
276 /* Given KEY, return YES if it exists in the CACHE. Return NO if it
279 objc_hash_is_key_in_hash (cache_ptr cache, const void *key)
281 node_ptr node = cache->node_table[(*cache->hash_func) (cache, key)];
286 if ((*cache->compare_func)(node->key, key))