Remove hard dependency of INIT_MOVE operator for buffer.

This commit is contained in:
Patrick Pelissier committed 2017-04-23 22:52:47 +02:00
1 parent bc1e9239cc
commit 1739de33c2
2 files changed
+9 -2

No files matched your search

+2 -2
View File
@@ -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 --; \
+7
View File
@@ -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 **********************/