diff --git a/m-array.h b/m-array.h index 71acecdb..3cf51da4 100644 --- a/m-array.h +++ b/m-array.h @@ -76,6 +76,7 @@ ,IT_INSERT(M_C(name,_insert)) \ ,IT_REMOVE(M_C(name,_remove)) \ ,CLEAN(M_C(name,_clean)) \ + ,KEY_TYPE(size_t) \ ,SET_KEY(M_C(name, _set_at)) \ ,GET_KEY(M_C(name, _get)) \ ,M_IF_METHOD(INIT, oplist)(GET_SET_KEY(M_C(name, _get_at)) ,) \ diff --git a/m-bptree.h b/m-bptree.h index 05384538..32d9bea3 100644 --- a/m-bptree.h +++ b/m-bptree.h @@ -80,6 +80,7 @@ CLEAN(M_C(name,_clean)), \ GET_MIN(M_C(name,_min)), \ GET_MAX(M_C(name,_max)), \ + KEY_TYPE(M_C(name, _key_type_t)), \ SET_KEY(M_C(name, _set_at)), \ GET_KEY(M_C(name, _get)), \ /*GET_SET_KEY(M_C(name, _get_at))*/, \ @@ -185,6 +186,8 @@ , \ typedef key_t M_C(name, _type_t); \ ) \ + typedef key_t M_C(name, _key_type_t); \ + typedef value_t M_C(name, _value_type_t); \ \ /* Node of a B+TREE */ \ typedef struct M_C(name, _node_s) { \ diff --git a/m-core.h b/m-core.h index 805dbd53..18bd7fe8 100644 --- a/m-core.h +++ b/m-core.h @@ -1784,6 +1784,7 @@ m_core_hash (const void *str, size_t length) #define M_MUL_MUL(a) ,a, #define M_DIV_DIV(a) ,a, #define M_CLEAN_CLEAN(a) ,a, +#define M_KEY_TYPE_KEY_TYPE(a) ,a, #define M_GET_KEY_GET_KEY(a) ,a, #define M_SET_KEY_SET_KEY(a) ,a, #define M_GET_SET_KEY_GET_SET_KEY(a) ,a, @@ -1855,6 +1856,7 @@ m_core_hash (const void *str, size_t length) #define M_GET_MUL(...) M_GET_METHOD(MUL, M_MUL_DEFAULT, __VA_ARGS__) #define M_GET_DIV(...) M_GET_METHOD(DIV, M_DIV_DEFAULT, __VA_ARGS__) #define M_GET_CLEAN(...) M_GET_METHOD(CLEAN, M_NO_DEFAULT, __VA_ARGS__) +#define M_GET_KEY_TYPE(...) M_GET_METHOD(KEY_TYPE, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_GET_KEY(...) M_GET_METHOD(GET_KEY, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_SET_KEY(...) M_GET_METHOD(SET_KEY, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_GET_SET_KEY(...) M_GET_METHOD(GET_SET_KEY, M_NO_DEFAULT, __VA_ARGS__) diff --git a/m-dict.h b/m-dict.h index 36911d7e..4ea208b9 100644 --- a/m-dict.h +++ b/m-dict.h @@ -190,8 +190,11 @@ size_t used, lower_limit, upper_limit; \ M_C(name, _array_list_pair_t) table; \ } dict_t[1]; \ + \ typedef struct M_C(name, _s) *M_C(name, _ptr); \ typedef const struct M_C(name, _s) *M_C(name, _srcptr); \ + typedef key_type M_C(name, _key_type_t); \ + typedef value_type M_C(name, _value_type_t); \ \ typedef struct M_C(name, _it_s) { \ M_C(name, _array_list_pair_it_t) array_it; \ @@ -800,6 +803,7 @@ IT_NEXT(M_C(name,_next)), \ IT_REF(M_C(name,_ref)), \ IT_CREF(M_C(name,_cref)) \ + ,KEY_TYPE(M_C(name, _key_type_t)) \ ,SET_KEY(M_C(name, _set_at)) \ ,GET_KEY(M_C(name, _get)) \ ,GET_SET_KEY(M_C(name, _get_at)) \