hashmap_put function

This commit is contained in:
2020-08-07 11:26:52 +02:00
parent e1b317d9a7
commit 064885298f
5 changed files with 60 additions and 46 deletions

View File

@ -1,10 +1,24 @@
#ifndef _acl_array_h
#define _acl_array_h
#include <stddef.h>
size_t acl_arraylist_len(void *arraylist);
union acl_arraylist_meta {
double dummy_double;
long double dummy_long_double;
long long dummy_long_long;
void *dummy_ptr;
void (*dummy_func_ptr)(void);
struct {
size_t len;
size_t cap;
size_t sizeof_one_element;
};
};
inline size_t acl_arraylist_len(void *arraylist) {
return ((union acl_arraylist_meta*)arraylist - 1)->len;
}
void acl_arraylist_free(void *arraylist);
void* acl_arraylist_remove(void *arraylist_void, size_t index);
void* acl_arraylist_create(size_t array_size, size_t sizeof_one_element);
void* acl_arraylist_append(void *arraylist_void, void *element_void);
void* acl_arraylist_append(void *arraylist_void, void *element);
void* acl_arraylist_append_ptr(void *arraylist_void, void **append_element);
#endif

View File

@ -1,15 +1,17 @@
#ifndef _acl_hashmap_h
#define _acl_hashmap_h
#include <stddef.h>
#include <stdbool.h>
#define acl_hashmap_create(type, keyType, bucketCount) acl_hashmap_init(bucketCount, sizeof(struct{type c; type d;}), offsetof(struct{type c; type d;}, d), sizeof(keyType));
union acl_hashmap_meta {
void *dummy_ptr;
struct {
size_t bucketCount;
size_t bucketBits;
size_t sizeOneElement;
size_t keyBits;
size_t keySize;
size_t offset;
};
};
/* set keySize to NULL for a dynamic keySize */
union acl_hashmap_meta* acl_hashmap_create(size_t bucketCount, size_t sizeOneElement, size_t keySize);
void acl_hashmap_put(union acl_hashmap_meta *hashmap_meta, void *key, void *element);
union acl_hashmap_meta* acl_hashmap_init(size_t bucketCount, size_t sizeOneElement, size_t offset, size_t keySize);
void* acl_hashmap_put(union acl_hashmap_meta *hashmap_meta, void *key);
#endif