Remove limitation of M_AS_STR to be called within a M_APPLY
This commit is contained in:
1 parent
e4dc06a0e2
commit
07eb5697ab
4 files changed
+11
-11
No files matched your search
@@ -1042,9 +1042,9 @@ M_BEGIN_PROTECTED_CODE
|
|||||||
#define M_COMMA_P(...) M_RETI_ARG76(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, useless)
|
#define M_COMMA_P(...) M_RETI_ARG76(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, useless)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Return the string representation of the evaluated x.
|
/* Return the string representation of the evaluated x. */
|
||||||
NOTE: Need to be used with M_APPLY to defer the evaluation */
|
#define M_AS_STR(x) M_AS_STRI(x)
|
||||||
#define M_AS_STR(x) #x
|
#define M_AS_STRI(x) #x
|
||||||
|
|
||||||
/* Return 1 if the argument is empty (aka ''), 0 otherwise.
|
/* Return 1 if the argument is empty (aka ''), 0 otherwise.
|
||||||
Handle: EMPTY_P(), EMPTY_P(x), EMPTY_P(()) and EMPTY_P(,) and EMPTY_P(f) with #define f() 2,3 */
|
Handle: EMPTY_P(), EMPTY_P(x), EMPTY_P(()) and EMPTY_P(,) and EMPTY_P(f) with #define f() 2,3 */
|
||||||
|
|||||||
+2
-2
@@ -474,7 +474,7 @@ m_serial_json_read_tuple_id(m_serial_local_t local, m_serial_read_t serial, cons
|
|||||||
/* Read the field in the JSON */
|
/* Read the field in the JSON */
|
||||||
c = -1;
|
c = -1;
|
||||||
char field[M_MAX_IDENTIFIER_LENGTH+1];
|
char field[M_MAX_IDENTIFIER_LENGTH+1];
|
||||||
int nn = m_core_fscanf(f, " \"%" M_APPLY(M_AS_STR, M_MAX_IDENTIFIER_LENGTH) "[^ \t\n\"]\":%n",
|
int nn = m_core_fscanf(f, " \"%" M_AS_STR(M_MAX_IDENTIFIER_LENGTH) "[^ \t\n\"]\":%n",
|
||||||
m_core_arg_size(field, M_MAX_IDENTIFIER_LENGTH+1), &c);
|
m_core_arg_size(field, M_MAX_IDENTIFIER_LENGTH+1), &c);
|
||||||
(void) nn ; // Unused. Check is done through 'c' (more robust).
|
(void) nn ; // Unused. Check is done through 'c' (more robust).
|
||||||
if (c <= 0)
|
if (c <= 0)
|
||||||
@@ -510,7 +510,7 @@ m_serial_json_read_variant_start(m_serial_local_t local, m_serial_read_t serial,
|
|||||||
|
|
||||||
/* Read the field in the JSON */
|
/* Read the field in the JSON */
|
||||||
char field[M_MAX_IDENTIFIER_LENGTH+1];
|
char field[M_MAX_IDENTIFIER_LENGTH+1];
|
||||||
nn = m_core_fscanf(f, " \"%" M_APPLY(M_AS_STR, M_MAX_IDENTIFIER_LENGTH) "[^ \t\n\"]\":%n",
|
nn = m_core_fscanf(f, " \"%" M_AS_STR(M_MAX_IDENTIFIER_LENGTH) "[^ \t\n\"]\":%n",
|
||||||
m_core_arg_size(field, M_MAX_IDENTIFIER_LENGTH+1), &final2);
|
m_core_arg_size(field, M_MAX_IDENTIFIER_LENGTH+1), &final2);
|
||||||
(void) nn ; // Unused. Check is done through final (more robust).
|
(void) nn ; // Unused. Check is done through final (more robust).
|
||||||
if (final2 <= 0) return m_core_serial_fail();
|
if (final2 <= 0) return m_core_serial_fail();
|
||||||
|
|||||||
@@ -517,7 +517,7 @@ namespace m_lib {
|
|||||||
|
|
||||||
/* Return the parameter name as a C string */
|
/* Return the parameter name as a C string */
|
||||||
#define TUPLEI_STRINGIFY_NAME(a) \
|
#define TUPLEI_STRINGIFY_NAME(a) \
|
||||||
M_APPLY(M_AS_STR, TUPLEI_GET_FIELD a)
|
M_AS_STR(TUPLEI_GET_FIELD a)
|
||||||
|
|
||||||
|
|
||||||
/* Define a OUT_SERIAL method by calling the OUT_SERIAL methods for all params */
|
/* Define a OUT_SERIAL method by calling the OUT_SERIAL methods for all params */
|
||||||
|
|||||||
+5
-5
@@ -536,7 +536,7 @@
|
|||||||
|
|
||||||
#define VARIANTI_DEFINE_GET_STR_FUNC(name, a) \
|
#define VARIANTI_DEFINE_GET_STR_FUNC(name, a) \
|
||||||
case M_C4(name, _, VARIANTI_GET_FIELD a, _value): \
|
case M_C4(name, _, VARIANTI_GET_FIELD a, _value): \
|
||||||
func(str, "@" M_APPLY (M_AS_STR, VARIANTI_GET_FIELD a) "@"); \
|
func(str, "@" M_AS_STR(VARIANTI_GET_FIELD a) "@"); \
|
||||||
VARIANTI_CALL_GET_STR(a, str, el -> value . VARIANTI_GET_FIELD a, true); \
|
VARIANTI_CALL_GET_STR(a, str, el -> value . VARIANTI_GET_FIELD a, true); \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -576,7 +576,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define VARIANTI_DEFINE_PARSE_STR_FUNC(name, a) \
|
#define VARIANTI_DEFINE_PARSE_STR_FUNC(name, a) \
|
||||||
else if (strcmp (variantTypeBuf, M_APPLY (M_AS_STR, VARIANTI_GET_FIELD a)) == 0) { \
|
else if (strcmp (variantTypeBuf, M_AS_STR(VARIANTI_GET_FIELD a)) == 0) { \
|
||||||
el->type = M_C4(name, _, VARIANTI_GET_FIELD a, _value); \
|
el->type = M_C4(name, _, VARIANTI_GET_FIELD a, _value); \
|
||||||
VARIANTI_CALL_INIT(a, el ->value . VARIANTI_GET_FIELD a ); \
|
VARIANTI_CALL_INIT(a, el ->value . VARIANTI_GET_FIELD a ); \
|
||||||
bool b = VARIANTI_CALL_PARSE_STR(a, el -> value . VARIANTI_GET_FIELD a, str, &str); \
|
bool b = VARIANTI_CALL_PARSE_STR(a, el -> value . VARIANTI_GET_FIELD a, str, &str); \
|
||||||
@@ -600,7 +600,7 @@
|
|||||||
|
|
||||||
#define VARIANTI_DEFINE_OUT_STR_FUNC(name, a) \
|
#define VARIANTI_DEFINE_OUT_STR_FUNC(name, a) \
|
||||||
case M_C4(name, _, VARIANTI_GET_FIELD a, _value): \
|
case M_C4(name, _, VARIANTI_GET_FIELD a, _value): \
|
||||||
fprintf(f, "@" M_APPLY(M_AS_STR, VARIANTI_GET_FIELD a) "@"); \
|
fprintf(f, "@" M_AS_STR(VARIANTI_GET_FIELD a) "@"); \
|
||||||
VARIANTI_CALL_OUT_STR(a, f, el -> value . VARIANTI_GET_FIELD a); \
|
VARIANTI_CALL_OUT_STR(a, f, el -> value . VARIANTI_GET_FIELD a); \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -635,7 +635,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define VARIANTI_DEFINE_IN_STR_FUNC(name, a) \
|
#define VARIANTI_DEFINE_IN_STR_FUNC(name, a) \
|
||||||
else if (strcmp (variantTypeBuf, M_APPLY (M_AS_STR, VARIANTI_GET_FIELD a)) == 0) { \
|
else if (strcmp (variantTypeBuf, M_AS_STR(VARIANTI_GET_FIELD a)) == 0) { \
|
||||||
el->type = M_C4(name, _, VARIANTI_GET_FIELD a, _value); \
|
el->type = M_C4(name, _, VARIANTI_GET_FIELD a, _value); \
|
||||||
VARIANTI_CALL_INIT(a, el ->value . VARIANTI_GET_FIELD a ); \
|
VARIANTI_CALL_INIT(a, el ->value . VARIANTI_GET_FIELD a ); \
|
||||||
b = VARIANTI_CALL_IN_STR(a, el -> value . VARIANTI_GET_FIELD a, f); \
|
b = VARIANTI_CALL_IN_STR(a, el -> value . VARIANTI_GET_FIELD a, f); \
|
||||||
@@ -644,7 +644,7 @@
|
|||||||
|
|
||||||
/* Return the STRING version of a parameter name */
|
/* Return the STRING version of a parameter name */
|
||||||
#define VARIANTI_STRINGIFY_NAME(a) \
|
#define VARIANTI_STRINGIFY_NAME(a) \
|
||||||
M_APPLY(M_AS_STR, VARIANTI_GET_FIELD a)
|
M_AS_STR(VARIANTI_GET_FIELD a)
|
||||||
|
|
||||||
|
|
||||||
/* Define the OUT_SERIAL function */
|
/* Define the OUT_SERIAL function */
|
||||||
|
|||||||
Reference in new issue
Block a user