X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fstruct%2Fhashtable.h;h=0b6f4c8f23816fa9b5f42ba6a676c5cde68b94d6;hb=e0a19693a515af4ad45c94accf1d863bc07fad6d;hp=9a102a8a9ce9a35327540f94be9470f45159e66f;hpb=9a93cf6b1cd9a22b0b2fd1776ca0d1b480276002;p=bertos.git diff --git a/bertos/struct/hashtable.h b/bertos/struct/hashtable.h index 9a102a8a..0b6f4c8f 100644 --- a/bertos/struct/hashtable.h +++ b/bertos/struct/hashtable.h @@ -118,12 +118,25 @@ typedef struct */ #define DECLARE_HASHTABLE(name, size, hook_gk) \ static const void* name##_nodes[1 << UINT32_LOG2(size)]; \ - struct HashTable name = { name##_nodes, UINT32_LOG2(size), { false }, hook_gk } + struct HashTable name = \ + { \ + .mem = name##_nodes, \ + .max_elts_log2 = UINT32_LOG2(size), \ + .flags = { .key_internal = false }, \ + .key_data.hook = hook_gk \ + } + /** Exactly like \c DECLARE_HASHTABLE, but the variable will be declared as static. */ #define DECLARE_HASHTABLE_STATIC(name, size, hook_gk) \ static const void* name##_nodes[1 << UINT32_LOG2(size)]; \ - static struct HashTable name = { name##_nodes, UINT32_LOG2(size), { false }, { hook_gk } } + static struct HashTable name = \ + { \ + .mem = name##_nodes, \ + .max_elts_log2 = UINT32_LOG2(size), \ + .flags = { .key_internal = false }, \ + .key_data.hook = hook_gk \ + } #if CONFIG_HT_OPTIONAL_INTERNAL_KEY /** Declare a hash table with internal copies of the keys. This version does not @@ -140,7 +153,13 @@ typedef struct #define DECLARE_HASHTABLE_INTERNALKEY_STATIC(name, size) \ static uint8_t name##_keys[(1 << UINT32_LOG2(size)) * (INTERNAL_KEY_MAX_LENGTH + 1)]; \ static const void* name##_nodes[1 << UINT32_LOG2(size)]; \ - static struct HashTable name = { name##_nodes, UINT32_LOG2(size), { true }, name##_keys } + static struct HashTable name = \ + { \ + .mem = name##_nodes, \ + .max_elts_log2 = UINT32_LOG2(size), \ + .flags = { .key_internal = true }, \ + .key_data.mem = name##_keys \ + } #endif /** @@ -266,4 +285,8 @@ INLINE HashIterator ht_iter_next(HashIterator h) return h; } +int hashtable_testSetup(void); +int hashtable_testRun(void); +int hashtable_testTearDown(void); + #endif /* STRUCT_HASHTABLE_H */