Add new primitives.
This commit is contained in:
1 parent
1c637f1182
commit
d76f9565b2
1 file changed
+85
-4
+85
-4
@@ -55,10 +55,6 @@
|
|||||||
\
|
\
|
||||||
typedef type M_C(name, _type_t); \
|
typedef type M_C(name, _type_t); \
|
||||||
\
|
\
|
||||||
M_IF_METHOD(IT_TYPE, oplist)( \
|
|
||||||
typedef M_GET_IT_TYPE oplist protect_it_t; \
|
|
||||||
,) \
|
|
||||||
\
|
|
||||||
M_IF_METHOD(INIT, oplist)( \
|
M_IF_METHOD(INIT, oplist)( \
|
||||||
static inline void \
|
static inline void \
|
||||||
M_C(name, _init)(protect_t out) \
|
M_C(name, _init)(protect_t out) \
|
||||||
@@ -231,6 +227,91 @@
|
|||||||
M_CALL_POP(oplist, p, out->data); \
|
M_CALL_POP(oplist, p, out->data); \
|
||||||
m_mutex_unlock (out->lock); \
|
m_mutex_unlock (out->lock); \
|
||||||
} \
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(PUSH_MOVE, oplist)( \
|
||||||
|
static inline void \
|
||||||
|
M_C(name, _push_move)(protect_t out, M_GET_SUBTYPE oplist *data) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
M_CALL_PUSH_MOVE(oplist, out->data, data); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(POP_MOVE, oplist)( \
|
||||||
|
static inline void \
|
||||||
|
M_C(name, _pop_move)(M_GET_SUBTYPE oplist *p, protect_t out) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
M_CALL_POP_MOVE(oplist, p, out->data); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(GET_STR, oplist)( \
|
||||||
|
static inline void \
|
||||||
|
M_C(name, _get_str)(string_t str, protect_t out, bool a) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
M_CALL_GET_STR(oplist, str, out->data, a); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(OUT_STR, oplist)( \
|
||||||
|
static inline void \
|
||||||
|
M_C(name, _out_str)(FILE *f, protect_t out) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
M_CALL_OUT_STR(oplist, f, out->data); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(PARSE_STR, oplist)( \
|
||||||
|
static inline bool \
|
||||||
|
M_C(name, _out_str)(protect_t out, const char str[], const char **e) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
bool b = M_CALL_OUT_STR(oplist, out->data, str, e); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
return b; \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(IN_STR, oplist)( \
|
||||||
|
static inline bool \
|
||||||
|
M_C(name, _in_str)(protect_t out, FILE *f) \
|
||||||
|
{ \
|
||||||
|
m_mutex_lock (out->lock); \
|
||||||
|
bool b = M_CALL_IN_STR(oplist, out->data, f); \
|
||||||
|
m_mutex_unlock (out->lock); \
|
||||||
|
return b; \
|
||||||
|
} \
|
||||||
|
,) \
|
||||||
|
\
|
||||||
|
M_IF_METHOD(EQUAL, oplist)( \
|
||||||
|
static inline bool \
|
||||||
|
M_C(name, _equal)(protect_t out1, protect_t out2) \
|
||||||
|
{ \
|
||||||
|
if (out1 < out2) { \
|
||||||
|
m_mutex_lock (out1->lock); \
|
||||||
|
m_mutex_lock (out2->lock); \
|
||||||
|
} else { \
|
||||||
|
m_mutex_lock (out2->lock); \
|
||||||
|
m_mutex_lock (out1->lock); \
|
||||||
|
} \
|
||||||
|
bool b = M_CALL_EQUAL(oplist, out1->data, out2->data); \
|
||||||
|
if (out1 < out2) { \
|
||||||
|
m_mutex_unlock (out2->lock); \
|
||||||
|
m_mutex_unlock (out1->lock); \
|
||||||
|
} else { \
|
||||||
|
m_mutex_unlock (out1->lock); \
|
||||||
|
m_mutex_unlock (out2->lock); \
|
||||||
|
} \
|
||||||
|
return b; \
|
||||||
|
} \
|
||||||
,) \
|
,) \
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user