Add FREE operator.

Use it instead of DEL if necessary.
This commit is contained in:
Patrick Pelissier committed 2017-04-06 01:21:11 +02:00
1 parent 7b3b8a261b
commit 4991386bb7
3 files changed
+12 -5

No files matched your search

+1 -1
View File
@@ -140,7 +140,7 @@
{ \ { \
assert (v != NULL && v->size <= v->alloc); \ assert (v != NULL && v->size <= v->alloc); \
M_C3(array_, name, _clean)(v); \ M_C3(array_, name, _clean)(v); \
M_GET_DEL oplist(v->ptr); \ M_GET_FREE oplist(v->ptr); \
v->alloc = 0; \ v->alloc = 0; \
v->ptr = NULL; \ v->ptr = NULL; \
} \ } \
+1 -1
View File
@@ -110,7 +110,7 @@ static inline void \
M_C3(buffer_, name, _clear)(M_C3(buffer_, name,_t) v) \ M_C3(buffer_, name, _clear)(M_C3(buffer_, name,_t) v) \
{ \ { \
M_C3(bufferi_, name, _clear_obj)(v); \ M_C3(bufferi_, name, _clear_obj)(v); \
M_GET_DEL oplist (v->data); \ M_GET_FREE oplist (v->data); \
v->data = NULL; \ v->data = NULL; \
if (((policy) & BUFFER_THREAD_UNSAFE) != BUFFER_THREAD_UNSAFE) { \ if (((policy) & BUFFER_THREAD_UNSAFE) != BUFFER_THREAD_UNSAFE) { \
m_mutex_clear(v->mutex); \ m_mutex_clear(v->mutex); \
+10 -3
View File
@@ -691,8 +691,9 @@ m_core_hash (const void *str, size_t wrdlen)
#define M_MOVE_MOVE(a) ,a, #define M_MOVE_MOVE(a) ,a,
#define M_CLEAR_CLEAR(a) ,a, #define M_CLEAR_CLEAR(a) ,a,
#define M_NEW_NEW(a) ,a, #define M_NEW_NEW(a) ,a,
#define M_REALLOC_REALLOC(a) ,a,
#define M_DEL_DEL(a) ,a, #define M_DEL_DEL(a) ,a,
#define M_REALLOC_REALLOC(a) ,a,
#define M_FREE_FREE(a) ,a,
#define M_MEMPOOL_MEMPOOL(a) ,a, #define M_MEMPOOL_MEMPOOL(a) ,a,
#define M_MEMPOOL_LINKAGE_MEMPOOL_LINKAGE(a) ,a, #define M_MEMPOOL_LINKAGE_MEMPOOL_LINKAGE(a) ,a,
#define M_HASH_HASH(a) ,a, #define M_HASH_HASH(a) ,a,
@@ -749,8 +750,9 @@ m_core_hash (const void *str, size_t wrdlen)
#define M_GET_SWAP(...) M_GET_METHOD(SWAP, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_SWAP(...) M_GET_METHOD(SWAP, M_NO_DEFAULT, __VA_ARGS__)
#define M_GET_CLEAR(...) M_GET_METHOD(CLEAR, M_CLEAR_DEFAULT, __VA_ARGS__) #define M_GET_CLEAR(...) M_GET_METHOD(CLEAR, M_CLEAR_DEFAULT, __VA_ARGS__)
#define M_GET_NEW(...) M_GET_METHOD(NEW, M_NEW_DEFAULT, __VA_ARGS__) #define M_GET_NEW(...) M_GET_METHOD(NEW, M_NEW_DEFAULT, __VA_ARGS__)
#define M_GET_REALLOC(...) M_GET_METHOD(REALLOC, M_REALLOC_DEFAULT, __VA_ARGS__)
#define M_GET_DEL(...) M_GET_METHOD(DEL, M_DEL_DEFAULT, __VA_ARGS__) #define M_GET_DEL(...) M_GET_METHOD(DEL, M_DEL_DEFAULT, __VA_ARGS__)
#define M_GET_REALLOC(...) M_GET_METHOD(REALLOC, M_REALLOC_DEFAULT, __VA_ARGS__)
#define M_GET_FREE(...) M_GET_METHOD(FREE, M_FREE_DEFAULT, __VA_ARGS__)
#define M_GET_MEMPOOL(...) M_GET_METHOD(MEMPOOL, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_MEMPOOL(...) M_GET_METHOD(MEMPOOL, M_NO_DEFAULT, __VA_ARGS__)
#define M_GET_MEMPOOL_LINKAGE(...) M_GET_METHOD(MEMPOOL_LINKAGE, , __VA_ARGS__) #define M_GET_MEMPOOL_LINKAGE(...) M_GET_METHOD(MEMPOOL_LINKAGE, , __VA_ARGS__)
#define M_GET_HASH(...) M_GET_METHOD(HASH, M_NO_DEFAULT, __VA_ARGS__) #define M_GET_HASH(...) M_GET_METHOD(HASH, M_NO_DEFAULT, __VA_ARGS__)
@@ -793,8 +795,9 @@ m_core_hash (const void *str, size_t wrdlen)
#define M_SET_DEFAULT(a,b) ((a) = (b)) #define M_SET_DEFAULT(a,b) ((a) = (b))
#define M_CLEAR_DEFAULT(a) (void)a #define M_CLEAR_DEFAULT(a) (void)a
#define M_NEW_DEFAULT(a) M_MEMORY_ALLOC(a) #define M_NEW_DEFAULT(a) M_MEMORY_ALLOC(a)
#define M_DEL_DEFAULT(a) M_MEMORY_FREE(a) #define M_DEL_DEFAULT(a) M_MEMORY_DEL(a)
#define M_REALLOC_DEFAULT(t,p,s) M_MEMORY_REALLOC(t,p,s) #define M_REALLOC_DEFAULT(t,p,s) M_MEMORY_REALLOC(t,p,s)
#define M_FREE_DEFAULT(a) M_MEMORY_FREE(a)
#define M_NO_DEFAULT(...) m_no_default_function #define M_NO_DEFAULT(...) m_no_default_function
#define M_EQUAL_DEFAULT(a,b) ((a) == (b)) #define M_EQUAL_DEFAULT(a,b) ((a) == (b))
#define M_CMP_DEFAULT(a,b) ((a) < (b) ? -1 : (a) > (b)) #define M_CMP_DEFAULT(a,b) ((a) < (b) ? -1 : (a) > (b))
@@ -934,16 +937,20 @@ m_core_hash (const void *str, size_t wrdlen)
malloc, realloc as it is safer (compilers shall warn in case malloc, realloc as it is safer (compilers shall warn in case
of invalid implicit cast, whereas they won't if there is an of invalid implicit cast, whereas they won't if there is an
explicit cast) */ explicit cast) */
// TODO: M_MEMORY_DEL will need type too (for type overriding
// malloc implementation)
#ifndef M_MEMORY_ALLOC #ifndef M_MEMORY_ALLOC
#ifdef __cplusplus #ifdef __cplusplus
# include <cstdlib> # include <cstdlib>
# define M_MEMORY_ALLOC(type) ((type*)std::malloc (sizeof (type))) # define M_MEMORY_ALLOC(type) ((type*)std::malloc (sizeof (type)))
# define M_MEMORY_DEL(ptr) std::free(ptr)
# define M_MEMORY_REALLOC(type, ptr, n) \ # define M_MEMORY_REALLOC(type, ptr, n) \
((type*) std::realloc ((ptr), (n)*sizeof (type))) ((type*) std::realloc ((ptr), (n)*sizeof (type)))
# define M_MEMORY_FREE(ptr) std::free(ptr) # define M_MEMORY_FREE(ptr) std::free(ptr)
#else #else
# include <stdlib.h> # include <stdlib.h>
# define M_MEMORY_ALLOC(type) malloc (sizeof (type)) # define M_MEMORY_ALLOC(type) malloc (sizeof (type))
# define M_MEMORY_DEL(ptr) free(ptr)
# define M_MEMORY_REALLOC(type, ptr, n) realloc ((ptr), (n)*sizeof (type)) # define M_MEMORY_REALLOC(type, ptr, n) realloc ((ptr), (n)*sizeof (type))
# define M_MEMORY_FREE(ptr) free(ptr) # define M_MEMORY_FREE(ptr) free(ptr)
#endif #endif