From 44dc66869abdb060b714b3c9c862a1ddae70dc4f Mon Sep 17 00:00:00 2001 From: Fabian Paus <fabian.paus@kit.edu> Date: Mon, 5 Jul 2021 17:13:10 +0200 Subject: [PATCH] Remove heavy include from common header file --- .../armem/client/MemoryNameSystem.cpp | 1 + .../tree_visitors/TreeTypedDataVisitor.h | 2 + .../codegenerator/typeReader/xml/Data.cpp | 94 +++++++++++++++ .../core/codegenerator/typeReader/xml/Data.h | 114 +++++------------- .../core/navigator/data/container/Dict.cpp | 2 + .../aron/core/navigator/type/Navigator.h | 2 +- .../core/navigator/type/container/Object.cpp | 5 +- .../core/navigator/type/container/Tuple.cpp | 1 + .../type/ndarray/EigenQuaternion.cpp | 2 + 9 files changed, 133 insertions(+), 90 deletions(-) diff --git a/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp b/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp index 2478cba21..4395b55fd 100644 --- a/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp +++ b/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp @@ -7,6 +7,7 @@ #include <RobotAPI/libraries/armem/client/Reader.h> #include <RobotAPI/libraries/armem/client/Writer.h> +#include <SimoxUtility/algorithm/string/string_tools.h> namespace armarx::armem::client { diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h index fb1c1baa5..49885f7eb 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h +++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h @@ -13,6 +13,8 @@ #include <RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeDataVisitorBase.h> +#include <SimoxUtility/algorithm/string/string_tools.h> + namespace armarx::armem::gui::instance { diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp index 9a2b8a18a..a593bad8c 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp +++ b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp @@ -22,3 +22,97 @@ */ #include "Data.h" + +#include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h> + +#include <SimoxUtility/algorithm/string/string_tools.h> + +namespace armarx::aron::xmltypereader +{ + + void Data::EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att) + { + if (!HasAttribute(node, att)) + { + throw error::StringNotValidException("XMLReaderData", "EnforceAttribute", "A <" + node.name() + ">-tag does not have the correct attribute", att); + } + } + + bool Data::HasAttribute(const RapidXmlReaderNode& node, const std::string& att) + { + return node.has_attribute(att.c_str()); + } + + std::string Data::GetAttribute(const RapidXmlReaderNode& node, const std::string& att) + { + EnforceAttribute(node, att); + return node.attribute_value(att.c_str()); + } + + std::string Data::GetAttributeWithDefault(const armarx::RapidXmlReaderNode& node, const std::string& att, const std::string def) + { + if (!(HasAttribute(node, att))) + { + return def; + } + return node.attribute_value(att.c_str()); + } + + bool Data::AttributeIsTrue(const armarx::RapidXmlReaderNode& node, const std::string& att) + { + if (HasAttribute(node, att)) + { + std::string v = simox::alg::to_lower(node.attribute_value(att.c_str())); + if (v == "1" or v == "true" or v == "wahr" or v == "yes" or v == "ja" or v == "") + { + return true; + } + } + return false; + } + + bool Data::HasTagName(const armarx::RapidXmlReaderNode& node, const std::string& name) + { + return (simox::alg::to_lower(name) == simox::alg::to_lower(node.name())); + } + + void Data::EnforceTagName(const armarx::RapidXmlReaderNode& node, const std::string& name) + { + if (!(HasTagName(node, name))) + { + throw error::StringNotValidException("XMLReaderData", "EnforceTagName", "The node <" + node.name() + "> has the wrong tag", name); + } + } + + std::string Data::GetTagName(const armarx::RapidXmlReaderNode& node) + { + return simox::alg::to_lower(node.name()); + } + + bool Data::CheckMinChildSize(const armarx::RapidXmlReaderNode& node, const size_t size) + { + std::vector<RapidXmlReaderNode> children = node.nodes(); + return children.size() >= size; + } + + bool Data::CheckMaxChildSize(const armarx::RapidXmlReaderNode& node, const size_t size) + { + std::vector<RapidXmlReaderNode> children = node.nodes(); + return children.size() <= size; + } + + bool Data::CheckExactChildSize(const armarx::RapidXmlReaderNode& node, const size_t size) + { + std::vector<RapidXmlReaderNode> children = node.nodes(); + return children.size() == size; + } + + void Data::EnforceChildSize(const armarx::RapidXmlReaderNode& node, const size_t size) + { + if (!Data::CheckExactChildSize(node, size)) + { + throw error::SizeNotValidException("XMLReaderData", "EnforceChildSize", "The node <" + node.name() + "> has the wrong number of children", node.nodes().size(), size); + } + } + +} diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h index 852bf2bbd..4950d51f7 100644 --- a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h +++ b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h @@ -28,12 +28,13 @@ #include <map> // ArmarX -#include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h> - #include <RobotAPI/libraries/aron/core/Concepts.h> - #include <RobotAPI/libraries/aron/core/navigator/type/AllNavigators.h> +namespace armarx +{ + class RapidXmlReaderNode; +} namespace armarx::aron::xmltypereader { @@ -89,89 +90,28 @@ namespace armarx::aron::xmltypereader HANDLE_ALL_ARON_TYPES #undef RUN_ARON_MACRO - static void EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att) - { - if (!HasAttribute(node, att)) - { - throw error::StringNotValidException("XMLReaderData", "EnforceAttribute", "A <" + node.name() + ">-tag does not have the correct attribute", att); - } - } - - static bool HasAttribute(const RapidXmlReaderNode& node, const std::string& att) - { - return node.has_attribute(att.c_str()); - } - - static std::string GetAttribute(const RapidXmlReaderNode& node, const std::string& att) - { - EnforceAttribute(node, att); - return node.attribute_value(att.c_str()); - } - - static std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string def) - { - if (!(HasAttribute(node, att))) - { - return def; - } - return node.attribute_value(att.c_str()); - } - - static bool AttributeIsTrue(const RapidXmlReaderNode& node, const std::string& att) - { - if (HasAttribute(node, att)) - { - std::string v = simox::alg::to_lower(node.attribute_value(att.c_str())); - if (v == "1" or v == "true" or v == "wahr" or v == "yes" or v == "ja" or v == "") - { - return true; - } - } - return false; - } - - static bool HasTagName(const RapidXmlReaderNode& node, const std::string& name) - { - return (simox::alg::to_lower(name) == simox::alg::to_lower(node.name())); - } - - static void EnforceTagName(const RapidXmlReaderNode& node, const std::string& name) - { - if (!(HasTagName(node, name))) - { - throw error::StringNotValidException("XMLReaderData", "EnforceTagName", "The node <" + node.name() + "> has the wrong tag", name); - } - } - - static std::string GetTagName(const RapidXmlReaderNode& node) - { - return simox::alg::to_lower(node.name()); - } - - static bool CheckMinChildSize(const RapidXmlReaderNode& node, const size_t size) - { - std::vector<RapidXmlReaderNode> children = node.nodes(); - return children.size() >= size; - } - - static bool CheckMaxChildSize(const RapidXmlReaderNode& node, const size_t size) - { - std::vector<RapidXmlReaderNode> children = node.nodes(); - return children.size() <= size; - } - - static bool CheckExactChildSize(const RapidXmlReaderNode& node, const size_t size) - { - std::vector<RapidXmlReaderNode> children = node.nodes(); - return children.size() == size; - } - - static void EnforceChildSize(const RapidXmlReaderNode& node, const size_t size) - { - if (!Data::CheckExactChildSize(node, size)) - { - throw error::SizeNotValidException("XMLReaderData", "EnforceChildSize", "The node <" + node.name() + "> has the wrong number of children", node.nodes().size(), size); - } - } + static void EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att); + + static bool HasAttribute(const RapidXmlReaderNode& node, const std::string& att); + + static std::string GetAttribute(const RapidXmlReaderNode& node, const std::string& att); + + static std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string def); + + static bool AttributeIsTrue(const RapidXmlReaderNode& node, const std::string& att); + + static bool HasTagName(const RapidXmlReaderNode& node, const std::string& name); + + static void EnforceTagName(const RapidXmlReaderNode& node, const std::string& name); + + static std::string GetTagName(const RapidXmlReaderNode& node); + + static bool CheckMinChildSize(const RapidXmlReaderNode& node, const size_t size); + + static bool CheckMaxChildSize(const RapidXmlReaderNode& node, const size_t size); + + static bool CheckExactChildSize(const RapidXmlReaderNode& node, const size_t size); + + static void EnforceChildSize(const RapidXmlReaderNode& node, const size_t size); }; } diff --git a/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp b/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp index ef42b1cca..db8b7a02f 100644 --- a/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp +++ b/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp @@ -29,6 +29,8 @@ #include <RobotAPI/libraries/aron/core/navigator/type/container/Dict.h> #include <RobotAPI/libraries/aron/core/navigator/type/container/Object.h> +#include <SimoxUtility/algorithm/string/string_conversion.h> + namespace armarx::aron::datanavigator { diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h b/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h index 3a6cc964a..1ca45844d 100644 --- a/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h +++ b/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h @@ -30,7 +30,7 @@ #include <string> // Simox -#include <SimoxUtility/algorithm/string.h> +// #include <SimoxUtility/algorithm/string.h> // ArmarX #include <RobotAPI/libraries/aron/core/Exception.h> diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp index 269ec6e20..410ecaedd 100644 --- a/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp +++ b/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp @@ -24,8 +24,9 @@ // Header #include "Object.h" -// ArmarX -#include "SimoxUtility/algorithm/get_map_keys_values.h" + +#include <SimoxUtility/algorithm/get_map_keys_values.h> +#include <SimoxUtility/algorithm/string/string_conversion.h> namespace armarx::aron::typenavigator diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp index 4fed86ff9..bded16377 100644 --- a/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp +++ b/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp @@ -24,6 +24,7 @@ // Header #include "Tuple.h" +#include <SimoxUtility/algorithm/string/string_conversion.h> namespace armarx::aron::typenavigator { diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp index 96ec0a152..fbea54cbf 100644 --- a/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp +++ b/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp @@ -24,6 +24,8 @@ // Header #include "EigenQuaternion.h" +#include <SimoxUtility/algorithm/string/string_conversion.h> + namespace armarx::aron::typenavigator { // constructors -- GitLab