From a69c67e85058d07045073b6517b55a222d366e2b Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Tue, 25 Jul 2017 22:52:19 +0200 Subject: [PATCH] Remove buffer prefix from buffers. See commit on shared pointer. --- README.md | 4 +-- example/ex-buffer01.c | 2 +- m-buffer.h | 62 +++++++++++++++++++++---------------------- tests/test-mbuffer.c | 12 ++++----- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 2ff61c9c..36fc75f6 100644 --- a/README.md +++ b/README.md @@ -1647,7 +1647,7 @@ This method is only defined if the type of the element defines a HASH method its #### BUFFER\_DEF(name, type, size, policy[, oplist]) -Define the buffer 'buffer\_##name##\_t' and its associated methods as "static inline" functions. +Define the buffer 'name##\_t' and its associated methods as "static inline" functions. A buffer is a fixed size queue or stack. 'name' shall be a C identifier which will be used to identify the container. @@ -1673,7 +1673,7 @@ The object oplist is expected to have the following operators (INIT, INIT\_SET, Example: - BUFFER_DEF(uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING) + BUFFER_DEF(buffer_uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING) buffer_uint_t g_buff; diff --git a/example/ex-buffer01.c b/example/ex-buffer01.c index 64b7e66a..ba98aba7 100644 --- a/example/ex-buffer01.c +++ b/example/ex-buffer01.c @@ -89,7 +89,7 @@ SHARED_PTR_DEF(shared_bigdata, bigdata_t, (INIT(bigdata_init), CLEAR(bigdata_cle * - we change the semantics of _push / _pop into buffer as push a new item and pop it as a move (ideal semantics for shared_ptr interface). */ #define MY_QUEUE_SIZE 10 -BUFFER_DEF(bigdata, shared_bigdata_t, MY_QUEUE_SIZE, +BUFFER_DEF(buffer_bigdata, shared_bigdata_t, MY_QUEUE_SIZE, BUFFER_QUEUE|BUFFER_PUSH_INIT_POP_MOVE, SHARED_PTR_OPLIST(shared_bigdata)) /* Let's build a Thread synchros tree: diff --git a/m-buffer.h b/m-buffer.h index 4800474a..833020b3 100644 --- a/m-buffer.h +++ b/m-buffer.h @@ -46,8 +46,8 @@ typedef enum { USAGE: BUFFER_DEF(name, type, size_of_buffer_or_0, policy[, oplist]) */ #define BUFFER_DEF(name, type, m_size, ... ) \ M_IF_NARGS_EQ1(__VA_ARGS__) \ - (BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, (), M_C3(buffer_, name,_t)), \ - BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, M_C3(buffer_, name,_t))) + (BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, (), M_C(name,_t)), \ + BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, M_C(name,_t))) /********************************** INTERNAL ************************************/ @@ -68,17 +68,17 @@ typedef enum { #define BUFFERI_DEF2(name, type, m_size, policy, oplist, buffer_t) \ \ - typedef struct M_C3(buffer_, name, _s) { \ + typedef struct M_C(name, _s) { \ m_mutex_t mutex; \ m_cond_t there_is_data; \ m_cond_t there_is_room_for_data; \ BUFFERI_IF_CTE_SIZE(m_size)( ,size_t size;) \ - size_t idx_prod, idx_cons, number, overwrite; \ + size_t idx_prod, idx_cons, number, overwrite; \ type *data; \ } buffer_t[1]; \ \ static inline void \ -M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ +M_C(name, _init)(buffer_t v, size_t size) \ { \ assert( size > 0); \ BUFFERI_IF_CTE_SIZE(m_size)(assert(size == m_size), v->size = size); \ @@ -103,7 +103,7 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ } \ \ static inline void \ - M_C3(bufferi_, name, _clear_obj)(buffer_t v) \ + M_C(name, _int_clear_obj)(buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ @@ -122,12 +122,12 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ v->idx_prod = v->idx_cons = v->number = 0; \ BUFFERI_CONTRACT(v,m_size); \ } \ - \ + \ static inline void \ - M_C3(buffer_, name, _clear)(buffer_t v) \ + M_C(name, _clear)(buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ - M_C3(bufferi_, name, _clear_obj)(v); \ + M_C(name, _int_clear_obj)(v); \ M_GET_FREE oplist (v->data); \ v->data = NULL; \ v->overwrite = 0; \ @@ -137,15 +137,15 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ m_cond_clear(v->there_is_room_for_data); \ } \ } \ - \ + \ static inline void \ - M_C3(buffer_, name, _clean)(buffer_t v) \ + M_C(name, _clean)(buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) \ m_mutex_lock(v->mutex); \ if (BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) \ - M_C3(bufferi_, name, _clear_obj)(v); \ + M_C(name, _int_clear_obj)(v); \ else \ v->idx_prod = v->idx_cons = v->number = 0; \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ @@ -154,38 +154,38 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ } \ BUFFERI_CONTRACT(v,m_size); \ } \ - \ + \ static inline bool \ - M_C3(buffer_, name, _empty_p)(const buffer_t v) \ + M_C(name, _empty_p)(const buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ return v->number == 0; \ } \ - \ + \ static inline bool \ - M_C3(buffer_, name, _full_p)(const buffer_t v) \ + M_C(name, _full_p)(const buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ return v->number == BUFFERI_SIZE(m_size); \ } \ - \ + \ static inline size_t \ - M_C3(buffer_, name, _size)(const buffer_t v) \ + M_C(name, _size)(const buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ return v->number; \ } \ - \ + \ static inline bool \ - M_C3(buffer_, name, _push)(buffer_t v, type const data) \ + M_C(name, _push)(buffer_t v, type const data) \ { \ BUFFERI_CONTRACT(v,m_size); \ - \ + \ /* BUFFER lock */ \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ m_mutex_lock(v->mutex); \ while (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \ - && M_C3(buffer_, name, _full_p)(v)) { \ + && M_C(name, _full_p)(v)) { \ if (BUFFERI_POLICY_P((policy), BUFFER_UNBLOCKING)) { \ m_mutex_unlock(v->mutex); \ return false; \ @@ -193,9 +193,9 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ m_cond_wait(v->there_is_room_for_data, v->mutex); \ } \ } else if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \ - && M_C3(buffer_, name, _full_p)(v)) \ + && M_C(name, _full_p)(v)) \ return false; \ - \ + \ /* INDEX computation if we have to overwrite the last element */ \ if (M_UNLIKELY (BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \ && v->number == BUFFERI_SIZE(m_size) )) { \ @@ -236,26 +236,26 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ } \ \ static inline bool \ - M_C3(buffer_, name, _pop)(type *data, buffer_t v) \ + M_C(name, _pop)(type *data, buffer_t v) \ { \ BUFFERI_CONTRACT(v,m_size); \ \ /* BUFFER lock */ \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ m_mutex_lock(v->mutex); \ - while (M_C3(buffer_, name, _empty_p)(v)) { \ + while (M_C(name, _empty_p)(v)) { \ if (BUFFERI_POLICY_P((policy), BUFFER_UNBLOCKING)) { \ m_mutex_unlock(v->mutex); \ return false; \ } \ m_cond_wait(v->there_is_data, v->mutex); \ } \ - } else if (M_C3(buffer_, name, _empty_p)(v)) \ + } else if (M_C(name, _empty_p)(v)) \ return false; \ - \ + \ /* POP data */ \ if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \ - if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ + if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ M_GET_SET oplist (*data, v->data[v->idx_cons]); \ } else { \ M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_cons]); \ @@ -282,11 +282,11 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \ } \ \ static inline size_t \ - M_C3(buffer_, name, _overwrite)(const buffer_t v) \ + M_C(name, _overwrite)(const buffer_t v) \ { \ return v->overwrite; \ } \ - + // NOTE: SET & INIT_SET are deliberatly missing. TBC if it the right way. // NOTE: There is no oplist defined for this container. diff --git a/tests/test-mbuffer.c b/tests/test-mbuffer.c index f0252e0e..af6b49a0 100644 --- a/tests/test-mbuffer.c +++ b/tests/test-mbuffer.c @@ -25,20 +25,20 @@ #include "coverage.h" START_COVERAGE // Define a fixed queue of unsigned int -BUFFER_DEF(uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING) +BUFFER_DEF(buffer_uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING) END_COVERAGE // Define a variable stack of float -BUFFER_DEF(floats, float, 0, BUFFER_STACK|BUFFER_BLOCKING) +BUFFER_DEF(buffer_floats, float, 0, BUFFER_STACK|BUFFER_BLOCKING) // Define a fixed stack of char -BUFFER_DEF(char, char, 10, BUFFER_STACK|BUFFER_UNBLOCKING) +BUFFER_DEF(buffer_char, char, 10, BUFFER_STACK|BUFFER_UNBLOCKING) // Define a fixed queue of long long -BUFFER_DEF(llong, long long, 16, BUFFER_QUEUE|BUFFER_THREAD_UNSAFE|BUFFER_UNBLOCKING) +BUFFER_DEF(buffer_llong, long long, 16, BUFFER_QUEUE|BUFFER_THREAD_UNSAFE|BUFFER_UNBLOCKING) #include -BUFFER_DEF(mpz, mpz_t, 32, BUFFER_QUEUE, (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear))) +BUFFER_DEF(buffer_mpz, mpz_t, 32, BUFFER_QUEUE, (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear))) buffer_uint_t g_buff; @@ -208,7 +208,7 @@ static test_t *test_new(void) return ishared_itest_init(p); } -BUFFER_DEF(itest, test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE, +BUFFER_DEF(buffer_itest, test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE, ISHARED_PTR_OPLIST(ishared_itest)) static buffer_itest_t comm1;