Run renamed .inc files by clang-format for the first time

This commit is contained in:
Lassi Kortela 2019-08-09 17:23:10 +03:00
parent 4128fbc535
commit 09c6368668
2 changed files with 148 additions and 146 deletions

View File

@ -4,14 +4,15 @@
include this file and call HTIMPL to generate an implementation include this file and call HTIMPL to generate an implementation
*/ */
#define hash_size(h) ((h)->size/2) #define hash_size(h) ((h)->size / 2)
// compute empirical max-probe for a given size // compute empirical max-probe for a given size
#define max_probe(size) ((size)<=(HT_N_INLINE*2) ? (HT_N_INLINE/2) : (size)>>3) #define max_probe(size) \
((size) <= (HT_N_INLINE * 2) ? (HT_N_INLINE / 2) : (size) >> 3)
#define HTIMPL(HTNAME, HFUNC, EQFUNC) \ #define HTIMPL(HTNAME, HFUNC, EQFUNC) \
static void **HTNAME##_lookup_bp(htable_t *h, void *key) \ static void **HTNAME##_lookup_bp(htable_t *h, void *key) \
{ \ { \
uint_t hv; \ uint_t hv; \
size_t i, orig, index, iter; \ size_t i, orig, index, iter; \
size_t newsz, sz = hash_size(h); \ size_t newsz, sz = hash_size(h); \
@ -22,20 +23,20 @@ static void **HTNAME##_lookup_bp(htable_t *h, void *key) \
hv = HFUNC((uptrint_t)key); \ hv = HFUNC((uptrint_t)key); \
retry_bp: \ retry_bp: \
iter = 0; \ iter = 0; \
index = (index_t)(hv & (sz-1)) * 2; \ index = (index_t)(hv & (sz - 1)) * 2; \
sz *= 2; \ sz *= 2; \
orig = index; \ orig = index; \
\ \
do { \ do { \
if (tab[index+1] == HT_NOTFOUND) { \ if (tab[index + 1] == HT_NOTFOUND) { \
tab[index] = key; \ tab[index] = key; \
return &tab[index+1]; \ return &tab[index + 1]; \
} \ } \
\ \
if (EQFUNC(key, tab[index])) \ if (EQFUNC(key, tab[index])) \
return &tab[index+1]; \ return &tab[index + 1]; \
\ \
index = (index+2) & (sz-1); \ index = (index + 2) & (sz - 1); \
iter++; \ iter++; \
if (iter > maxprobe) \ if (iter > maxprobe) \
break; \ break; \
@ -43,27 +44,28 @@ static void **HTNAME##_lookup_bp(htable_t *h, void *key) \
\ \
/* table full */ \ /* table full */ \
/* quadruple size, rehash, retry the insert */ \ /* quadruple size, rehash, retry the insert */ \
/* it's important to grow the table really fast; otherwise we waste */ \ /* it's important to grow the table really fast; otherwise we waste \
*/ \
/* lots of time rehashing all the keys over and over. */ \ /* lots of time rehashing all the keys over and over. */ \
sz = h->size; \ sz = h->size; \
ol = h->table; \ ol = h->table; \
if (sz >= (1<<19) || (sz <= (1<<8))) \ if (sz >= (1 << 19) || (sz <= (1 << 8))) \
newsz = sz<<1; \ newsz = sz << 1; \
else if (sz <= HT_N_INLINE) \ else if (sz <= HT_N_INLINE) \
newsz = HT_N_INLINE; \ newsz = HT_N_INLINE; \
else \ else \
newsz = sz<<2; \ newsz = sz << 2; \
/*printf("trying to allocate %d words.\n", newsz); fflush(stdout);*/ \ /*printf("trying to allocate %d words.\n", newsz); fflush(stdout);*/ \
tab = (void**)LLT_ALLOC(newsz*sizeof(void*)); \ tab = (void **)LLT_ALLOC(newsz * sizeof(void *)); \
if (tab == NULL) \ if (tab == NULL) \
return NULL; \ return NULL; \
for(i=0; i < newsz; i++) \ for (i = 0; i < newsz; i++) \
tab[i] = HT_NOTFOUND; \ tab[i] = HT_NOTFOUND; \
h->table = tab; \ h->table = tab; \
h->size = newsz; \ h->size = newsz; \
for(i=0; i < sz; i+=2) { \ for (i = 0; i < sz; i += 2) { \
if (ol[i+1] != HT_NOTFOUND) { \ if (ol[i + 1] != HT_NOTFOUND) { \
(*HTNAME##_lookup_bp(h, ol[i])) = ol[i+1]; \ (*HTNAME##_lookup_bp(h, ol[i])) = ol[i + 1]; \
} \ } \
} \ } \
if (ol != &h->_space[0]) \ if (ol != &h->_space[0]) \
@ -76,28 +78,28 @@ static void **HTNAME##_lookup_bp(htable_t *h, void *key) \
goto retry_bp; \ goto retry_bp; \
\ \
return NULL; \ return NULL; \
} \ } \
\ \
void HTNAME##_put(htable_t *h, void *key, void *val) \ void HTNAME##_put(htable_t *h, void *key, void *val) \
{ \ { \
void **bp = HTNAME##_lookup_bp(h, key); \ void **bp = HTNAME##_lookup_bp(h, key); \
\ \
*bp = val; \ *bp = val; \
} \ } \
\ \
void **HTNAME##_bp(htable_t *h, void *key) \ void **HTNAME##_bp(htable_t *h, void *key) \
{ \ { \
return HTNAME##_lookup_bp(h, key); \ return HTNAME##_lookup_bp(h, key); \
} \ } \
\ \
/* returns bp if key is in hash, otherwise NULL */ \ /* returns bp if key is in hash, otherwise NULL */ \
/* if return is non-NULL and *bp == HT_NOTFOUND then key was deleted */ \ /* if return is non-NULL and *bp == HT_NOTFOUND then key was deleted */ \
static void **HTNAME##_peek_bp(htable_t *h, void *key) \ static void **HTNAME##_peek_bp(htable_t *h, void *key) \
{ \ { \
size_t sz = hash_size(h); \ size_t sz = hash_size(h); \
size_t maxprobe = max_probe(sz); \ size_t maxprobe = max_probe(sz); \
void **tab = h->table; \ void **tab = h->table; \
size_t index = (index_t)(HFUNC((uptrint_t)key) & (sz-1)) * 2; \ size_t index = (index_t)(HFUNC((uptrint_t)key) & (sz - 1)) * 2; \
sz *= 2; \ sz *= 2; \
size_t orig = index; \ size_t orig = index; \
size_t iter = 0; \ size_t iter = 0; \
@ -106,43 +108,43 @@ static void **HTNAME##_peek_bp(htable_t *h, void *key) \
if (tab[index] == HT_NOTFOUND) \ if (tab[index] == HT_NOTFOUND) \
return NULL; \ return NULL; \
if (EQFUNC(key, tab[index])) \ if (EQFUNC(key, tab[index])) \
return &tab[index+1]; \ return &tab[index + 1]; \
\ \
index = (index+2) & (sz-1); \ index = (index + 2) & (sz - 1); \
iter++; \ iter++; \
if (iter > maxprobe) \ if (iter > maxprobe) \
break; \ break; \
} while (index != orig); \ } while (index != orig); \
\ \
return NULL; \ return NULL; \
} \ } \
\ \
void *HTNAME##_get(htable_t *h, void *key) \ void *HTNAME##_get(htable_t *h, void *key) \
{ \ { \
void **bp = HTNAME##_peek_bp(h, key); \ void **bp = HTNAME##_peek_bp(h, key); \
if (bp == NULL) \ if (bp == NULL) \
return HT_NOTFOUND; \ return HT_NOTFOUND; \
return *bp; \ return *bp; \
} \ } \
\ \
int HTNAME##_has(htable_t *h, void *key) \ int HTNAME##_has(htable_t *h, void *key) \
{ \ { \
return (HTNAME##_get(h,key) != HT_NOTFOUND); \ return (HTNAME##_get(h, key) != HT_NOTFOUND); \
} \ } \
\ \
int HTNAME##_remove(htable_t *h, void *key) \ int HTNAME##_remove(htable_t *h, void *key) \
{ \ { \
void **bp = HTNAME##_peek_bp(h, key); \ void **bp = HTNAME##_peek_bp(h, key); \
if (bp != NULL) { \ if (bp != NULL) { \
*bp = HT_NOTFOUND; \ *bp = HT_NOTFOUND; \
return 1; \ return 1; \
} \ } \
return 0; \ return 0; \
} \ } \
\ \
void HTNAME##_adjoin(htable_t *h, void *key, void *val) \ void HTNAME##_adjoin(htable_t *h, void *key, void *val) \
{ \ { \
void **bp = HTNAME##_lookup_bp(h, key); \ void **bp = HTNAME##_lookup_bp(h, key); \
if (*bp == HT_NOTFOUND) \ if (*bp == HT_NOTFOUND) \
*bp = val; \ *bp = val; \
} }

View File

@ -3,12 +3,12 @@
#include "htable.h" #include "htable.h"
#define HTPROT(HTNAME) \ #define HTPROT(HTNAME) \
void *HTNAME##_get(htable_t *h, void *key); \ void *HTNAME##_get(htable_t *h, void *key); \
void HTNAME##_put(htable_t *h, void *key, void *val); \ void HTNAME##_put(htable_t *h, void *key, void *val); \
void HTNAME##_adjoin(htable_t *h, void *key, void *val); \ void HTNAME##_adjoin(htable_t *h, void *key, void *val); \
int HTNAME##_has(htable_t *h, void *key); \ int HTNAME##_has(htable_t *h, void *key); \
int HTNAME##_remove(htable_t *h, void *key); \ int HTNAME##_remove(htable_t *h, void *key); \
void **HTNAME##_bp(htable_t *h, void *key); void **HTNAME##_bp(htable_t *h, void *key);
// return value, or HT_NOTFOUND if key not found // return value, or HT_NOTFOUND if key not found