43 rootProfile->readFromXml(node);
51 for (std::string project : packages)
54 profilesFile /= project;
55 profilesFile /=
"StatechartProfiles-" + project +
".xml";
57 if (std::filesystem::exists(profilesFile))
62 profiles->readStatechartProfiles(xmlReader);
64 catch (std::exception& e)
66 ARMARX_ERROR_S <<
"Reading " << profilesFile.string() <<
" failed: " << e.what();
71 ARMARX_DEBUG_S <<
"StatechartProfiles File not found for project " << project <<
": "
72 << profilesFile.string();
79std::vector<StatechartProfilePtr>
82 std::vector<StatechartProfilePtr> profiles;
90 std::set<std::string> result;
94 result.insert(leaf->getName());
107 return rootProfile->findByNameRecursive(name);
118 std::vector<StatechartProfilePtr>& profiles)
const
120 if (currentProfile->children.size() == 0)
122 profiles.push_back(currentProfile);
136 this->parent = parent;
144 std::string packageName = packageNode.attribute_value(
"name");
146 if (std::find(packages.begin(), packages.end(), packageName) == packages.end())
148 packages.push_back(packageName);
153 additionalProperties +=
"#Properties from Statechart profile file: " +
161 std::string name = profileNode.attribute_value(
"name");
173 children.push_back(profile);
175 profile->readFromXml(profileNode);
182 return children.size() == 0;
188 return !parent.lock();
191std::vector<std::string>
194 std::vector<std::string> packages;
199 packages = parent->getAllPackages();
202 for (std::string package : this->packages)
204 if (std::find(packages.begin(), packages.end(), package) == packages.end())
206 packages.push_back(package);
229 if (parent->isRoot())
234 return parent->getFullName() +
"::" + name;
240 if (this->name == name)
258const std::vector<StatechartProfilePtr>&
281 return parent.lock();
299 return additionalProperties;
The CMakePackageFinder class provides an interface to the CMake Package finder capabilities.
std::vector< RapidXmlReaderNode > nodes(const char *name=nullptr) const
std::string first_node_value(const char *nodeName=nullptr) const
bool has_node(const char *nodeName) const
std::string attribute_value_or_default(const char *attrName, const std::string &defaultValue) const
static RapidXmlReaderPtr FromFile(const std::string &path)
std::string getStatechartGroupPrefix() const
const std::vector< StatechartProfilePtr > & getChildren() const
std::string getFullName() const
Returns name of profile with all parents in the form of Root::Armar3Base::Armar3Simualation if Armar3...
StatechartProfilePtr getParent() const
StatechartProfile(const std::string &name, StatechartProfilePtr parent)
StatechartProfilePtr getChildByName(std::string name) const
std::string getName() const
std::vector< std::string > getAllPackages() const
void readFromXml(RapidXmlReaderNode node)
StatechartProfilePtr findByNameRecursive(std::string name) const
std::string getAdditionalProperties() const
StatechartProfilePtr getRootProfile() const
StatechartProfilePtr getProfileByName(std::string name)
static StatechartProfilesPtr ReadProfileFiles(const std::vector< std::string > &packages)
std::vector< StatechartProfilePtr > getAllLeaves() const
static std::string GetRootName()
std::set< std::string > getAllLeafNames() const
void readStatechartProfiles(RapidXmlReaderPtr reader)
#define ARMARX_DEBUG_S
The logging level for output that is only interesting while debugging.
#define ARMARX_ERROR_S
The logging level for unexpected behaviour, that must be fixed.
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< StatechartProfiles > StatechartProfilesPtr
std::shared_ptr< RapidXmlReader > RapidXmlReaderPtr
std::shared_ptr< class StatechartProfile > StatechartProfilePtr