Iguana
1.0.0
Implementation Guardian of Analysis Algorithms
Toggle main menu visibility
Loading...
Searching...
No Matches
AlgorithmSequence.h
1
#pragma once
2
3
#include "Algorithm.h"
4
5
namespace
iguana {
6
16
class
AlgorithmSequence
:
public
Algorithm
17
{
18
19
DEFINE_IGUANA_ALGORITHM
(
AlgorithmSequence
, seq)
20
21
public
:
22
23
void
Start
(hipo::banklist& banks)
override
;
24
bool
Run
(hipo::banklist& banks)
const override
;
25
void
Stop
()
override
;
26
36
void
Add
(std::string
const
& algo_class_name, std::string
const
& algo_instance_name =
""
);
37
46
template
<
class
ALGORITHM>
47
void
Add
(std::string_view algo_instance_name =
""
)
48
{
49
if
(algo_instance_name ==
""
)
50
Add
(std::make_unique<ALGORITHM>());
51
else
52
Add
(std::make_unique<ALGORITHM>(algo_instance_name));
53
}
54
63
void
Add
(algo_t&& algo);
64
73
template
<
class
ALGORITHM>
74
ALGORITHM*
Get
(std::string
const
& algo_instance_name)
75
{
76
if
(
auto
it{m_algo_names.find(algo_instance_name)}; it != m_algo_names.end())
77
return
dynamic_cast<
ALGORITHM*
>
(m_sequence[it->second].get());
78
m_log
->Error(
"cannot find algorithm '{}' in sequence"
, algo_instance_name);
79
throw
std::runtime_error(
"cannot Get algorithm"
);
80
}
81
87
template
<
typename
OPTION_TYPE>
88
void
SetOption
(std::string
const
& algo_instance_name, std::string
const
& key,
const
OPTION_TYPE val)
89
{
90
Get<Algorithm>
(algo_instance_name)->SetOption(key, val);
91
}
92
95
void
SetName
(std::string_view name);
96
101
std::vector<std::string>
GetCreatedBankNames
(std::string
const
& algo_instance_name)
const
noexcept
(
false
);
102
107
std::string
GetCreatedBankName
(std::string
const
& algo_instance_name)
const
noexcept
(
false
);
108
111
void
PrintSequence
(
Logger::Level
level = Logger::info)
const
;
112
118
void
SetConfigFileForEachAlgorithm
(std::string
const
& name);
119
125
void
SetConfigDirectoryForEachAlgorithm
(std::string
const
& name);
126
134
void
ForEachAlgorithm
(std::function<
void
(algo_t&)> func);
135
136
private
:
137
139
std::vector<algo_t> m_sequence;
140
142
std::unordered_map<std::string, std::vector<algo_t>::size_type> m_algo_names;
143
};
144
}
DEFINE_IGUANA_ALGORITHM
#define DEFINE_IGUANA_ALGORITHM(ALGO_NAME, ALGO_FULL_NAME)
Definition
AlgorithmBoilerplate.h:58
iguana::AlgorithmSequence
An algorithm that can run a sequence of algorithms.
Definition
AlgorithmSequence.h:17
iguana::AlgorithmSequence::SetConfigDirectoryForEachAlgorithm
void SetConfigDirectoryForEachAlgorithm(std::string const &name)
Set a custom configuration file directory for each algorithm in the sequence.
iguana::AlgorithmSequence::Add
void Add(std::string_view algo_instance_name="")
Definition
AlgorithmSequence.h:47
iguana::AlgorithmSequence::Stop
void Stop() override
Finalize this algorithm after all events are processed.
iguana::AlgorithmSequence::GetCreatedBankNames
std::vector< std::string > GetCreatedBankNames(std::string const &algo_instance_name) const noexcept(false)
iguana::AlgorithmSequence::Add
void Add(algo_t &&algo)
iguana::AlgorithmSequence::Add
void Add(std::string const &algo_class_name, std::string const &algo_instance_name="")
iguana::AlgorithmSequence::Get
ALGORITHM * Get(std::string const &algo_instance_name)
Definition
AlgorithmSequence.h:74
iguana::AlgorithmSequence::ForEachAlgorithm
void ForEachAlgorithm(std::function< void(algo_t &)> func)
Call a function for each algorithm in the sequence.
iguana::AlgorithmSequence::SetConfigFileForEachAlgorithm
void SetConfigFileForEachAlgorithm(std::string const &name)
Set a custom configuration file for each algorithm in the sequence.
iguana::AlgorithmSequence::GetCreatedBankName
std::string GetCreatedBankName(std::string const &algo_instance_name) const noexcept(false)
iguana::AlgorithmSequence::SetOption
void SetOption(std::string const &algo_instance_name, std::string const &key, const OPTION_TYPE val)
Definition
AlgorithmSequence.h:88
iguana::AlgorithmSequence::Start
void Start(hipo::banklist &banks) override
Initialize this algorithm before any events are processed, with the intent to process banks.
iguana::AlgorithmSequence::SetName
void SetName(std::string_view name)
iguana::AlgorithmSequence::PrintSequence
void PrintSequence(Logger::Level level=Logger::info) const
iguana::AlgorithmSequence::Run
bool Run(hipo::banklist &banks) const override
Run Function: Process an event's hipo::banklist
iguana::Algorithm::Algorithm
Algorithm(std::string_view name)
Definition
Algorithm.h:46
iguana::Logger::Level
Level
Definition
Logger.h:32
iguana::Object::m_log
std::unique_ptr< Logger > m_log
Logger instance for this object
Definition
Object.h:52
iguana_v1.0.0
src
iguana
algorithms
AlgorithmSequence.h
Generated by
1.18.0