Now it is possible to have opaque collections

PUBLIC and PRIVATE are back
This commit is contained in:
Leonardo Vencovsky committed 2020-06-11 00:39:56 -03:00
1 parent 2b8f778c59
commit f8607e8cdc
20 files changed
+524 -101

No files matched your search

+32 -5
View File
@@ -43,19 +43,39 @@
/**
* Core BitSet implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_BITSET_CORE(PARAMS) \
CMC_CMC_BITSET_CORE_HEADER(PARAMS) \
#define CMC_CMC_BITSET_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_BITSET_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_BITSET_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_BITSET_CORE_STRUCT(PARAMS) \
CMC_CMC_BITSET_CORE_HEADER(PARAMS)
#define CMC_CMC_BITSET_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_BITSET_CORE_SOURCE(PARAMS)
#define CMC_CMC_BITSET_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_BITSET_CORE_HEADER(PARAMS)
#define CMC_CMC_BITSET_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_BITSET_CORE_STRUCT(PARAMS) \
CMC_CMC_BITSET_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_BITSET_CORE_STRUCT(PARAMS) CMC_CMC_BITSET_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS))
#define CMC_CMC_BITSET_CORE_HEADER(PARAMS) CMC_CMC_BITSET_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS))
#define CMC_CMC_BITSET_CORE_SOURCE(PARAMS) CMC_CMC_BITSET_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_BITSET_CORE_HEADER_(PFX, SNAME) \
#define CMC_CMC_BITSET_CORE_STRUCT_(PFX, SNAME) \
\
/* BitSet Structure */ \
struct SNAME \
@@ -74,7 +94,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_BITSET_CORE_HEADER_(PFX, SNAME) \
\
/* BitSet Iterator */ \
struct CMC_DEF_ITER(SNAME) \
@@ -157,6 +182,8 @@
struct SNAME *CMC_(PFX, _new_custom)(size_t n_bits, struct CMC_ALLOC_NODE_NAME * alloc, \
struct CMC_CALLBACKS_NAME * callbacks) \
{ \
CMC_CALLBACKS_MAYBE_UNUSED(callbacks); \
\
if (n_bits < 1) \
return NULL; \
\
+31 -9
View File
@@ -36,17 +36,34 @@
* ------------------------------------------------------------------------- */
#include "../cor/core.h"
/* -------------------------------------------------------------------------
* Deque Specific
* ------------------------------------------------------------------------- */
/**
* Core Deque implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_DEQUE_CORE(PARAMS) \
CMC_CMC_DEQUE_CORE_HEADER(PARAMS) \
#define CMC_CMC_DEQUE_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_DEQUE_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_DEQUE_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_DEQUE_CORE_STRUCT(PARAMS) \
CMC_CMC_DEQUE_CORE_HEADER(PARAMS)
#define CMC_CMC_DEQUE_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_DEQUE_CORE_SOURCE(PARAMS)
#define CMC_CMC_DEQUE_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_DEQUE_CORE_HEADER(PARAMS)
#define CMC_CMC_DEQUE_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_DEQUE_CORE_STRUCT(PARAMS) \
CMC_CMC_DEQUE_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_DEQUE_CORE_STRUCT(PARAMS) \
CMC_CMC_DEQUE_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_DEQUE_CORE_HEADER(PARAMS) \
CMC_CMC_DEQUE_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -54,9 +71,9 @@
CMC_CMC_DEQUE_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_DEQUE_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_DEQUE_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Deque Structure */ \
struct SNAME \
@@ -86,7 +103,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_DEQUE_CORE_HEADER_(PFX, SNAME, V) \
\
struct CMC_DEF_FVAL(SNAME) \
{ \
+34 -5
View File
@@ -38,11 +38,35 @@
/**
* Core HashBidiMap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HASHBIDIMAP_CORE(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_HASHBIDIMAP_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_HASHBIDIMAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HASHBIDIMAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHBIDIMAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HASHBIDIMAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_HASHBIDIMAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_ENTRY(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_HASHBIDIMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHBIDIMAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HASHBIDIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
#define CMC_CMC_HASHBIDIMAP_CORE_HEADER(PARAMS) \
CMC_CMC_HASHBIDIMAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
@@ -52,9 +76,9 @@
CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHBIDIMAP_CORE_HEADER_(PFX, SNAME, K, V) \
#define CMC_CMC_HASHBIDIMAP_CORE_STRUCT_(PFX, SNAME, K, V) \
\
/* HashBidiMap Structure */ \
struct SNAME \
@@ -114,7 +138,12 @@
/* ref[0] is relative to K -> V */ \
/* ref[1] is relative to V -> K */ \
struct CMC_DEF_ENTRY(SNAME) * *ref[2]; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHBIDIMAP_CORE_HEADER_(PFX, SNAME, K, V) \
\
/* Key struct function table */ \
struct CMC_DEF_FKEY(SNAME) \
+35 -7
View File
@@ -31,11 +31,34 @@
/**
* Core HashMap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HASHMAP_CORE(PARAMS) \
CMC_CMC_HASHMAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_HASHMAP_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_HASHMAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HASHMAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HASHMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HASHMAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_HASHMAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_ENTRY(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_HASHMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HASHMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HASHMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
#define CMC_CMC_HASHMAP_CORE_HEADER(PARAMS) \
CMC_CMC_HASHMAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
@@ -45,11 +68,11 @@
CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMAP_CORE_HEADER_(PFX, SNAME, K, V) \
#define CMC_CMC_HASHMAP_CORE_STRUCT_(PFX, SNAME, K, V) \
\
/* Hashmap Structure */ \
/* HashMap Structure */ \
struct SNAME \
{ \
/* Array of Entries */ \
@@ -80,7 +103,7 @@
CMC_CALLBACKS_DECL; \
}; \
\
/* Hashmap Entry */ \
/* HashMap Entry */ \
struct CMC_DEF_ENTRY(SNAME) \
{ \
/* Entry Key */ \
@@ -95,7 +118,12 @@
\
/* The sate of this node (DELETED, EMPTY, FILLED) */ \
enum cmc_entry_state state; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMAP_CORE_HEADER_(PFX, SNAME, K, V) \
\
/* Key struct function table */ \
struct CMC_DEF_FKEY(SNAME) \
+34 -5
View File
@@ -56,11 +56,35 @@
/**
* Core HashMultiMap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HASHMULTIMAP_CORE(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_HASHMULTIMAP_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_HASHMULTIMAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HASHMULTIMAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMULTIMAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HASHMULTIMAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_HASHMULTIMAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_ENTRY(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_HASHMULTIMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMULTIMAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HASHMULTIMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
#define CMC_CMC_HASHMULTIMAP_CORE_HEADER(PARAMS) \
CMC_CMC_HASHMULTIMAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
@@ -70,9 +94,9 @@
CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMULTIMAP_CORE_HEADER_(PFX, SNAME, K, V) \
#define CMC_CMC_HASHMULTIMAP_CORE_STRUCT_(PFX, SNAME, K, V) \
\
/* HashMultimap Structure */ \
struct SNAME \
@@ -119,7 +143,12 @@
\
/* Previous entry on the linked list */ \
struct CMC_DEF_ENTRY(SNAME) * prev; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMULTIMAP_CORE_HEADER_(PFX, SNAME, K, V) \
\
/* Key struct function table */ \
struct CMC_DEF_FKEY(SNAME) \
+33 -5
View File
@@ -38,11 +38,34 @@
/**
* Core HashMultiSet implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HASHMULTISET_CORE(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_HEADER(PARAMS) \
#define CMC_CMC_HASHMULTISET_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_HASHMULTISET_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HASHMULTISET_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMULTISET_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HASHMULTISET_CORE_SOURCE(PARAMS)
#define CMC_CMC_HASHMULTISET_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_ENTRY(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_HASHMULTISET_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHMULTISET_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HASHMULTISET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_HASHMULTISET_CORE_HEADER(PARAMS) \
CMC_CMC_HASHMULTISET_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -50,9 +73,9 @@
CMC_CMC_HASHMULTISET_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMULTISET_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_HASHMULTISET_CORE_STRUCT_(PFX, SNAME, V) \
\
/* HashMultiset Structure */ \
struct SNAME \
@@ -99,7 +122,12 @@
\
/* The sate of this node (DELETED, EMPTY, FILLED) */ \
enum cmc_entry_state state; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHMULTISET_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+32 -5
View File
@@ -31,11 +31,33 @@
/**
* Core HashSet implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HASHSET_CORE(PARAMS) \
CMC_CMC_HASHSET_CORE_HEADER(PARAMS) \
#define CMC_CMC_HASHSET_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_HASHSET_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HASHSET_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HASHSET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHSET_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHSET_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HASHSET_CORE_SOURCE(PARAMS)
#define CMC_CMC_HASHSET_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_ENTRY(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_HASHSET_CORE_HEADER(PARAMS)
#define CMC_CMC_HASHSET_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HASHSET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHSET_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HASHSET_CORE_STRUCT(PARAMS) \
CMC_CMC_HASHSET_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_HASHSET_CORE_HEADER(PARAMS) \
CMC_CMC_HASHSET_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -43,9 +65,9 @@
CMC_CMC_HASHSET_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHSET_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_HASHSET_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Hashset Structure */ \
struct SNAME \
@@ -86,7 +108,12 @@
\
/* The sate of this node (DELETED, EMPTY, FILLED) */ \
enum cmc_entry_state state; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HASHSET_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+31 -5
View File
@@ -42,11 +42,32 @@
/**
* Core Heap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_HEAP_CORE(PARAMS) \
CMC_CMC_HEAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_HEAP_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_HEAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_HEAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_HEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HEAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HEAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_HEAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_HEAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_HEAP_CORE_HEADER(PARAMS)
#define CMC_CMC_HEAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_HEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HEAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_HEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_HEAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_HEAP_CORE_HEADER(PARAMS) \
CMC_CMC_HEAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -54,9 +75,9 @@
CMC_CMC_HEAP_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_HEAP_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_HEAP_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Heap Structure */ \
struct SNAME \
@@ -84,7 +105,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_HEAP_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+32 -5
View File
@@ -28,11 +28,33 @@
/**
* Core IntervalHeap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_INTERVALHEAP_CORE(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_INTERVALHEAP_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_INTERVALHEAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_INTERVALHEAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_HEADER(PARAMS)
#define CMC_CMC_INTERVALHEAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_INTERVALHEAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_INTERVALHEAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_INTERVALHEAP_CORE_HEADER(PARAMS)
#define CMC_CMC_INTERVALHEAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_INTERVALHEAP_CORE_STRUCT(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_INTERVALHEAP_CORE_HEADER(PARAMS) \
CMC_CMC_INTERVALHEAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -40,9 +62,9 @@
CMC_CMC_INTERVALHEAP_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_INTERVALHEAP_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_INTERVALHEAP_CORE_STRUCT_(PFX, SNAME, V) \
\
/* IntervalHeap Structure */ \
struct SNAME \
@@ -71,7 +93,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_INTERVALHEAP_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+32 -5
View File
@@ -35,11 +35,33 @@
/**
* Core LinkedList implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_LINKEDLIST_CORE(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_HEADER(PARAMS) \
#define CMC_CMC_LINKEDLIST_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_LINKEDLIST_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_LINKEDLIST_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_HEADER(PARAMS)
#define CMC_CMC_LINKEDLIST_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_LINKEDLIST_CORE_SOURCE(PARAMS)
#define CMC_CMC_LINKEDLIST_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_LINKEDLIST_CORE_HEADER(PARAMS)
#define CMC_CMC_LINKEDLIST_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_LINKEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_LINKEDLIST_CORE_HEADER(PARAMS) \
CMC_CMC_LINKEDLIST_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -47,9 +69,9 @@
CMC_CMC_LINKEDLIST_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_LINKEDLIST_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_LINKEDLIST_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Linked List Structure */ \
struct SNAME \
@@ -87,7 +109,12 @@
\
/* Pointer to the previous node on the linked list */ \
struct CMC_DEF_NODE(SNAME) * prev; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_LINKEDLIST_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+31 -5
View File
@@ -50,11 +50,32 @@
/**
* Core List implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_LIST_CORE(PARAMS) \
CMC_CMC_LIST_CORE_HEADER(PARAMS) \
#define CMC_CMC_LIST_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_LIST_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_LIST_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_LIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LIST_CORE_HEADER(PARAMS)
#define CMC_CMC_LIST_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_LIST_CORE_SOURCE(PARAMS)
#define CMC_CMC_LIST_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_LIST_CORE_HEADER(PARAMS)
#define CMC_CMC_LIST_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_LIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LIST_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_LIST_CORE_STRUCT(PARAMS) \
CMC_CMC_LIST_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_LIST_CORE_HEADER(PARAMS) \
CMC_CMC_LIST_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -62,9 +83,9 @@
CMC_CMC_LIST_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_LIST_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_LIST_CORE_STRUCT_(PFX, SNAME, V) \
\
/* List Structure */ \
struct SNAME \
@@ -89,7 +110,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_LIST_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+31 -5
View File
@@ -50,11 +50,32 @@
/**
* Core Queue implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_QUEUE_CORE(PARAMS) \
CMC_CMC_QUEUE_CORE_HEADER(PARAMS) \
#define CMC_CMC_QUEUE_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_QUEUE_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_QUEUE_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_QUEUE_CORE_STRUCT(PARAMS) \
CMC_CMC_QUEUE_CORE_HEADER(PARAMS)
#define CMC_CMC_QUEUE_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_QUEUE_CORE_SOURCE(PARAMS)
#define CMC_CMC_QUEUE_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_QUEUE_CORE_HEADER(PARAMS)
#define CMC_CMC_QUEUE_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_QUEUE_CORE_STRUCT(PARAMS) \
CMC_CMC_QUEUE_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_QUEUE_CORE_STRUCT(PARAMS) \
CMC_CMC_QUEUE_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_QUEUE_CORE_HEADER(PARAMS) \
CMC_CMC_QUEUE_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -62,9 +83,9 @@
CMC_CMC_QUEUE_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_QUEUE_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_QUEUE_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Queue Structure */ \
struct SNAME \
@@ -95,7 +116,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_QUEUE_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+32 -5
View File
@@ -29,11 +29,33 @@
/**
* Core SortedList implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_SORTEDLIST_CORE(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_HEADER(PARAMS) \
#define CMC_CMC_SORTEDLIST_CORE(ACCESS, FILE, PARAMS) \
CMC_(CMC_(CMC_CMC_SORTEDLIST_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_SORTEDLIST_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_HEADER(PARAMS)
#define CMC_CMC_SORTEDLIST_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_SORTEDLIST_CORE_SOURCE(PARAMS)
#define CMC_CMC_SORTEDLIST_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_SORTEDLIST_CORE_HEADER(PARAMS)
#define CMC_CMC_SORTEDLIST_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_SORTEDLIST_CORE_STRUCT(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_SORTEDLIST_CORE_HEADER(PARAMS) \
CMC_CMC_SORTEDLIST_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -41,9 +63,9 @@
CMC_CMC_SORTEDLIST_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_SORTEDLIST_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_SORTEDLIST_CORE_STRUCT_(PFX, SNAME, V) \
\
/* List Structure */ \
struct SNAME \
@@ -71,7 +93,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_SORTEDLIST_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+31 -5
View File
@@ -35,11 +35,32 @@
/**
* Core Stack implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_STACK_CORE(PARAMS) \
CMC_CMC_STACK_CORE_HEADER(PARAMS) \
#define CMC_CMC_STACK_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_STACK_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_STACK_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_STACK_CORE_STRUCT(PARAMS) \
CMC_CMC_STACK_CORE_HEADER(PARAMS)
#define CMC_CMC_STACK_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_STACK_CORE_SOURCE(PARAMS)
#define CMC_CMC_STACK_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_STACK_CORE_HEADER(PARAMS)
#define CMC_CMC_STACK_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_STACK_CORE_STRUCT(PARAMS) \
CMC_CMC_STACK_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_STACK_CORE_STRUCT(PARAMS) \
CMC_CMC_STACK_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_STACK_CORE_HEADER(PARAMS) \
CMC_CMC_STACK_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -47,9 +68,9 @@
CMC_CMC_STACK_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_STACK_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_STACK_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Stack Structure */ \
struct SNAME \
@@ -74,7 +95,12 @@
\
/* Custom callback functions */ \
CMC_CALLBACKS_DECL; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_STACK_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
+33 -5
View File
@@ -26,11 +26,34 @@
/**
* Core TreeMap implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_TREEMAP_CORE(PARAMS) \
CMC_CMC_TREEMAP_CORE_HEADER(PARAMS) \
#define CMC_CMC_TREEMAP_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_TREEMAP_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_TREEMAP_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_TREEMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_TREEMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_TREEMAP_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_TREEMAP_CORE_SOURCE(PARAMS)
#define CMC_CMC_TREEMAP_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
struct CMC_DEF_NODE(CMC_PARAM_SNAME(PARAMS)); \
CMC_CMC_TREEMAP_CORE_HEADER(PARAMS)
#define CMC_CMC_TREEMAP_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_TREEMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_TREEMAP_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_TREEMAP_CORE_STRUCT(PARAMS) \
CMC_CMC_TREEMAP_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
#define CMC_CMC_TREEMAP_CORE_HEADER(PARAMS) \
CMC_CMC_TREEMAP_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_K(PARAMS), \
CMC_PARAM_V(PARAMS))
@@ -40,9 +63,9 @@
CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_TREEMAP_CORE_HEADER_(PFX, SNAME, K, V) \
#define CMC_CMC_TREEMAP_CORE_STRUCT_(PFX, SNAME, K, V) \
\
/* Treemap Structure */ \
struct SNAME \
@@ -89,7 +112,12 @@
\
/* Parent node */ \
struct CMC_DEF_NODE(SNAME) * parent; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_TREEMAP_CORE_HEADER_(PFX, SNAME, K, V) \
\
/* Key struct function table */ \
struct CMC_DEF_FKEY(SNAME) \
+31 -5
View File
@@ -26,11 +26,32 @@
/**
* Core TreeSet implementation
*
* \param ACCESS Either PUBLIC or PRIVATE
* \param FILE Either HEADER or SOURCE
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V)
*/
#define CMC_CMC_TREESET_CORE(PARAMS) \
CMC_CMC_TREESET_CORE_HEADER(PARAMS) \
#define CMC_CMC_TREESET_CORE(ACCESS, FILE, PARAMS) CMC_(CMC_(CMC_CMC_TREESET_CORE_, ACCESS), CMC_(_, FILE))(PARAMS)
/* PRIVATE or PUBLIC solver */
#define CMC_CMC_TREESET_CORE_PUBLIC_HEADER(PARAMS) \
CMC_CMC_TREESET_CORE_STRUCT(PARAMS) \
CMC_CMC_TREESET_CORE_HEADER(PARAMS)
#define CMC_CMC_TREESET_CORE_PUBLIC_SOURCE(PARAMS) CMC_CMC_TREESET_CORE_SOURCE(PARAMS)
#define CMC_CMC_TREESET_CORE_PRIVATE_HEADER(PARAMS) \
struct CMC_PARAM_SNAME(PARAMS); \
CMC_CMC_TREESET_CORE_HEADER(PARAMS)
#define CMC_CMC_TREESET_CORE_PRIVATE_SOURCE(PARAMS) \
CMC_CMC_TREESET_CORE_STRUCT(PARAMS) \
CMC_CMC_TREESET_CORE_SOURCE(PARAMS)
/* Lowest level API */
#define CMC_CMC_TREESET_CORE_STRUCT(PARAMS) \
CMC_CMC_TREESET_CORE_STRUCT_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
#define CMC_CMC_TREESET_CORE_HEADER(PARAMS) \
CMC_CMC_TREESET_CORE_HEADER_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
@@ -38,9 +59,9 @@
CMC_CMC_TREESET_CORE_SOURCE_(CMC_PARAM_PFX(PARAMS), CMC_PARAM_SNAME(PARAMS), CMC_PARAM_V(PARAMS))
/* -------------------------------------------------------------------------
* Header
* Struct
* ------------------------------------------------------------------------- */
#define CMC_CMC_TREESET_CORE_HEADER_(PFX, SNAME, V) \
#define CMC_CMC_TREESET_CORE_STRUCT_(PFX, SNAME, V) \
\
/* Treeset Structure */ \
struct SNAME \
@@ -81,7 +102,12 @@
\
/* Parent node */ \
struct CMC_DEF_NODE(SNAME) * parent; \
}; \
};
/* -------------------------------------------------------------------------
* Header
* ------------------------------------------------------------------------- */
#define CMC_CMC_TREESET_CORE_HEADER_(PFX, SNAME, V) \
\
/* Value struct function table */ \
struct CMC_DEF_FVAL(SNAME) \
-9
View File
@@ -98,13 +98,4 @@
#define CMC_PARAM_K CMC_TUP_3
#define CMC_PARAM_V CMC_TUP_4
/**
* Marks a function parameter used or unused depending on the expanded value of
* MACRO. It need to expand to either TRUE or FALSE.
*/
#define CMC_UNUSED_PARAM(MACRO, PARAM) CMC_(CMC_UNUSED_PARAM_, MACRO)(PARAM)
#define CMC_UNUSED_PARAM_FALSE(PARAM) PARAM
#define CMC_UNUSED_PARAM_TRUE(PARAM)
#endif /* CMC_COR_CORE_H */
+4 -2
View File
@@ -11,6 +11,8 @@
#ifndef CMC_COR_FLAGS_H
#define CMC_COR_FLAGS_H
#include "core.h"
/**
* enum cmc_flags
*
@@ -37,7 +39,7 @@ enum cmc_flags
*
* Maps the error codes to their character representation.
*/
const char *cmc_flags_to_str[10] = { "OK", "ALLOC", "EMPTY", "NOT_FOUND", "INVALID",
"RANGE", "DUPLICATE", "ERROR", "THREAD", "MUTEX" };
CMC_UNUSED static const char *cmc_flags_to_str[10] = { "OK", "ALLOC", "EMPTY", "NOT_FOUND", "INVALID",
"RANGE", "DUPLICATE", "ERROR", "THREAD", "MUTEX" };
#endif /* CMC_COR_FLAGS_H */
+4 -4
View File
@@ -121,7 +121,7 @@
* \param PARTS A non-empty tuple of all desired EXT parts
*/
#define C_MACRO_COLLECTIONS_GEN_HEADER(LIB, COLLECTION, PARAMS, PARTS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE, HEADER, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE_PUBLIC, HEADER, PARAMS) \
CMC_MAP(CMC_(EXT_, LIB), COLLECTION, HEADER, PARAMS, CMC_EVAL PARTS)
/**
@@ -135,7 +135,7 @@
* \param PARTS A non-empty tuple of all desired EXT parts
*/
#define C_MACRO_COLLECTIONS_GEN_SOURCE(LIB, COLLECTION, PARAMS, PARTS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE, SOURCE, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE_PUBLIC, SOURCE, PARAMS) \
CMC_MAP(CMC_(EXT_, LIB), COLLECTION, SOURCE, PARAMS, CMC_EVAL PARTS)
/**
@@ -162,7 +162,7 @@
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V
*/
#define C_MACRO_COLLECTIONS_ALL_HEADER(LIB, COLLECTION, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE, HEADER, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE_PUBLIC, HEADER, PARAMS) \
CMC_MAP(CMC_(EXT_, LIB), COLLECTION, HEADER, PARAMS, C_MACRO_COLLECTIONS_PARTS(LIB, COLLECTION))
/**
@@ -175,7 +175,7 @@
* \param PARAMS A tuple of form (PFX, SNAME, SIZE, K, V
*/
#define C_MACRO_COLLECTIONS_ALL_SOURCE(LIB, COLLECTION, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE, SOURCE, PARAMS) \
C_MACRO_COLLECTIONS(LIB, COLLECTION, CORE_PUBLIC, SOURCE, PARAMS) \
CMC_MAP(CMC_(EXT_, LIB), COLLECTION, SOURCE, PARAMS, C_MACRO_COLLECTIONS_PARTS(LIB, COLLECTION))
/**
+1
View File
@@ -3,6 +3,7 @@
#include "macro_collections.h"
// clang-format off
C_MACRO_COLLECTIONS_ALL(CMC, BITSET, ( bs, bitset, , , ))
C_MACRO_COLLECTIONS_ALL(CMC, DEQUE, ( d, deque, , , int))
C_MACRO_COLLECTIONS_ALL(CMC, HASHBIDIMAP, (hbm, hashbidimap, , int, int))
C_MACRO_COLLECTIONS_ALL(CMC, HASHMAP, ( hm, hashmap, , int, int))