From 25497bd96fe15e29571871ec5a5511f08f0bcc41 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 7 Feb 2021 23:02:02 +0100 Subject: [PATCH] Factorize code so that _DEF macros use _DEF_AS ones --- m-array.h | 6 +--- m-bptree.h | 24 +++------------- m-buffer.h | 18 ++---------- m-concurrent.h | 28 +++++++----------- m-deque.h | 6 +--- m-dict.h | 68 ++++++++++++++++---------------------------- m-funcobj.h | 8 ++---- m-i-list.h | 6 +--- m-i-shared.h | 6 +--- m-list.h | 12 ++------ m-mempool.h | 4 +-- m-prioqueue.h | 6 +--- m-rbtree.h | 8 +----- m-shared.h | 18 ++---------- m-snapshot.h | 18 ++---------- m-tuple.h | 4 +-- m-variant.h | 4 +-- tests/test-mbptree.c | 2 +- 18 files changed, 61 insertions(+), 185 deletions(-) diff --git a/m-array.h b/m-array.h index 5a80940a..2e38d0d4 100644 --- a/m-array.h +++ b/m-array.h @@ -30,11 +30,7 @@ /* Define a dynamic array of the given type and its associated functions. USAGE: ARRAY_DEF(name, type [, oplist_of_the_type]) */ #define ARRAY_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - ARRAYI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t), M_C(name,_it_t) ), \ - (name, __VA_ARGS__, M_C(name,_t), M_C(name,_it_t)))) \ - M_END_PROTECTED_CODE + ARRAY_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a dynamic array of the given type and its associated functions diff --git a/m-bptree.h b/m-bptree.h index a8f9dae4..377a59f6 100644 --- a/m-bptree.h +++ b/m-bptree.h @@ -35,11 +35,7 @@ BPTREE_DEF2(name, N, key_t, value_t) */ #define BPTREE_DEF2(name, N, key_type, ...) \ - M_BEGIN_PROTECTED_CODE \ - BPTREEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, N, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), 1, 0, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, N, key_type, __VA_ARGS__, 1, 0, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + BPTREE_DEF2_AS(name, M_C(name,_t), M_C(name,_it_t), M_C(name, _itref_t), N, key_type, __VA_ARGS__) /* Define a B+tree of size 'N' that maps a 'key' to a 'value' @@ -61,11 +57,7 @@ with its associated functions USAGE: BPTREE_DEF(name, N, type, [, oplist_of_the_type]) */ #define BPTREE_DEF(name, N, ...) \ - M_BEGIN_PROTECTED_CODE \ - BPTREEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, N, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), 0, 0, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, N, __VA_ARGS__, __VA_ARGS__, 0, 0, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + BPTREE_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), N, __VA_ARGS__) /* Define a B+tree of a given type, of size N. @@ -88,11 +80,7 @@ BPTREE_MULTI_DEF2(name, N, key_t, value_t) */ #define BPTREE_MULTI_DEF2(name, N, key_type, ...) \ - M_BEGIN_PROTECTED_CODE \ - BPTREEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, N, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), 1, 1, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, N, key_type, __VA_ARGS__, 1, 1, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + BPTREE_MULTI_DEF2_AS(name, M_C(name,_t), M_C(name,_it_t), M_C(name,_itref_t), N, key_type, __VA_ARGS__) /* Define a B+tree of size 'N' that maps a 'key' to a 'value', @@ -116,11 +104,7 @@ with its associated functions USAGE: BPTREE_MULTI_DEF(name, N, type, [, oplist_of_the_type]) */ #define BPTREE_MULTI_DEF(name, N, ...) \ - M_BEGIN_PROTECTED_CODE \ - BPTREEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, N, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), 0, 1, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, N, __VA_ARGS__, __VA_ARGS__, 0, 1, M_C(name, _t), M_C(name, _node_ct), M_C(name, _pit_ct), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_BEGIN_PROTECTED_CODE + BPTREE_MULTI_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), N, __VA_ARGS__) /* Define a B+tree of a given type, of size N. diff --git a/m-buffer.h b/m-buffer.h index e5d56a71..068d02cb 100644 --- a/m-buffer.h +++ b/m-buffer.h @@ -54,11 +54,7 @@ typedef enum { /* Define a lock based buffer. USAGE: BUFFER_DEF(name, type, size_of_buffer_or_0, policy[, oplist]) */ #define BUFFER_DEF(name, type, m_size, ... ) \ - M_BEGIN_PROTECTED_CODE \ - BUFFERI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, type, m_size,__VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(type)(), M_C(name,_t)), \ - (name, type, m_size,__VA_ARGS__, M_C(name,_t)))) \ - M_END_PROTECTED_CODE + BUFFER_DEF_AS(name, M_C(name, _t), type, m_size, __VA_ARGS__) /* Define a lock based buffer @@ -85,11 +81,7 @@ typedef enum { Size of created queue can only a power of 2. */ #define QUEUE_MPMC_DEF(name, type, ...) \ - M_BEGIN_PROTECTED_CODE \ - QUEUEI_MPMC_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, type, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(type)(), M_C(name,_t)), \ - (name, type, __VA_ARGS__, M_C(name,_t)))) \ - M_END_PROTECTED_CODE + QUEUE_MPMC_DEF_AS(name, M_C(name,_t), type, __VA_ARGS__) /* Define a nearly lock-free queue for Many Producer Many Consummer @@ -110,11 +102,7 @@ typedef enum { Size of created queue can only a power of 2. */ #define QUEUE_SPSC_DEF(name, type, ...) \ - M_BEGIN_PROTECTED_CODE \ - QUEUEI_SPSC_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, type, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(type)(), M_C(name,_t)), \ - (name, type, __VA_ARGS__, M_C(name,_t)))) \ - M_END_PROTECTED_CODE + QUEUE_SPSC_DEF_AS(name, M_C(name, _t), type, __VA_ARGS__) /* Define a wait-free queue for Single Producer Single Consummer diff --git a/m-concurrent.h b/m-concurrent.h index 2a1e788c..d7eaecf8 100644 --- a/m-concurrent.h +++ b/m-concurrent.h @@ -33,11 +33,7 @@ based on the given container. USAGE: CONCURRENT_DEF(name, type [, oplist_of_the_type]) */ #define CONCURRENT_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - CONCURRENTI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t) ), \ - (name, __VA_ARGS__, M_C(name,_t) ))) \ - M_END_PROTECTED_CODE + CONCURRENT_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a protected concurrent container and its associated functions @@ -51,24 +47,12 @@ M_END_PROTECTED_CODE -/* Define the oplist of a protected concurrent container given its name and its oplist. - USAGE: CONCURRENT_OPLIST(name[, oplist of the type]) */ -#define CONCURRENT_OPLIST(...) \ - CONCURRENTI_OPLIST_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((__VA_ARGS__, M_DEFAULT_OPLIST), \ - (__VA_ARGS__ ))) - - /* Define a protected concurrent container and its associated functions based on its given container. Operations that perform only read of the container can be done in parallel. USAGE: CONCURRENT_RP_DEF(name, type [, oplist_of_the_type]) */ #define CONCURRENT_RP_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - CONCURRENTI_RP_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t) ), \ - (name, __VA_ARGS__, M_C(name,_t) ))) \ - M_END_PROTECTED_CODE + CONCURRENT_RP_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a protected concurrent container and its associated functions @@ -84,6 +68,14 @@ M_END_PROTECTED_CODE +/* Define the oplist of a protected concurrent container given its name and its oplist. + USAGE: CONCURRENT_OPLIST(name[, oplist of the type]) */ +#define CONCURRENT_OPLIST(...) \ + CONCURRENTI_OPLIST_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ + ((__VA_ARGS__, M_DEFAULT_OPLIST), \ + (__VA_ARGS__ ))) + + /********************************** INTERNAL ************************************/ /* Deferred evaluation for the oplist definition, diff --git a/m-deque.h b/m-deque.h index a6f0871a..da87fde7 100644 --- a/m-deque.h +++ b/m-deque.h @@ -30,11 +30,7 @@ /* Define a deque of a given type and its associated functions. USAGE: DEQUE_DEF(name, type [, oplist_of_the_type]) */ #define DEQUE_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - DEQUEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t), M_C(name,_it_t), M_C(name, _node_ct) ), \ - (name, __VA_ARGS__, M_C(name,_t), M_C(name,_it_t), M_C(name, _node_ct)))) \ - M_END_PROTECTED_CODE + DEQUE_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a deque of a given type and its associated functions. diff --git a/m-dict.h b/m-dict.h index eb3a716f..76818932 100644 --- a/m-dict.h +++ b/m-dict.h @@ -37,11 +37,7 @@ DICT_DEF2(name, key_type, value_type) */ #define DICT_DEF2(name, key_type, ...) \ - M_BEGIN_PROTECTED_CODE \ - DICTI_DEF2_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(),M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, key_type, __VA_ARGS__,M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + DICT_DEF2_AS(name, M_C(name,_t), M_C(name,_it_t), M_C(name,_itref_t), key_type, __VA_ARGS__) /* Define a dictionary associating the key key_type to the value value_type and its associated functions. @@ -51,7 +47,7 @@ OR DICT_DEF2_AS(name, name_t, it_t, itref_t, key_type, value_type) */ -#define DICT_DEF2_AS(name, name_it, it_t, itref_t, key_type, ...) \ +#define DICT_DEF2_AS(name, name_t, it_t, itref_t, key_type, ...) \ M_BEGIN_PROTECTED_CODE \ DICTI_DEF2_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_t, it_t, itref_t ), \ @@ -68,11 +64,7 @@ DICT_STOREHASH_DEF2(name, key_type[, key_oplist], value_type[, value_oplist]) */ #define DICT_STOREHASH_DEF2(name, key_type, ...) \ - M_BEGIN_PROTECTED_CODE \ - DICTI_SHASH_DEF2_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(),M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, key_type, __VA_ARGS__,M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + DICT_STOREHASH_DEF2_AS(name, M_C(name,_t), M_C(name,_it_t), M_C(name,_itref_t), key_type, __VA_ARGS__) /* Define a dictionary asssociating the key key_type to the value value_type and its associated functions. @@ -80,15 +72,15 @@ It stores the computed hash value, avoiding the need of recomputing it but increasing memory consumption. USAGE: - DICT_STOREHASH_DEF2_AS(name, name_it, it_t, itref_t, key_type[, key_oplist], value_type[, value_oplist]) + DICT_STOREHASH_DEF2_AS(name, name_t, it_t, itref_t, key_type[, key_oplist], value_type[, value_oplist]) OR - DICT_STOREHASH_DEF2_AS(name, name_it, it_t, itref_t, key_type[, key_oplist], value_type[, value_oplist]) + DICT_STOREHASH_DEF2_AS(name, name_t, it_t, itref_t, key_type[, key_oplist], value_type[, value_oplist]) */ -#define DICT_STOREHASH_DEF2_AS(name, name_it, it_t, itref_t, key_type, ...) \ +#define DICT_STOREHASH_DEF2_AS(name, name_t, it_t, itref_t, key_type, ...) \ M_BEGIN_PROTECTED_CODE \ DICTI_SHASH_DEF2_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_it, it_t, itref_t ), \ - (name, key_type, __VA_ARGS__, name_it, it_t, itref_t ))) \ + ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_t, it_t, itref_t ), \ + (name, key_type, __VA_ARGS__, name_t, it_t, itref_t ))) \ M_END_PROTECTED_CODE @@ -101,11 +93,7 @@ DICT_OA_DEF2(name, key_type, value_type) */ #define DICT_OA_DEF2(name, key_type, ...) \ - M_BEGIN_PROTECTED_CODE \ - DICTI_OA_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(),M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, key_type, __VA_ARGS__,M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + DICT_OA_DEF2_AS(name, M_C(name,_t), M_C(name,_it_t), M_C(name,_itref_t), key_type, __VA_ARGS__) /* Define a dictionary associating the key key_type to the value value_type @@ -113,15 +101,15 @@ as the given name name_t with its associated functions. KEY_OPLIST needs the operators OOR_EQUAL & OOR_SET. USAGE: - DICT_OA_DEF2_AS(name, name_it, it_t, itref_t, key_type, key_oplist, value_type, value_oplist) + DICT_OA_DEF2_AS(name, name_t, it_t, itref_t, key_type, key_oplist, value_type, value_oplist) OR - DICT_OA_DEF2_AS(name, name_it, it_t, itref_t, key_type, value_type) + DICT_OA_DEF2_AS(name, name_t, it_t, itref_t, key_type, value_type) */ -#define DICT_OA_DEF2_AS(name, name_it, it_t, itref_t, key_type, ...) \ +#define DICT_OA_DEF2_AS(name, name_t, it_t, itref_t, key_type, ...) \ M_BEGIN_PROTECTED_CODE \ DICTI_OA_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_it, it_t, itref_t ), \ - (name, key_type, __VA_ARGS__, name_it, it_t, itref_t ))) \ + ((name, key_type, M_GLOBAL_OPLIST_OR_DEF(key_type)(), __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_t, it_t, itref_t ), \ + (name, key_type, __VA_ARGS__, name_t, it_t, itref_t ))) \ M_END_PROTECTED_CODE @@ -130,23 +118,19 @@ USAGE: DICT_SET_DEF(name, key_type[, key_oplist]) */ #define DICT_SET_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - DICTI_SET_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(),M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t)), \ - (name, __VA_ARGS__,M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t)))) \ - M_END_PROTECTED_CODE + DICT_SET_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a set of the key key_type and its associated functions. as the given name name_t with its associated functions. The set is unordered. - USAGE: DICT_SET_DEF_AS(name, name_it, it_t, key_type[, key_oplist]) + USAGE: DICT_SET_DEF_AS(name, name_t, it_t, key_type[, key_oplist]) */ -#define DICT_SET_DEF_AS(name, name_it, it_t, ...) \ +#define DICT_SET_DEF_AS(name, name_t, it_t, ...) \ M_BEGIN_PROTECTED_CODE \ DICTI_SET_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_it, it_t, M_C(name, _itref_ct) ), \ - (name, __VA_ARGS__, name_it, it_t, M_C(name, _itref_ct) ))) \ + ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_t, it_t, M_C(name, _itref_ct) ), \ + (name, __VA_ARGS__, name_t, it_t, M_C(name, _itref_ct) ))) \ M_END_PROTECTED_CODE @@ -156,24 +140,20 @@ USAGE: DICT_OASET_DEF(name, key_type[, key_oplist]) */ #define DICT_OASET_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - DICTI_OASET_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ), \ - (name, __VA_ARGS__,M_C(name, _t), M_C(name, _it_t), M_C(name, _itref_t) ))) \ - M_END_PROTECTED_CODE + DICT_OASET_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a set of the key key_type with an Open Addressing implementation and its associated functions. as the given name name_t with its associated functions. The set is unordered. - USAGE: DICT_OASET_DEF_AS(name, name_it, it_t, key_type[, key_oplist]) + USAGE: DICT_OASET_DEF_AS(name, name_t, it_t, key_type[, key_oplist]) */ -#define DICT_OASET_DEF_AS(name, name_it, it_t, ...) \ +#define DICT_OASET_DEF_AS(name, name_t, it_t, ...) \ M_BEGIN_PROTECTED_CODE \ DICTI_OASET_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_it, it_t, M_C(name, _itref_ct) ), \ - (name, __VA_ARGS__, name_it, it_t, M_C(name, _itref_ct) ))) \ + ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), name_t, it_t, M_C(name, _itref_ct) ), \ + (name, __VA_ARGS__, name_t, it_t, M_C(name, _itref_ct) ))) \ M_END_PROTECTED_CODE diff --git a/m-funcobj.h b/m-funcobj.h index 91350200..ebe666ed 100644 --- a/m-funcobj.h +++ b/m-funcobj.h @@ -33,9 +33,7 @@ * FUNC_OBJ_ITF_DEF(name, retcode type, type of param1, type of param 2, ...) */ #define FUNC_OBJ_ITF_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - M_IF_NARGS_EQ1(__VA_ARGS__)(FUNCOBJI_ITF_NO_PARAM_DEF, FUNCOBJI_ITF_PARAM_DEF)(name, M_C(name, _t), __VA_ARGS__) \ - M_END_PROTECTED_CODE + FUNC_OBJ_ITF_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a function object interface of name 'name' @@ -68,9 +66,7 @@ * FUNC_OBJ_INS_DEF(name, base_name, (param1, ...), { return param1 * self->member1 }, (member1, int), ...) */ #define FUNC_OBJ_INS_DEF(name, base_name, param_list, ...) \ - M_BEGIN_PROTECTED_CODE \ - M_IF_NARGS_EQ1(__VA_ARGS__)(FUNCOBJI_INS_NO_ATTR_DEF, FUNCOBJI_INS_ATTR_DEF)(name, M_C(name, _t), base_name, param_list, __VA_ARGS__) \ - M_END_PROTECTED_CODE + FUNC_OBJ_INS_DEF_AS(name, M_C(name,_t), base_name, param_list, __VA_ARGS__) /* Define a function object instance of name 'name' based on the interface 'base_name' diff --git a/m-i-list.h b/m-i-list.h index dc5ed753..b939ba8b 100644 --- a/m-i-list.h +++ b/m-i-list.h @@ -47,11 +47,7 @@ USAGE: ILIST_DEF(name, type [, oplist_of_the_type]) */ #define ILIST_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - ILISTI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t), M_C(name, _it_t) ), \ - (name, __VA_ARGS__, M_C(name, _t), M_C(name, _it_t) ))) \ - M_END_PROTECTED_CODE + ILIST_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a doubly-linked intrusive list of a given type diff --git a/m-i-shared.h b/m-i-shared.h index 45b17acc..56b2b3e6 100644 --- a/m-i-shared.h +++ b/m-i-shared.h @@ -58,11 +58,7 @@ M_BEGIN_PROTECTED_CODE /* Define the intrusive shared pointer type and its static inline functions. USAGE: ISHARED_PTR_DEF(name, type, [, oplist]) */ #define ISHARED_PTR_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - ISHAREDI_PTR_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t) ), \ - (name, __VA_ARGS__ , M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + ISHARED_PTR_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define the intrusive shared pointer type and its static inline functions diff --git a/m-list.h b/m-list.h index 330cde11..b5743ef6 100644 --- a/m-list.h +++ b/m-list.h @@ -30,11 +30,7 @@ /* Define a singly linked list of a given type. USAGE: LIST_DEF(name, type [, oplist_of_the_type]) */ #define LIST_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - LISTI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t), M_C(name, _it_t) ), \ - (name, __VA_ARGS__, M_C(name,_t), M_C(name, _it_t) ))) \ - M_END_PROTECTED_CODE + LIST_DEF_AS(name, M_C(name, _t), M_C(name, _it_t), __VA_ARGS__) /* Define a singly linked list of a given type @@ -51,11 +47,7 @@ /* Define a singly linked list of a given type allowing both push. USAGE: LIST_DUAL_PUSH_DEF_AS(name, name_t, type [, oplist_of_the_type]) */ #define LIST_DUAL_PUSH_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - LISTI_DUAL_PUSH_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t), M_C(name, _it_t) ), \ - (name, __VA_ARGS__, M_C(name,_t), M_C(name, _it_t) ))) \ - M_END_PROTECTED_CODE + LIST_DUAL_PUSH_DEF_AS(name, M_C(name,_t), M_C(name, _it_t), __VA_ARGS__) /* Define a singly linked list of a given type allowing both push. diff --git a/m-mempool.h b/m-mempool.h index 88fa3e61..684af13f 100644 --- a/m-mempool.h +++ b/m-mempool.h @@ -40,9 +40,7 @@ NOTE: Can not use m-list since it may be expanded from LIST_DEF */ #define MEMPOOL_DEF(name, type) \ - M_BEGIN_PROTECTED_CODE \ - MEMPOOL_DEF_P2(name, type, M_C(name, _t) ) \ - M_END_PROTECTED_CODE + MEMPOOL_DEF_AS(name, M_C(name,_t), type) /* Fast Fixed Size thread unsafe allocator based on memory region. diff --git a/m-prioqueue.h b/m-prioqueue.h index 1348d948..286b4c0f 100644 --- a/m-prioqueue.h +++ b/m-prioqueue.h @@ -33,11 +33,7 @@ /* Define a prioqueue of a given type and its associated functions. USAGE: PRIOQUEUE_DEF(name, type [, oplist_of_the_type]) */ #define PRIOQUEUE_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - PRIOQUEUEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name,_t), M_C(name,_it_t) ), \ - (name, __VA_ARGS__, M_C(name,_t), M_C(name,_it_t)))) \ - M_END_PROTECTED_CODE + PRIOQUEUE_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a prioqueue of a given type and its associated functions. diff --git a/m-rbtree.h b/m-rbtree.h index b0f8ca6a..df4a287f 100644 --- a/m-rbtree.h +++ b/m-rbtree.h @@ -30,13 +30,7 @@ /* Define a Red/Black binary tree of a given type. USAGE: RBTREE_DEF(name, type [, oplist_of_the_type]) */ #define RBTREE_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - RBTREEI_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), \ - M_C(name, _t), M_C(name, _node_ct), M_C(name, _it_t)), \ - (name, __VA_ARGS__ , \ - M_C(name, _t), M_C(name, _node_ct), M_C(name, _it_t)))) \ - M_END_PROTECTED_CODE + RBTREE_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define a Red/Black binary tree of a given type diff --git a/m-shared.h b/m-shared.h index 478c0a41..0228cc26 100644 --- a/m-shared.h +++ b/m-shared.h @@ -42,11 +42,7 @@ M_BEGIN_PROTECTED_CODE /* Define shared pointer and its function. USAGE: SHARED_PTR_DEF(name, type, [, oplist]) */ #define SHARED_PTR_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SHAREDI_PTR_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), SHAREDI_ATOMIC_OPLIST, M_C(name, _t) ), \ - (name, __VA_ARGS__ , SHAREDI_ATOMIC_OPLIST, M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + SHARED_PTR_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define shared pointer and its function @@ -63,11 +59,7 @@ M_BEGIN_PROTECTED_CODE /* Define relaxed shared pointer and its function (thread unsafe). USAGE: SHARED_PTR_RELAXED_DEF(name, type, [, oplist]) */ #define SHARED_PTR_RELAXED_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SHAREDI_PTR_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), SHAREDI_INTEGER_OPLIST, M_C(name, _t) ), \ - (name, __VA_ARGS__, SHAREDI_INTEGER_OPLIST, M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + SHARED_PTR_RELAXED_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define relaxed shared pointer and its function (thread unsafe) @@ -85,11 +77,7 @@ M_BEGIN_PROTECTED_CODE This is a bounded pool of resource shared by multiple owners. USAGE: SHARED_RESOURCE_DEF(name, type, [, oplist]) */ #define SHARED_RESOURCE_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SHAREDI_RESOURCE_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t), M_C(name, _it_t) ), \ - (name, __VA_ARGS__, M_C(name, _t), M_C(name, _it_t) ))) \ - M_END_PROTECTED_CODE + SHARED_RESOURCE_DEF_AS(name, M_C(name,_t), M_C(name,_it_t), __VA_ARGS__) /* Define shared resource and its function diff --git a/m-snapshot.h b/m-snapshot.h index feb77f29..991a331c 100644 --- a/m-snapshot.h +++ b/m-snapshot.h @@ -34,11 +34,7 @@ M_BEGIN_PROTECTED_CODE /* Define a Single Producer Single Consummer snapshot and its functions USAGE: SNAPSHOT_SPSC_DEF(name, type[, oplist]) */ #define SNAPSHOT_SPSC_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SNAPSHOTI_SPSC_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t) ), \ - (name, __VA_ARGS__ , M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + SNAPSHOT_SPSC_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a Single Producer Single Consummer snapshot and its functions @@ -55,11 +51,7 @@ M_BEGIN_PROTECTED_CODE /* Define a Single Producer Multiple Consummer snapshot and its functions USAGE: SNAPSHOT_SPMC_DEF(name, type[, oplist]) */ #define SNAPSHOT_SPMC_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SNAPSHOTI_SPMC_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t) ), \ - (name, __VA_ARGS__ , M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + SNAPSHOT_SPMC_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a Single Producer Multiple Consummer snapshot and its functions @@ -76,11 +68,7 @@ M_BEGIN_PROTECTED_CODE /* Define a Multiple Producer Multiple Consummer snapshot and its functions USAGE: SNAPSHOT_MPMC_DEF(name, type[, oplist]) */ #define SNAPSHOT_MPMC_DEF(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - SNAPSHOTI_MPMC_DEF_P1(M_IF_NARGS_EQ1(__VA_ARGS__) \ - ((name, __VA_ARGS__, M_GLOBAL_OPLIST_OR_DEF(__VA_ARGS__)(), M_C(name, _t) ), \ - (name, __VA_ARGS__ , M_C(name, _t) ))) \ - M_END_PROTECTED_CODE + SNAPSHOT_MPMC_DEF_AS(name, M_C(name,_t), __VA_ARGS__) /* Define a Multiple Producer Multiple Consummer snapshot and its functions diff --git a/m-tuple.h b/m-tuple.h index e46fdc8a..3252e5f8 100644 --- a/m-tuple.h +++ b/m-tuple.h @@ -33,9 +33,7 @@ USAGE: TUPLE_DEF2(name, [(field1, type1[, oplist1]), (field2, type2[, oplist2]), ...] ) */ #define TUPLE_DEF2(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - TUPLEI_DEF2_P1( (name, M_C(name, _t) TUPLEI_INJECT_GLOBAL(__VA_ARGS__)) ) \ - M_END_PROTECTED_CODE + TUPLE_DEF2_AS(name, M_C(name,_t), __VA_ARGS__) /* Define the tuple type and functions diff --git a/m-variant.h b/m-variant.h index 71ce38de..3c246a44 100644 --- a/m-variant.h +++ b/m-variant.h @@ -34,9 +34,7 @@ USAGE: VARIANT_DEF2(name, [(field1, type1, oplist1), (field2, type2, oplist2), ...] ) */ #define VARIANT_DEF2(name, ...) \ - M_BEGIN_PROTECTED_CODE \ - VARIANTI_DEF2_P1( (name, M_C(name, _t) VARIANTI_INJECT_GLOBAL(__VA_ARGS__)) ) \ - M_END_PROTECTED_CODE + VARIANT_DEF2_AS(name, M_C(name,_t), __VA_ARGS__) /* Define the variant type and functions diff --git a/tests/test-mbptree.c b/tests/test-mbptree.c index 53e1ae3c..7fbdbde7 100644 --- a/tests/test-mbptree.c +++ b/tests/test-mbptree.c @@ -562,7 +562,7 @@ test_multiset(void) for(multiset_it_from(it, b, k); multiset_it_while_p(it, k); multiset_next(it)) { - const multiset_itref_t *ref = multiset_cref(it); + const int *ref = multiset_cref(it); assert(*ref == k); j++; }