diff --git a/m-variant.h b/m-variant.h index 3a2bef60..3f6c1753 100644 --- a/m-variant.h +++ b/m-variant.h @@ -47,6 +47,7 @@ VARIANTI_DEFINE_TEST_P(name, __VA_ARGS__) \ VARIANTI_DEFINE_SETTER(name, __VA_ARGS__) \ VARIANTI_DEFINE_GETTER(name, __VA_ARGS__) \ + VARIANTI_DEFINE_CLEAN_FUNC(name, __VA_ARGS__) \ M_IF(VARIANTI_ALL_HASH(__VA_ARGS__)) \ (VARIANTI_DEFINE_HASH(name, __VA_ARGS__),) \ M_IF(VARIANTI_ALL_EQUAL(__VA_ARGS__)) \ @@ -164,7 +165,6 @@ VARIANTI_GET_CLEAR a (my -> value. VARIANTI_GET_FIELD a); \ break; - #define VARIANTI_DEFINE_TEST_P(name, ...) \ static inline bool M_C(name, _empty_p)(M_C(name,_t) my) { \ return my->type == M_C(name, _EMPTY); \ @@ -389,6 +389,12 @@ if (!b) return false; \ } +#define VARIANTI_DEFINE_CLEAN_FUNC(name, ...) \ + static inline void M_C(name, _clean)(M_C(name,_t) my) \ + { \ + M_C(name, _clear)(my); \ + } \ + #define VARIANTI_OPLIST(name, ...) \ (INIT(M_C(name,_init)), \ INIT_SET(M_C(name, _init_set)), \