1 #ifndef _sdet_ManagerRegister_h_
2 #define _sdet_ManagerRegister_h_
8 #include <boost/iterator/indirect_iterator.hpp>
9 #include <det/VManager.h>
10 #include <utl/ErrorLogger.h>
20 class VManagerBuilder;
56 virtual void Init(
const std::string&) { }
90 void Configure(
const std::ostringstream& configInstructions);
138 #define MANAGERREGISTER_GETDATA(_T_...) \
139 Status GetData(_T_& returnData, \
140 const std::string& componentProperty, \
141 const std::string& componentName, \
142 const IndexMap& componentIndex) const \
143 { return GetManagerData(returnData, componentProperty, componentName, componentIndex); }
162 #undef MANAGERREGISTER_GETDATA
167 const std::string& component,
168 const std::string& property,
172 Handle handle(returnData);
173 return GenericGetData(handle, component, property, componentIndex);
179 const std::string& component,
180 const std::string& property,
184 Handle handle(returnData);
206 const std::string& componentProperty,
207 const std::string& componentName,
211 bool seenOne =
false;
215 it->GetData(returnData, componentProperty, componentName, componentIndex);
220 if (FindComponent<bool>(
"reportErrors",
true, componentIndex)) {
222 std::ostringstream warn;
224 <<
") in " <<
GetName() <<
" found "
226 <<
" data. Trying to figure out the reason why...";
229 it->SetReportingErrors(
true);
230 it->GetData(returnData, componentProperty, componentName, componentIndex);
231 it->SetReportingErrors(
false);
244 const std::string& component,
245 const std::string& property,
249 bool seenOne =
false;
253 it->GetData(returnData, component, property, componentIndex);
258 if (FindComponent<bool>(
"reportErrors",
true, componentIndex)) {
260 std::ostringstream warn;
262 <<
") in " <<
GetName() <<
" found "
264 <<
" data. Trying to figure out the reason why...";
267 it->SetReportingErrors(
true);
268 it->GetData(returnData, component, property, componentIndex);
269 it->SetReportingErrors(
false);
281 const std::string& component,
const std::string& property,
292 #endif // det_ManagerRegister_h_
Status GetManagerData(T &returnData, const std::string &componentProperty, const std::string &componentName, const IndexMap &componentIndex) const
virtual Status GenericGetData(Handle &returnData, const std::string &component, const std::string &property, const IndexMap &componentIndex) const
Status GetData(T &returnData, const std::string &component, const std::string &property, const IndexMap &componentIndex=IndexMap()) const
static void NotFoundAndThrow(const Handle &handle, const std::string &component, const std::string &property, const IndexMap &index)
void Configure(const utl::Branch branch)
Configure the ManagerRegister from a Branch.
Status GetDataOrThrow(T &returnData, const std::string &component, const std::string &property, const IndexMap &index=IndexMap()) const
ManagerIterator ManagersBegin() const
Iterator pointing to first available manager.
ManagerBuilderMap fManagerBuilderRegister
Interface for detector managers.
ManagerCollection fConfiguredManagerList
Class representing a document branch.
boost::indirect_iterator< InternalManagerIterator, VManager & > ManagerIterator
Iterator over configured managers.
void RegisterBuilder(const std::string &name, VManagerBuilder &builder)
static std::string QueryInfoMessage(const Handle &returnData, const std::string &component)
ManagerCollection::const_iterator InternalManagerIterator
std::map< std::string, VManagerBuilder * > ManagerBuilderMap
#define MANAGERREGISTER_GETDATA(_T_...)
const std::string & GetName() const
#define WARNING(message)
Macro for logging warning messages.
const VManager & GetManager(const std::string &managerName) const
Get a specific manager by name.
virtual void Init(const std::string &)
Manager Initialization. configLink is the CentralConfig hook for the configuration file...
std::map< std::string, std::string > IndexMap
Register for detector description managers.
std::vector< VManager * > ManagerCollection
ManagerRegister(const std::string &name)
ManagerIterator ManagersEnd() const
Iterator pointing one past the last available manager.
std::string GetConfiguredManagerListString() const
void InterpretXML(const utl::Branch &topBranch)
virtual ~ManagerRegister()
Status
Specifies success or (eventually) various possible failure modes.