5 #ifndef BITCOIN_TEST_FUZZ_FUZZ_H 6 #define BITCOIN_TEST_FUZZ_FUZZ_H 12 #include <string_view> 18 #define LIMITED_WHILE(condition, limit) \ 19 for (unsigned _count{limit}; (condition) && _count; --_count) 31 #define FUZZ_TARGET(name) \ 32 FUZZ_TARGET_INIT(name, FuzzFrameworkEmptyInitFun) 34 #define FUZZ_TARGET_INIT(name, init_fun) \ 35 FUZZ_TARGET_INIT_HIDDEN(name, init_fun, false) 37 #define FUZZ_TARGET_INIT_HIDDEN(name, init_fun, hidden) \ 38 void name##_fuzz_target(FuzzBufferType); \ 39 struct name##_Before_Main { \ 40 name##_Before_Main() \ 42 FuzzFrameworkRegisterTarget(#name, name##_fuzz_target, init_fun, hidden); \ 44 } const static g_##name##_before_main; \ 45 void name##_fuzz_target(FuzzBufferType buffer) 47 #endif // BITCOIN_TEST_FUZZ_FUZZ_H void FuzzFrameworkEmptyInitFun()
std::function< void(FuzzBufferType)> TypeTestOneInput
std::function< void()> TypeInitialize
A Span is an object that can refer to a contiguous sequence of objects.
void FuzzFrameworkRegisterTarget(std::string_view name, TypeTestOneInput target, TypeInitialize init, TypeHidden hidden)