* Add macro M_LESS_THAN_P (src, test, doc). * Robustify M_INC & M_DEC so that overflow & underflow keeps returning overflow & underflow
This commit is contained in:
1 parent
3dad326bea
commit
da613ad188
3 files changed
+39
-2
No files matched your search
@@ -5446,6 +5446,11 @@ x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||
Return 1 if x == y, 0 otherwise (resolution is performed at preprocessing time).
|
||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].
|
||||
|
||||
##### M\_LESS\_THAN\_P(x, y)
|
||||
|
||||
Return 1 if x < y, 0 otherwise (resolution is performed at preprocessing time).
|
||||
x and y shall be within [0..M\_MAX\_NB\_ARGUMENT].x
|
||||
|
||||
##### M\_COMMA\_P(arglist)
|
||||
|
||||
Return 1 if there is a comma inside the argument list, 0 otherwise.
|
||||
|
||||
@@ -443,14 +443,17 @@ M_BEGIN_PROTECTED_CODE
|
||||
#define M_INC_50 51
|
||||
#define M_INC_51 52
|
||||
#define M_INC_52 53
|
||||
#define M_INC_53 M_INC_overflow_detected
|
||||
#define M_INC_53 OVERFLOW
|
||||
#define M_INC_OVERFLOW OVERFLOW
|
||||
|
||||
|
||||
/* Decrement the number given in argument (from [0..52[)
|
||||
Generated by:
|
||||
for i in $(seq 1 52) ; do printf "#define M_DEC_%d %d\n" $i $(($i - 1)) ; done
|
||||
*/
|
||||
#define M_DEC(x) M_C(M_DEC_, x)
|
||||
#define M_DEC_0 M_DEC_underflow_detected
|
||||
#define M_DEC_UNDERFLOW UNDERFLOW
|
||||
#define M_DEC_0 UNDERFLOW
|
||||
#define M_DEC_1 0
|
||||
#define M_DEC_2 1
|
||||
#define M_DEC_3 2
|
||||
@@ -1100,6 +1103,8 @@ M_BEGIN_PROTECTED_CODE
|
||||
#define M_PATTERN_TYPE_TYPE ,
|
||||
#define M_PATTERN_SUBTYPE_SUBTYPE ,
|
||||
#define M_PATTERN_IT_TYPE_IT_TYPE ,
|
||||
#define M_PATTERN_UNDERFLOW_UNDERFLOW ,
|
||||
#define M_PATTERN_OVERFLOW_OVERFLOW ,
|
||||
|
||||
|
||||
/* Necessary macros to handle recursivity,
|
||||
@@ -1732,6 +1737,10 @@ M_BEGIN_PROTECTED_CODE
|
||||
*/
|
||||
#define M_EQUAL(x,y) M_INV(M_NOTEQUAL(x,y))
|
||||
|
||||
/* Return 1 if a < b, 0 otherwise
|
||||
a and b shall be in [0..M_MAX_NB_ARGUMENT] */
|
||||
#define M_LESS_THAN_P(a, b) M_KEYWORD_P(UNDERFLOW, M_SUB(a, b))
|
||||
|
||||
/* Revert the list given as parameter
|
||||
Example: M_REVERSE(a,b,c) --> (c,b,a) */
|
||||
/* Generated by:
|
||||
|
||||
@@ -112,6 +112,29 @@ static void test_incdec(void)
|
||||
|
||||
assert( M_ADD(2,5) == M_SUB(10,3));
|
||||
assert( M_ADD(5,15) == M_SUB(25,5));
|
||||
|
||||
assert(M_EQUAL(2, 2));
|
||||
assert(!M_EQUAL(1, 2));
|
||||
assert(M_EQUAL(52, 52));
|
||||
|
||||
assert(!M_NOTEQUAL(2, 2));
|
||||
assert(M_NOTEQUAL(1, 2));
|
||||
assert(!M_NOTEQUAL(52, 52));
|
||||
|
||||
assert(!M_LESS_THAN_P(4, 2));
|
||||
assert(!M_LESS_THAN_P(4, 3));
|
||||
assert(!M_LESS_THAN_P(4, 4));
|
||||
assert(M_LESS_THAN_P(4, 5));
|
||||
assert(M_LESS_THAN_P(4, 6));
|
||||
assert(M_LESS_THAN_P(4, 7));
|
||||
|
||||
assert(!M_KEYWORD_P(UNDERFLOW, M_SUB(1, 1)));
|
||||
assert(M_KEYWORD_P(UNDERFLOW, M_SUB(1, 2)));
|
||||
assert(M_KEYWORD_P(UNDERFLOW, M_SUB(1, 6)));
|
||||
assert(M_KEYWORD_P(UNDERFLOW, M_SUB(1, 5)));
|
||||
assert(!M_KEYWORD_P(OVERFLOW, M_ADD(M_MAX_NB_ARGUMENT, 1)));
|
||||
assert(M_KEYWORD_P(OVERFLOW, M_ADD(M_MAX_NB_ARGUMENT, 2)));
|
||||
assert(M_KEYWORD_P(OVERFLOW, M_ADD(M_MAX_NB_ARGUMENT, 3)));
|
||||
}
|
||||
|
||||
static void test_return(void)
|
||||
|
||||
Reference in new issue
Block a user