Now it is possible to have opaque collections
PUBLIC and PRIVATE are back
This commit is contained in:
1 parent
2b8f778c59
commit
f8607e8cdc
20 files changed
+524
-101
No files matched your search
+32
-5
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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) \
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
@@ -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))
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user