From 0515cfd06804d20566df6f6cf6f956c3b214eb8b Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 7 Feb 2021 09:53:13 +0100 Subject: [PATCH] Add macro M_GREATER_THAN_P & M_LESS_OR_EQUAL_P (src, tests, doc) --- README.md | 10 ++++++++++ m-core.h | 8 ++++++++ tests/test-mcore.c | 14 ++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/README.md b/README.md index 25b90520..114e9ddf 100644 --- a/README.md +++ b/README.md @@ -5453,11 +5453,21 @@ 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].x +##### M\_LESS_OR\_EQUAL\_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\_GREATER_OR\_EQUAL\_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\_GREATER_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. diff --git a/m-core.h b/m-core.h index 625d9786..c0737d13 100644 --- a/m-core.h +++ b/m-core.h @@ -1745,6 +1745,14 @@ M_BEGIN_PROTECTED_CODE a and b shall be in [0..M_MAX_NB_ARGUMENT] */ #define M_GREATER_OR_EQUAL_P(a, b) M_INV(M_LESS_THAN_P(a, b)) +/* Return 1 if a <= b, 0 otherwise + a and b shall be in [0..M_MAX_NB_ARGUMENT] */ +#define M_LESS_OR_EQUAL_P(a, b) M_GREATER_OR_EQUAL_P(b, a) + +/* Return 1 if a > b, 0 otherwise + a and b shall be in [0..M_MAX_NB_ARGUMENT] */ +#define M_GREATER_THAN_P(a, b) M_LESS_THAN_P(b,a) + /* Revert the list given as parameter Example: M_REVERSE(a,b,c) --> c,b,a */ /* Generated by: diff --git a/tests/test-mcore.c b/tests/test-mcore.c index e058a42b..a11fc42c 100644 --- a/tests/test-mcore.c +++ b/tests/test-mcore.c @@ -135,6 +135,20 @@ static void test_incdec(void) assert(!M_GREATER_OR_EQUAL_P(4, 6)); assert(!M_GREATER_OR_EQUAL_P(4, 7)); + assert(M_GREATER_THAN_P(4, 2)); + assert(M_GREATER_THAN_P(4, 3)); + assert(!M_GREATER_THAN_P(4, 4)); + assert(!M_GREATER_THAN_P(4, 5)); + assert(!M_GREATER_THAN_P(4, 6)); + assert(!M_GREATER_THAN_P(4, 7)); + + assert(!M_LESS_OR_EQUAL_P(4, 2)); + assert(!M_LESS_OR_EQUAL_P(4, 3)); + assert(M_LESS_OR_EQUAL_P(4, 4)); + assert(M_LESS_OR_EQUAL_P(4, 5)); + assert(M_LESS_OR_EQUAL_P(4, 6)); + assert(M_LESS_OR_EQUAL_P(4, 7)); + assert(!M_KEYWORD_P(M_UNDERFLOW, M_SUB(1, 1))); assert(M_KEYWORD_P(M_UNDERFLOW, M_SUB(1, 2))); assert(M_KEYWORD_P(M_UNDERFLOW, M_SUB(1, 6)));