From ac5b689950d4dff67ef708f16dd6de2bbf14fc0d Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Mon, 30 Apr 2018 20:00:26 +0200 Subject: [PATCH] Add method _set2 for tuple. --- m-tuple.h | 13 +++++++++++++ tests/test-mtuple.c | 3 +++ 2 files changed, 16 insertions(+) diff --git a/m-tuple.h b/m-tuple.h index 67054dd3..b790f7ce 100644 --- a/m-tuple.h +++ b/m-tuple.h @@ -36,6 +36,7 @@ TUPLE_DEFINE_INIT_SET(name, __VA_ARGS__) \ TUPLE_DEFINE_INIT_SET2(name, __VA_ARGS__) \ TUPLE_DEFINE_SET(name, __VA_ARGS__) \ + TUPLE_DEFINE_SET2(name, __VA_ARGS__) \ TUPLE_DEFINE_CLEAR(name, __VA_ARGS__) \ TUPLE_DEFINE_GETTER(name, __VA_ARGS__) \ TUPLE_DEFINE_SETTER(name, __VA_ARGS__) \ @@ -132,6 +133,18 @@ TUPLE_GET_SET a ( my -> TUPLE_GET_FIELD a , org -> TUPLE_GET_FIELD a ); +#define TUPLE_DEFINE_SET2(name, ...) \ + static inline void M_C(name, _set2)(M_C(name,_t) my \ + M_MAP(TUPLE_DEFINE_SET2_PROTO, __VA_ARGS__) \ + ) { \ + M_MAP(TUPLE_DEFINE_SET2_FUNC , __VA_ARGS__) \ + } +#define TUPLE_DEFINE_SET2_PROTO(a) \ + , TUPLE_GET_TYPE a const TUPLE_GET_FIELD a +#define TUPLE_DEFINE_SET2_FUNC(a) \ + TUPLE_GET_SET a ( my -> TUPLE_GET_FIELD a , TUPLE_GET_FIELD a ); + + #define TUPLE_DEFINE_CLEAR(name, ...) \ static inline void M_C(name, _clear)(M_C(name,_t) my) { \ M_MAP(TUPLE_DEFINE_CLEAR_FUNC , __VA_ARGS__) \ diff --git a/tests/test-mtuple.c b/tests/test-mtuple.c index 949dd10d..6729626b 100644 --- a/tests/test-mtuple.c +++ b/tests/test-mtuple.c @@ -120,6 +120,9 @@ int main(void) pair3_init_set2(p4, s, z); int i = pair3_cmp (p3, p4); assert (i == 0); + pair3_set2(p4, s, z); + i = pair3_cmp (p3, p4); + assert (i == 0); my_mpz_set_ui (z, 1443); pair3_set_value(p4, z); i = pair3_cmp (p3, p4);