From 27fd810259e2e495febfc383703afc92c82b49aa Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Mon, 1 May 2017 17:24:22 +0200 Subject: [PATCH] Rename M_OPLIST_CAT into M_OPCAT, M_OPLIST_FLAT into M_OPFLAT Add M_OPLIST_EXTEND Use it instead of M_OPLIST_CAT. --- bench/bench-mlib.c | 8 ++++---- m-core.h | 12 ++++++++---- m-dict.h | 4 ++-- m-tuple.h | 2 +- m-variant.h | 2 +- tests/test-mrbtree.c | 2 +- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/bench/bench-mlib.c b/bench/bench-mlib.c index feec0028..fbfc328d 100644 --- a/bench/bench-mlib.c +++ b/bench/bench-mlib.c @@ -134,7 +134,7 @@ static void test_rbtree(size_t n) /********************************************************************************************/ #ifdef USE_MEMPOOL -DICT_DEF2(ulong, unsigned long, M_OPLIST_CAT((MEMPOOL(dict_mpool), MEMPOOL_LINKAGE(static)),M_DEFAULT_OPLIST), unsigned long, M_DEFAULT_OPLIST) +DICT_DEF2(ulong, unsigned long, M_OPEXTEND(M_DEFAULT_OPLIST, MEMPOOL(dict_mpool), MEMPOOL_LINKAGE(static)), unsigned long, M_DEFAULT_OPLIST) #else DICT_DEF2(ulong, unsigned long, M_DEFAULT_OPLIST, unsigned long, M_DEFAULT_OPLIST) #endif @@ -176,7 +176,7 @@ static inline void oor_set(unsigned long *k, unsigned char n) *k = (unsigned long)n; } -DICT_OA_DEF2(oa_ulong, unsigned long, M_OPLIST_CAT((OOR_EQUAL(oor_equal_p), OOR_SET(oor_set M_IPTR)), M_DEFAULT_OPLIST), unsigned long, M_DEFAULT_OPLIST) +DICT_OA_DEF2(oa_ulong, unsigned long, M_OPEXTEND(M_DEFAULT_OPLIST, OOR_EQUAL(oor_equal_p), OOR_SET(oor_set M_IPTR)), unsigned long, M_DEFAULT_OPLIST) static void test_dict_oa(unsigned long n) @@ -210,7 +210,7 @@ static size_t char_hash(const char_array_t a) { return m_core_hash (a, strlen(a) #define CHAR_OPLIST (INIT(char_init), INIT_SET(char_set), SET(char_set), CLEAR(char_init), HASH(char_hash), EQUAL(char_equal_p)) #ifdef USE_MEMPOOL -DICT_DEF2(char, char_array_t, M_OPLIST_CAT((MEMPOOL(dict_mpool2), MEMPOOL_LINKAGE(static)),CHAR_OPLIST), char_array_t, CHAR_OPLIST) +DICT_DEF2(char, char_array_t, M_OPEXTEND(CHAR_OPLIST,MEMPOOL(dict_mpool2), MEMPOOL_LINKAGE(static)), char_array_t, CHAR_OPLIST) #else DICT_DEF2(char, char_array_t, CHAR_OPLIST, char_array_t, CHAR_OPLIST) #endif @@ -248,7 +248,7 @@ test_dict_big(unsigned long n) /********************************************************************************************/ #ifdef USE_MEMPOOL -DICT_DEF2(str, string_t, M_OPLIST_CAT((MEMPOOL(dict_mpool3), MEMPOOL_LINKAGE(static)),STRING_OPLIST), string_t, STRING_OPLIST) +DICT_DEF2(str, string_t, M_OPEXTEND(STRING_OPLIST, MEMPOOL(dict_mpool3), MEMPOOL_LINKAGE(static)), string_t, STRING_OPLIST) #else DICT_DEF2(str, string_t, STRING_OPLIST, string_t, STRING_OPLIST) #endif diff --git a/m-core.h b/m-core.h index 5690d796..d53f18db 100644 --- a/m-core.h +++ b/m-core.h @@ -707,6 +707,7 @@ m_core_hash (const void *str, size_t length) #define M_HASH_DEFAULT(a) m_core_hash((const void*) &(a), sizeof (a)) #endif + /************************************************************/ /******************** METHODS handling **********************/ /************************************************************/ @@ -874,18 +875,21 @@ m_core_hash (const void *str, size_t length) CMP(strcmp), TYPE(const char *) ) /* From an oplist (...) return ... */ -#define M_OPLIST_FLAT(...) __VA_ARGS__ +#define M_OPFLAT(...) __VA_ARGS__ /* Concat two oplists in one. op1 will have higher priority to op2 */ -#define M_OPLIST_CAT(op1,op2) (M_OPLIST_FLAT op1, M_OPLIST_FLAT op2) +#define M_OPCAT(op1,op2) (M_OPFLAT op1, M_OPFLAT op2) /* Apply an oplist */ -#define M_OPLIST_APPLY(a, oplist) a oplist +#define M_OPAPPLY(a, oplist) a oplist + +/* Extend an oplist by adding some methods */ +#define M_OPEXTEND(op, ...) (__VA_ARGS__, M_OPFLAT op) /* Test if a method is present in an oplist. Return 0 or 1 */ #define M_TEST_METHOD_P(method, oplist) \ - M_BOOL(M_GET_METHOD (method, 0, M_OPLIST_FLAT oplist)) + M_BOOL(M_GET_METHOD (method, 0, M_OPFLAT oplist)) /* Perfom a preprocessing M_IF, if the method is present in the oplist. Example: M_IF_METHOD(HASH, oplist)(define function with HASH method, ) */ diff --git a/m-dict.h b/m-dict.h index b76aaa11..78177754 100644 --- a/m-dict.h +++ b/m-dict.h @@ -36,7 +36,7 @@ #define DICT_DEF2(name, key_type, key_oplist, value_type, value_oplist) \ TUPLE_DEF2(M_C(dict_pair_, name), (key, key_type, key_oplist), (value, value_type, value_oplist)) \ M_IF_METHOD(MEMPOOL, key_oplist)( \ - LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), M_OPLIST_CAT((MEMPOOL(M_GET_MEMPOOL key_oplist), MEMPOOL_LINKAGE(M_GET_MEMPOOL_LINKAGE key_oplist)),TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist, value_oplist))) \ + LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), M_OPEXTEND(TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist, value_oplist), MEMPOOL(M_GET_MEMPOOL key_oplist), MEMPOOL_LINKAGE(M_GET_MEMPOOL_LINKAGE key_oplist))) \ , \ LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist, value_oplist)) \ ) \ @@ -59,7 +59,7 @@ #define DICT_SET_DEF2(name, key_type, key_oplist) \ TUPLE_DEF2(M_C(dict_pair_, name), (key, key_type, key_oplist)) \ M_IF_METHOD(MEMPOOL, key_oplist)( \ - LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), M_OPLIST_CAT((MEMPOOL(M_GET_MEMPOOL key_oplist), MEMPOOL_LINKAGE(M_GET_MEMPOOL_LINKAGE key_oplist)),TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist))) \ + LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), M_OPEXTEND(TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist), MEMPOOL(M_GET_MEMPOOL key_oplist), MEMPOOL_LINKAGE(M_GET_MEMPOOL_LINKAGE key_oplist))) \ , \ LIST_DEF(M_C(dict_pair_, name), M_C3(dict_pair_,name,_t), TUPLE_OPLIST(M_C(dict_pair_, name), key_oplist)) \ ) \ diff --git a/m-tuple.h b/m-tuple.h index 7a5cf8a3..f3c73a2a 100644 --- a/m-tuple.h +++ b/m-tuple.h @@ -273,7 +273,7 @@ #define TUPLE_TEST_METHOD2_P(method, f, t, op) \ M_TEST_METHOD_P(method, op) #define TUPLE_TEST_METHOD_P(method, trio) \ - M_APPLY(TUPLE_TEST_METHOD2_P, method, M_OPLIST_FLAT trio) + M_APPLY(TUPLE_TEST_METHOD2_P, method, M_OPFLAT trio) #define TUPLE_ALL_CMP(...) \ M_REDUCE2(TUPLE_TEST_METHOD_P, M_AND, CMP, __VA_ARGS__) diff --git a/m-variant.h b/m-variant.h index 3f6c1753..057e28f4 100644 --- a/m-variant.h +++ b/m-variant.h @@ -418,7 +418,7 @@ #define VARIANTI_TEST_METHOD2_P(method, f, t, op) \ M_TEST_METHOD_P(method, op) #define VARIANTI_TEST_METHOD_P(method, trio) \ - M_APPLY(VARIANTI_TEST_METHOD2_P, method, M_OPLIST_FLAT trio) + M_APPLY(VARIANTI_TEST_METHOD2_P, method, M_OPFLAT trio) #define VARIANTI_ALL_EQUAL(...) \ M_REDUCE2(VARIANTI_TEST_METHOD_P, M_AND, EQUAL, __VA_ARGS__) diff --git a/tests/test-mrbtree.c b/tests/test-mrbtree.c index d5db3a7a..07cf0938 100644 --- a/tests/test-mrbtree.c +++ b/tests/test-mrbtree.c @@ -42,7 +42,7 @@ static void uint_get_str(string_t str, unsigned int u, bool append) START_COVERAGE -RBTREE_DEF(uint, unsigned int, M_OPLIST_CAT((IN_STR(uint_in_str M_IPTR), OUT_STR(uint_out_str), GET_STR(uint_get_str)) , M_DEFAULT_OPLIST) ) +RBTREE_DEF(uint, unsigned int, M_OPEXTEND(M_DEFAULT_OPLIST, IN_STR(uint_in_str M_IPTR), OUT_STR(uint_out_str), GET_STR(uint_get_str)) ) RBTREE_DEF(float, float) END_COVERAGE