From 2b66cda5245d10effb3ddf1b3ed231347bbc966a Mon Sep 17 00:00:00 2001 From: Snaipe Date: Wed, 23 Sep 2015 20:10:00 +0200 Subject: [PATCH] Added criterion::parameters for simpler C++ parameter generation --- include/criterion/parameterized.h | 11 +++++++++++ include/criterion/types.h | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/criterion/parameterized.h b/include/criterion/parameterized.h index 6bfec4e..d5cde42 100644 --- a/include/criterion/parameterized.h +++ b/include/criterion/parameterized.h @@ -2,6 +2,10 @@ # define CRITERION_PARAMETERIZED_H_ # include "criterion.h" +# include "alloc.h" +# ifdef __cplusplus +# include +# endif # ifdef __cplusplus # define CR_PARAM_TEST_PROTOTYPE_(Param, Category, Name) \ @@ -47,4 +51,11 @@ (struct criterion_test_params) { .size = sizeof (Type), (void*)(Array), __VA_ARGS__ } # endif +# ifdef __cplusplus +namespace criterion { + template + using parameters = std::vector>; +} +# endif + #endif /* !CRITERION_PARAMETERIZED_H_ */ diff --git a/include/criterion/types.h b/include/criterion/types.h index 7e98bc8..d3dada3 100644 --- a/include/criterion/types.h +++ b/include/criterion/types.h @@ -24,8 +24,10 @@ #ifndef CRITERION_TYPES_H_ # define CRITERION_TYPES_H_ +# include "alloc.h" # ifdef __cplusplus # include +# include using std::size_t; # else # include @@ -59,6 +61,14 @@ struct criterion_test_params { , length(length) , cleanup(cleanup) {} + + template + constexpr criterion_test_params(std::vector>& vec) + : size(sizeof (T)) + , params(&vec[0]) + , length(vec.size()) + , cleanup(nullptr) + {} # endif };