Remove hard dependency of INIT_MOVE operator for buffer.
This commit is contained in:
1 parent
bc1e9239cc
commit
1739de33c2
2 files changed
+9
-2
No files matched your search
+2
-2
@@ -222,7 +222,7 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
|
||||
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
|
||||
M_GET_SET oplist (*data, v->data[v->idx_cons]); \
|
||||
} else { \
|
||||
M_GET_INIT_MOVE oplist (*data, v->data[v->idx_cons]); \
|
||||
M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_cons]); \
|
||||
} \
|
||||
v->idx_cons = (v->idx_cons +1) % BUFFERI_SIZE(m_size); \
|
||||
} else { \
|
||||
@@ -230,7 +230,7 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
|
||||
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
|
||||
M_GET_SET oplist (*data, v->data[v->idx_prod]); \
|
||||
} else { \
|
||||
M_GET_INIT_MOVE oplist (*data, v->data[v->idx_prod]); \
|
||||
M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_prod]); \
|
||||
} \
|
||||
} \
|
||||
v->number --; \
|
||||
|
||||
@@ -901,6 +901,13 @@ m_core_hash (const void *str, size_t length)
|
||||
so that the first argument becomes a pointer to the destination. */
|
||||
#define M_IPTR(...) ( & __VA_ARGS__ )
|
||||
|
||||
/* Perform an INIT_MOVE if present, or emulate it using INIT_SET/CLEAR
|
||||
otherwise */
|
||||
#define M_DO_INIT_MOVE(oplist, dest, src) do { \
|
||||
M_IF_METHOD(INIT_MOVE, oplist)(M_GET_INIT_MOVE oplist (dest, src);, \
|
||||
M_GET_INIT_SET oplist (dest, src) ; \
|
||||
M_GET_CLEAR oplist (src); ) \
|
||||
} while (0)
|
||||
|
||||
/************************************************************/
|
||||
/******************** Syntax Enhancing **********************/
|
||||
|
||||
Reference in new issue
Block a user