Newer
Older
Martin Christoph Hierholzer
committed
/*
* ControlSystemModule.cc
*
* Created on: Jun 28, 2016
* Author: Martin Hierholzer
*/
#include "ControlSystemModule.h"
Martin Christoph Hierholzer
committed
namespace ChimeraTK {
ControlSystemModule::ControlSystemModule() : Module(nullptr, "<ControlSystem>", "") {}
/*********************************************************************************************************************/
ControlSystemModule::ControlSystemModule(const std::string& _variableNamePrefix)
: Module(nullptr,
_variableNamePrefix.empty() ? "<ControlSystem>" :
_variableNamePrefix.substr(_variableNamePrefix.find_last_of("/") + 1),
""),
variableNamePrefix(_variableNamePrefix) {}
Martin Christoph Hierholzer
committed
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed
VariableNetworkNode ControlSystemModule::operator()(
const std::string& variableName, const std::type_info& valueType, size_t nElements) const {
assert(variableName.find_first_of("/") == std::string::npos);
if(variables.count(variableName) == 0) {
variables[variableName] = {
variableNamePrefix / variableName, {VariableDirection::invalid, false}, valueType, nElements};
}
return variables[variableName];
Martin Christoph Hierholzer
committed
}
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed
Module& ControlSystemModule::operator[](const std::string& moduleName) const {
assert(moduleName.find_first_of("/") == std::string::npos);
if(subModules.count(moduleName) == 0) {
subModules[moduleName] = {variableNamePrefix / moduleName};
}
return subModules[moduleName];
Martin Christoph Hierholzer
committed
}
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed
const Module& ControlSystemModule::virtualise() const { return *this; }
Martin Christoph Hierholzer
committed
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed
std::list<VariableNetworkNode> ControlSystemModule::getAccessorList() const {
std::list<VariableNetworkNode> list;
for(auto& v : variables) list.push_back(v.second);
return list;
}
Martin Christoph Hierholzer
committed
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed
std::list<Module*> ControlSystemModule::getSubmoduleList() const {
std::list<Module*> list;
for(auto& m : subModules) list.push_back(&m.second);
return list;
}
Martin Christoph Hierholzer
committed
/*********************************************************************************************************************/
Martin Christoph Hierholzer
committed