Update comments.

Update hash function.
This commit is contained in:
Patrick Pelissier committed 2017-05-24 11:47:35 +02:00
1 parent 9978c94c17
commit 5386f9a2f7
1 file changed
+10 -13
+10 -13
View File
@@ -607,6 +607,7 @@
{ \ { \
assert (a == it->array); \ assert (a == it->array); \
M_C3(array_, name, _pop_at)(NULL, a, it->index); \ M_C3(array_, name, _pop_at)(NULL, a, it->index); \
/* NOTE: it->index will naturaly point to the next element */ \
} \ } \
\ \
M_IF_METHOD(CMP, oplist) \ M_IF_METHOD(CMP, oplist) \
@@ -617,7 +618,7 @@
/* Using qsort is more compact but slower than a full templated \ /* Using qsort is more compact but slower than a full templated \
version which can be twice faster */ \ version which can be twice faster */ \
int (*func_void)(const void*, const void*); \ int (*func_void)(const void*, const void*); \
/* There is no way to avoid the cast */ \ /* There is no way (?) to avoid the cast */ \
func_void = (int (*)(const void*, const void*))func_type; \ func_void = (int (*)(const void*, const void*))func_type; \
qsort (l->ptr, l->size, sizeof(type), func_void); \ qsort (l->ptr, l->size, sizeof(type), func_void); \
} \ } \
@@ -643,7 +644,7 @@
string_push_back (str, ']'); \ string_push_back (str, ']'); \
STRING_CONTRACT(str); \ STRING_CONTRACT(str); \
} \ } \
, /* no str */ ) \ , /* no GET_STR */ ) \
\ \
M_IF_METHOD(OUT_STR, oplist)( \ M_IF_METHOD(OUT_STR, oplist)( \
static inline void \ static inline void \
@@ -663,7 +664,7 @@
} \ } \
fprintf (file, "]"); \ fprintf (file, "]"); \
} \ } \
, /* no out_str */ ) \ , /* no OUT_STR */ ) \
\ \
M_IF_METHOD(IN_STR, oplist)( \ M_IF_METHOD(IN_STR, oplist)( \
static inline bool \ static inline bool \
@@ -689,7 +690,7 @@
ARRAYI_CONTRACT(array); \ ARRAYI_CONTRACT(array); \
return c == ']'; \ return c == ']'; \
} \ } \
, /* no in_str */ ) \ , /* no IN_STR */ ) \
\ \
M_IF_METHOD(EQUAL, oplist)( \ M_IF_METHOD(EQUAL, oplist)( \
static inline bool \ static inline bool \
@@ -715,25 +716,21 @@
return M_C3(array_, name, _end_p)(it1) \ return M_C3(array_, name, _end_p)(it1) \
&& M_C3(array_, name, _end_p)(it2); \ && M_C3(array_, name, _end_p)(it2); \
} \ } \
, /* no equal */ ) \ , /* no EQUAL */ ) \
\ \
M_IF_METHOD(HASH, oplist)( \ M_IF_METHOD(HASH, oplist)( \
static inline size_t \ static inline size_t \
M_C3(array_, name, _hash)(/*const*/ array_t array) \ M_C3(array_, name, _hash)(const array_t array) \
{ \ { \
ARRAYI_CONTRACT(array); \ ARRAYI_CONTRACT(array); \
M_HASH_DECL(hash); \ M_HASH_DECL(hash); \
array_it_t it; \ for(size_t i = 0 ; i < array->size; i++) { \
for(M_C3(array_, name, _it)(it, array) ; \ size_t hi = M_GET_HASH oplist (array->ptr[i]); \
!M_C3(array_, name, _end_p)(it); \
M_C3(array_, name, _next)(it)) { \
const type *item = M_C3(array_, name, _cref)(it); \
size_t hi = M_GET_HASH oplist (*item); \
M_HASH_UP(hash, hi); \ M_HASH_UP(hash, hi); \
} \ } \
return hash; \ return hash; \
} \ } \
, /* no hash */ ) \ , /* no HASH */ ) \
#endif #endif