Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
File: map.c Progetto: huyba/biosal
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);*/
}
Esempio n. 5
0
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);*/
}