int core_map_add_value(struct core_map *self, void *key, void *value) { void *bucket; int value_size; #ifdef CORE_MAP_ALIGNMENT_ENABLED key = core_map_pad_key(self, key); #endif bucket = core_map_get(self, key); /* it's already there... */ if (bucket != NULL) { return 0; } bucket = core_map_add(self, key); #ifdef CORE_MAP_ALIGNMENT_ENABLED value_size = self->original_value_size; #else value_size = core_map_get_value_size(self); #endif core_memory_copy(bucket, value, value_size); return 1; }
int core_map_get_value(struct core_map *self, void *key, void *value) { void *bucket; int size; #ifdef CORE_MAP_ALIGNMENT_ENABLED key = core_map_pad_key(self, key); #endif bucket = core_map_get(self, key); if (bucket == NULL) { return 0; } #ifdef CORE_MAP_ALIGNMENT_ENABLED size = self->original_value_size; #else size = core_map_get_value_size(self); #endif if (value != NULL) { core_memory_copy(value, bucket, size); } return 1; }
void core_map_examine(struct core_map *self) { int key_size; int value_size; uint64_t size; key_size = core_map_get_key_size(self); value_size = core_map_get_value_size(self); size = core_map_size(self); printf("core_map_examine key_size %d value_size %d size %" PRIu64 "\n", key_size, value_size, size); }
void core_map_clear(struct core_map *self) { int key_size; int value_size; key_size = core_map_get_key_size(self); value_size = core_map_get_value_size(self); core_map_destroy(self); core_map_init(self, key_size, value_size); /*core_dynamic_hash_table_clear(&self->table);*/ }
void core_map_clear(struct core_map *self) { int key_size; int value_size; struct core_memory_pool *pool; /* * Save key_size, value_size, and memory pool. */ key_size = core_map_get_key_size(self); value_size = core_map_get_value_size(self); pool = core_map_memory_pool(self); core_map_destroy(self); core_map_init(self, key_size, value_size); core_map_set_memory_pool(self, pool); /* * TODO: implement the clear operation directly inside * the lower layer (core_dynamic_hash_table + core_hash_table) */ /*core_dynamic_hash_table_clear(&self->table);*/ }