Iguana LATEST
Implementation Guardian of Analysis Algorithms
Loading...
Searching...
No Matches
AlgorithmBoilerplate.h
Go to the documentation of this file.
1
3
7#define CONSTRUCT_IGUANA_ALGORITHM(ALGO_NAME, BASE_NAME) \
8 ALGO_NAME(std::string_view name = "") \
9 : BASE_NAME(name == "" ? GetClassName() : name) \
10 { \
11 m_default_config_file = GetDefaultConfigFile(); \
12 m_class_name = GetClassName(); \
13 }
14
17#define DESTROY_IGUANA_ALGORITHM(ALGO_NAME) \
18 ~ALGO_NAME() {}
19
21
26#define IGUANA_ALGORITHM_PUBLIC_MEMBERS(ALGO_NAME, ALGO_FULL_NAME, BASE_NAME) \
27 using BASE_NAME::Start; \
28 using BASE_NAME::Run; \
29 static algo_t Creator() { return std::make_unique<ALGO_NAME>(); } \
30 static std::string GetClassName() { return #ALGO_FULL_NAME; } \
31 static std::string GetDefaultConfigFile() \
32 { \
33 return ConfigFileReader::ConvertAlgoNameToConfigName(#ALGO_FULL_NAME); \
34 }
35
37#define IGUANA_ALGORITHM_PRIVATE_MEMBERS \
38 static bool s_registered;
39
41
47#define DEFINE_IGUANA_SUBALGORITHM(ALGO_NAME, ALGO_FULL_NAME, BASE_NAME) \
48private: \
49 IGUANA_ALGORITHM_PRIVATE_MEMBERS \
50public: \
51 CONSTRUCT_IGUANA_ALGORITHM(ALGO_NAME, BASE_NAME) \
52 DESTROY_IGUANA_ALGORITHM(ALGO_NAME) \
53 IGUANA_ALGORITHM_PUBLIC_MEMBERS(ALGO_NAME, ALGO_FULL_NAME, BASE_NAME)
54
59#define DEFINE_IGUANA_ALGORITHM(ALGO_NAME, ALGO_FULL_NAME) \
60 DEFINE_IGUANA_SUBALGORITHM(ALGO_NAME, ALGO_FULL_NAME, Algorithm)
61
66#define DEFINE_IGUANA_VALIDATOR(VDOR_NAME, VDOR_FULL_NAME) \
67 DEFINE_IGUANA_SUBALGORITHM(VDOR_NAME, VDOR_FULL_NAME, Validator)
68
70
75#define REGISTER_IGUANA_ALGORITHM(ALGO_NAME, ...) \
76 bool ALGO_NAME::s_registered = AlgorithmFactory::Register(ALGO_NAME::GetClassName(), ALGO_NAME::Creator, {__VA_ARGS__});
77
80#define REGISTER_IGUANA_VALIDATOR(VDOR_NAME) \
81 REGISTER_IGUANA_ALGORITHM(VDOR_NAME)
82
84
87#define DEPRECATE_IGUANA_ALGORITHM(CODE) \
88 void Start(hipo::banklist& banks) override \
89 { \
90 CODE \
91 } \
92 bool Run(hipo::banklist& banks) const override \
93 { \
94 CODE return false; \
95 } \
96 void Stop() override \
97 { \
98 CODE \
99 }