From f8ca79f0620b6738a4714f1ccadf6a1c9ac73947 Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Fri, 3 Oct 2014 12:01:52 +0300 Subject: [PATCH 1/1] Added resetable utils for attributes. --- stglibs/srvconf.lib/parsers/resetable_utils.h | 80 ++++++++++++++++++- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/stglibs/srvconf.lib/parsers/resetable_utils.h b/stglibs/srvconf.lib/parsers/resetable_utils.h index 088cb327..6f026adf 100644 --- a/stglibs/srvconf.lib/parsers/resetable_utils.h +++ b/stglibs/srvconf.lib/parsers/resetable_utils.h @@ -32,18 +32,90 @@ namespace STG template inline -void appendResetable(std::ostream & stream, const std::string & name, const T & value) +void appendTag(std::ostream & stream, const std::string & name, const T & value) +{ + stream << "<" << name << " value=\"" << value << "\"/>"; +} + +template +inline +void appendTag(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +{ + stream << "<" << name << suffix << " value=\"" << value << "\"/>"; +} + +template <> +inline +void appendTag(std::ostream & stream, const std::string & name, const uint8_t & value) +{ + stream << "<" << name << " value=\"" << static_cast(value) << "\"/>"; +} + +template <> +inline +void appendTag(std::ostream & stream, const std::string & name, const int8_t & value) +{ + stream << "<" << name << " value=\"" << static_cast(value) << "\"/>"; +} + +template +inline +void appendAttr(std::ostream & stream, const std::string & name, const T & value) +{ + stream << " " << name << "=\"" << value << "\""; +} + +template +inline +void appendAttr(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +{ + stream << " " << name << suffix << "=\"" << value << "\""; +} + +template <> +inline +void appendAttr(std::ostream & stream, const std::string & name, const uint8_t & value) +{ + stream << " " << name << "=\"" << static_cast(value) << "\""; +} + +template <> +inline +void appendAttr(std::ostream & stream, const std::string & name, const int8_t & value) +{ + stream << " " << name << "=\"" << static_cast(value) << "\""; +} + +template +inline +void appendResetableTag(std::ostream & stream, const std::string & name, const T & value) +{ +if (!value.empty()) + appendTag(stream, name, value.const_data()); +} + +template +inline +void appendResetableTag(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +{ +if (!value.empty()) + appendTag(stream, name, suffix, value.const_data()); +} + +template +inline +void appendResetableAttr(std::ostream & stream, const std::string & name, const T & value) { if (!value.empty()) - stream << "<" << name << " value=\"" << value.data() << "\"/>"; + appendAttr(stream, name, value.const_data()); } template inline -void appendResetable(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +void appendResetableAttr(std::ostream & stream, const std::string & name, size_t suffix, const T & value) { if (!value.empty()) - stream << "<" << name << suffix << " value=\"" << value.data() << "\"/>"; + appendAttr(stream, name, suffix, value.const_data()); } inline -- 2.44.2