7#include <JANA/JFactorySet.h>
8#include <JANA/JFactoryGenerator.h>
18 std::vector<std::string> m_default_input_tags;
19 std::vector<std::string> m_default_output_tags;
23 struct UntypedWiring {
25 std::vector<std::string> m_default_input_tags;
26 std::vector<std::string> m_default_output_tags;
27 std::map<std::string, std::string> m_config_params;
32 std::vector<std::string> default_output_tags,
35 m_wirings.push_back({.m_tag = tag,
36 .m_default_input_tags = default_input_tags,
37 .m_default_output_tags = default_output_tags,
38 .m_default_cfg = cfg});
42 std::vector<std::string> default_output_tags,
JApplication* app) {
44 m_wirings.push_back({.m_tag = tag,
45 .m_default_input_tags = default_input_tags,
46 .m_default_output_tags = default_output_tags,
47 .m_default_cfg = {}});
52 void AddWiring(std::string tag, std::vector<std::string> default_input_tags,
55 m_wirings.push_back({.m_tag = tag,
56 .m_default_input_tags = default_input_tags,
57 .m_default_output_tags = default_output_tags,
58 .m_default_cfg = cfg});
61 void AddWiring(std::string tag, std::vector<std::string> default_input_tags,
62 std::vector<std::string> default_output_tags,
63 std::map<std::string, std::string> config_params) {
67 factory.ConfigureAllParameters(config_params);
68 auto config = factory.config();
70 m_wirings.push_back({.m_tag = tag,
71 .m_default_input_tags = default_input_tags,
72 .m_default_output_tags = default_output_tags,
73 .m_default_cfg = config});
78 for (
const auto& wiring : m_wirings) {
80 FactoryT* factory =
new FactoryT;
81 factory->SetApplication(m_app);
82 factory->SetPluginName(this->GetPluginName());
83 factory->SetFactoryName(JTypeInfo::demangle<FactoryT>());
84 factory->config() = wiring.m_default_cfg;
89 factory->PreInit(wiring.m_tag, wiring.m_default_input_tags, wiring.m_default_output_tags);
92 factory_set->Add(factory);
97 std::vector<TypedWiring> m_wirings;
Definition JOmniFactoryGeneratorT.h:11
void AddWiring(std::string tag, std::vector< std::string > default_input_tags, std::vector< std::string > default_output_tags, FactoryConfigType cfg)
Definition JOmniFactoryGeneratorT.h:52
JOmniFactoryGeneratorT(JApplication *app)
Definition JOmniFactoryGeneratorT.h:50
JOmniFactoryGeneratorT(std::string tag, std::vector< std::string > default_input_tags, std::vector< std::string > default_output_tags, JApplication *app)
Definition JOmniFactoryGeneratorT.h:41
void GenerateFactories(JFactorySet *factory_set) override
Definition JOmniFactoryGeneratorT.h:76
void AddWiring(std::string tag, std::vector< std::string > default_input_tags, std::vector< std::string > default_output_tags, std::map< std::string, std::string > config_params)
Definition JOmniFactoryGeneratorT.h:61
typename FactoryT::ConfigType FactoryConfigType
Definition JOmniFactoryGeneratorT.h:13
JOmniFactoryGeneratorT(std::string tag, std::vector< std::string > default_input_tags, std::vector< std::string > default_output_tags, FactoryConfigType cfg, JApplication *app)
Definition JOmniFactoryGeneratorT.h:31