From ff3964e2eb59a019c4400027adad581f5557a923 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Wed, 21 Feb 2018 22:06:45 +0100 Subject: [PATCH] Factorization of the mympz type --- tests/mympz.h | 36 ++++++++++++++++++++++++++++++++++++ tests/test-marray.c | 34 +++------------------------------- tests/test-mdeque.c | 9 +++------ 3 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 tests/mympz.h diff --git a/tests/mympz.h b/tests/mympz.h new file mode 100644 index 00000000..f1810a9d --- /dev/null +++ b/tests/mympz.h @@ -0,0 +1,36 @@ +#ifndef MY_MPZ_T +#define MY_MPZ_T + +#include +#include "m-string.h" + +static void my_mpz_out_str(FILE *f, const mpz_t z) +{ + mpz_out_str (f, 10, z); +} + +static bool my_mpz_in_str(mpz_t z, FILE *f) +{ + return mpz_inp_str (z, f, 10) > 0; +} + +static bool my_mpz_equal_p(const mpz_t z1, const mpz_t z2) +{ + return mpz_cmp (z1, z2) == 0; +} + +static void my_mpz_str(string_t str, const mpz_t z, bool append) +{ + char *s = mpz_get_str(NULL, 10, z); + assert (s != NULL); + if (append) string_cat_str (str, s); + else string_set_str (str, s); + free(s); +} + +#define MYMPZ_OPLIST \ + (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear), \ + OUT_STR(my_mpz_out_str), IN_STR(my_mpz_in_str), EQUAL(my_mpz_equal_p), \ + GET_STR(my_mpz_str) ) + +#endif diff --git a/tests/test-marray.c b/tests/test-marray.c index 743562b8..d87311fb 100644 --- a/tests/test-marray.c +++ b/tests/test-marray.c @@ -21,41 +21,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include -#include +#include "mympz.h" #include "m-array.h" - -static void my_mpz_out_str(FILE *f, const mpz_t z) -{ - mpz_out_str (f, 10, z); -} - -static bool my_mpz_in_str(mpz_t z, FILE *f) -{ - return mpz_inp_str (z, f, 10) > 0; -} - -static bool my_mpz_equal_p(const mpz_t z1, const mpz_t z2) -{ - return mpz_cmp (z1, z2) == 0; -} - -#include "m-string.h" -static void my_mpz_str(string_t str, const mpz_t z, bool append) -{ - char *s = mpz_get_str(NULL, 10, z); - assert (s != NULL); - if (append) string_cat_str (str, s); - else string_set_str (str, s); - free(s); -} - #include "coverage.h" + START_COVERAGE ARRAY_DEF(array_uint, unsigned int) -ARRAY_DEF(array_mpz, mpz_t, - (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear), \ - OUT_STR(my_mpz_out_str), IN_STR(my_mpz_in_str), EQUAL(my_mpz_equal_p), \ - GET_STR(my_mpz_str) )) +ARRAY_DEF(array_mpz, mpz_t, MYMPZ_OPLIST) END_COVERAGE #define ARRAY_UINT_OPLIST ARRAY_OPLIST(array_uint) diff --git a/tests/test-mdeque.c b/tests/test-mdeque.c index ec1299e2..5805c0c3 100644 --- a/tests/test-mdeque.c +++ b/tests/test-mdeque.c @@ -21,7 +21,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include -#include // For testing purpose only. +#include "mympz.h" #include "m-string.h" #include "m-deque.h" @@ -31,11 +31,8 @@ START_COVERAGE DEQUE_DEF(deque, int) END_COVERAGE -/*DEQUE_DEF(deque_mpz, mpz_t, - (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear), \ - OUT_STR(my_mpz_out_str), IN_STR(my_mpz_in_str), EQUAL(my_mpz_equal_p), \ - GET_STR(my_mpz_str) )) -*/ +DEQUE_DEF(deque_mpz, mpz_t, MYMPZ_OPLIST) + #define OPL DEQUE_OPLIST(deque) static void test_ti1(int n)