diff --git a/bench/udb2/test-mlib.c b/bench/udb2/test-mlib.c index c1bbef6f..e6131681 100644 --- a/bench/udb2/test-mlib.c +++ b/bench/udb2/test-mlib.c @@ -1,5 +1,5 @@ #include "../common.c" -#define DICTI_OA_PROBING(s) 1 +#define M_USE_DICT_OA_PROBING(s) 1 #include "m-dict.h" static inline bool oor_equal_p(unsigned int k, unsigned char n) diff --git a/m-dict.h b/m-dict.h index 5a149729..e1f4405e 100644 --- a/m-dict.h +++ b/m-dict.h @@ -1175,8 +1175,10 @@ enum M_D1CT_oa_element_e { /* Performing Quadratic probing Replace it by '1' to perform linear probing */ -#ifndef M_D1CT_OA_PROBING -#define M_D1CT_OA_PROBING(s) ((s)++) +#ifdef M_USE_DICT_OA_PROBING +# define M_D1CT_OA_PROBING M_USE_DICT_OA_PROBING +#else +# define M_D1CT_OA_PROBING(s) ((s)++) #endif /* Lower Bound of the hash table (TODO: Common macro for both dictionnary) */ @@ -1309,7 +1311,7 @@ enum M_D1CT_oa_element_e { M_D1CT_OA_CONTRACT(dict); \ for(size_t i = 0; i <= dict->mask; i++) { \ if (!M_CALL_OOR_EQUAL(key_oplist, dict->data[i].key, M_D1CT_OA_EMPTY) \ - && !M_CALL_OOR_EQUAL(key_oplist, dict->data[i].key, M_D1CT_OA_DELETED)) { \ + & !M_CALL_OOR_EQUAL(key_oplist, dict->data[i].key, M_D1CT_OA_DELETED)) { \ M_CALL_CLEAR(key_oplist, dict->data[i].key); \ M_CALL_CLEAR(value_oplist, dict->data[i].value); \ } \ @@ -1405,10 +1407,10 @@ enum M_D1CT_oa_element_e { const size_t mask = (newSize -1); \ \ for(size_t i = 0 ; i < oldSize; i++) { \ - if (!M_CALL_OOR_EQUAL(key_oplist, data[i].key, M_D1CT_OA_DELETED) && !M_CALL_OOR_EQUAL(key_oplist, data[i].key, M_D1CT_OA_EMPTY)) { \ + if (!M_CALL_OOR_EQUAL(key_oplist, data[i].key, M_D1CT_OA_DELETED) & !M_CALL_OOR_EQUAL(key_oplist, data[i].key, M_D1CT_OA_EMPTY)) { \ size_t p = M_CALL_HASH(key_oplist, data[i].key) & mask; \ if (p != i) { \ - if (M_LIKELY (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_EMPTY) || M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED))) { \ + if (M_LIKELY (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_EMPTY) | M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED))) { \ M_DO_INIT_MOVE(key_oplist, data[p].key, data[i].key); \ M_DO_INIT_MOVE(value_oplist, data[p].value, data[i].value); \ } else { \ @@ -1482,7 +1484,7 @@ enum M_D1CT_oa_element_e { return; \ } \ M_ASSERT (s <= dict->mask); \ - if (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED) && delPos == (size_t)-1) delPos = p; \ + if (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED) & (delPos == (size_t)-1)) delPos = p; \ } while (!M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_EMPTY) ); \ if (delPos != SIZE_MAX) { \ p = delPos; \ @@ -1533,7 +1535,7 @@ enum M_D1CT_oa_element_e { return &data[p].M_IF(isSet)(key, value); \ } \ M_ASSERT (s <= dict->mask); \ - if (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED) && delPos == (size_t)-1) delPos = p; \ + if (M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_DELETED) & (delPos == (size_t)-1)) delPos = p; \ } while (!M_CALL_OOR_EQUAL(key_oplist, data[p].key, M_D1CT_OA_EMPTY) ); \ if (delPos != SIZE_MAX) { \ p = delPos; \