1 #ifndef MHO_OperatorBuilderManager_HH__
2 #define MHO_OperatorBuilderManager_HH__
29 fOperatorToolbox(toolbox),
31 fContainerStore(fdata->GetContainerStore() ),
32 fParameterStore(fdata->GetParameterStore() )
34 fFormat = control_format;
39 for(std::size_t i = 0; i < fAllBuilders.size(); i++)
41 delete fAllBuilders[i];
44 fNameToBuilderMap.clear();
45 fCategoryToBuilderMap.clear();
68 std::string scat(cat);
93 template<
typename XBuilderType >
void AddBuilderType(
const std::string& builder_name,
const std::string& format_key)
95 auto format_it = fFormat.find(format_key);
96 if(format_it != fFormat.end())
98 auto it = fNameToBuilderMap.find(builder_name);
99 if(it == fNameToBuilderMap.end())
101 auto builder =
new XBuilderType(fOperatorToolbox, fFringeData);
102 builder->SetFormat(fFormat[format_key]);
105 std::string category =
"unknown";
106 if(format_it->contains(
"operator_category"))
108 category = (*format_it)[
"operator_category"].get< std::string >();
110 fAllBuilders.push_back(builder);
111 fNameToBuilderMap.emplace(builder_name, builder);
112 fCategoryToBuilderMap.emplace(category, builder);
117 msg_error(
"initialization",
"cannot add builder for operator with format key: " << format_key << eom);
125 void CreateNullFormatBuilders();
134 template<
typename XBuilderType >
void AddBuilderTypeWithFormat(
const std::string& builder_name,
const mho_json& format)
136 auto it = fNameToBuilderMap.find(builder_name);
137 if(it == fNameToBuilderMap.end())
140 auto builder =
new XBuilderType(fOperatorToolbox, fFringeData);
141 builder->SetFormat(format);
144 std::string category =
"unknown";
145 if(format.contains(
"operator_category"))
147 category = format[
"operator_category"].get< std::string >();
149 fAllBuilders.push_back(builder);
150 fNameToBuilderMap.emplace(builder_name, builder);
151 fCategoryToBuilderMap.emplace(category, builder);
160 MHO_OperatorToolbox* fOperatorToolbox;
163 MHO_FringeData* fFringeData;
164 MHO_ContainerStore* fContainerStore;
165 MHO_ParameterStore* fParameterStore;
168 std::vector< MHO_OperatorBuilder* > fAllBuilders;
171 std::map< std::string, MHO_OperatorBuilder* > fNameToBuilderMap;
174 std::multimap< std::string, MHO_OperatorBuilder* > fCategoryToBuilderMap;
#define msg_error(xKEY, xCONTENT)
Definition: MHO_Message.hh:244
Class MHO_FringeData.
Definition: MHO_FringeData.hh:30
Manages all the various operator builders.
Definition: MHO_OperatorBuilderManager.hh:24
void BuildOperatorCategory(const char *cat)
Builds operator category from input string and calls BuildOperatorCategory with it.
Definition: MHO_OperatorBuilderManager.hh:66
void CreateDefaultBuilders()
Registers default operator builders for various purposes such as channel labeling,...
Definition: MHO_OperatorBuilderManager.cc:36
void AddBuilderType(const std::string &builder_name, const std::string &format_key)
Adds a new builder type with specified format, inserted into (builder) map for later use.
Definition: MHO_OperatorBuilderManager.hh:93
virtual ~MHO_OperatorBuilderManager()
Definition: MHO_OperatorBuilderManager.hh:37
MHO_OperatorBuilderManager(MHO_OperatorToolbox *toolbox, MHO_FringeData *fdata, mho_json control_format)
Definition: MHO_OperatorBuilderManager.hh:26
void SetControlStatements(mho_json *statements)
pass in parsed control file elements
Definition: MHO_OperatorBuilderManager.hh:53
std::size_t GetNBuildersInCategory(std::string cat)
return the number of operator builders in the specified category
Definition: MHO_OperatorBuilderManager.cc:26
Definition: MHO_ChannelLabeler.hh:17