CR_TEST_TRAMPOLINE_(Category, Name) \
.identifier_ = #Category "/" #Name, \
.file_ = __FILE__, \
.line_ = __LINE__, \
__VA_ARGS__ \
)); \
#Name, \
#Category, \
CR_IDENTIFIER_(Category, Name, jmp), \
&CR_IDENTIFIER_(Category, Name, extra) \
}; \
CR_ATTRIBUTE(used) \
CR_SECTION_("cr_tst") \
struct criterion_test *CR_IDENTIFIER_(Category, Name, ptr) \
= &CR_IDENTIFIER_(Category, Name, meta) CR_SECTION_SUFFIX_; \
CR_TEST_PROTOTYPE_(Category, Name)
#define CR_TEST_PROTOTYPE_(Category, Name)
#define CR_IDENTIFIER_(Category, Name, Suffix)
156#define CR_TEST_BASE(Category, Name, ...) \
157 CR_TEST_PROTOTYPE_(Category, Name); \
158 CR_TEST_TRAMPOLINE_(Category, Name) \
159 struct criterion_test_extra_data CR_IDENTIFIER_(Category, Name, extra) = \
160 CR_EXPAND(CRITERION_MAKE_STRUCT(criterion_test_extra_data, \
161 .compiler_ = CR_COMPILER_, \
162 .lang_ = CR_LANG, \
163 .kind_ = CR_TEST_NORMAL, \
164 .param_ = (struct criterion_test_params (*)(void))NULL, \
165 .identifier_ = #Category "/" #Name, \
166 .file_ = __FILE__, \
167 .line_ = __LINE__, \
168 __VA_ARGS__ \
169 )); \
170 struct criterion_test CR_IDENTIFIER_(Category, Name, meta) = { \
171 #Name, \
172 #Category, \
173 CR_IDENTIFIER_(Category, Name, jmp), \
174 &CR_IDENTIFIER_(Category, Name, extra) \
175 }; \
176 CR_ATTRIBUTE(used) \
177 CR_SECTION_("cr_tst") \
178 struct criterion_test *CR_IDENTIFIER_(Category, Name, ptr) \
179 = &CR_IDENTIFIER_(Category, Name, meta) CR_SECTION_SUFFIX_; \
180 CR_TEST_PROTOTYPE_(Category, Name)