X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ae21e8d6ad32d0bf3517127aef5cd8129b7507aa..384b6aa9598ee2c9edebcb158549f0ced324ad30:/stglibs/srvconf.lib/parsers/resetable_utils.h?ds=sidebyside diff --git a/stglibs/srvconf.lib/parsers/resetable_utils.h b/stglibs/srvconf.lib/parsers/resetable_utils.h index ed1cd305..6f026adf 100644 --- a/stglibs/srvconf.lib/parsers/resetable_utils.h +++ b/stglibs/srvconf.lib/parsers/resetable_utils.h @@ -22,6 +22,7 @@ #define __STG_STGLIBS_SRVCONF_RESETABLE_UTILS_H__ #include "stg/resetable.h" +#include "stg/common.h" #include #include @@ -30,17 +31,109 @@ namespace STG { template -void appendResetable(std::ostream & stream, const std::string & name, const T & value) +inline +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()) - stream << "<" << name << " value=\"" << value.data() << "\"/>"; + appendTag(stream, name, suffix, value.const_data()); } template -void appendResetable(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +inline +void appendResetableAttr(std::ostream & stream, const std::string & name, const T & value) +{ +if (!value.empty()) + appendAttr(stream, name, value.const_data()); +} + +template +inline +void appendResetableAttr(std::ostream & stream, const std::string & name, size_t suffix, const T & value) +{ +if (!value.empty()) + appendAttr(stream, name, suffix, value.const_data()); +} + +inline +RESETABLE MaybeEncode(const RESETABLE & value) +{ +RESETABLE res; +if (!value.empty()) + res = Encode12str(value.data()); +return res; +} + +inline +RESETABLE MaybeIconv(const RESETABLE & value, const std::string & fromEncoding, const std::string & toEncoding) { +RESETABLE res; if (!value.empty()) - stream << "<" << name << suffix << " value=\"" << value.data() << "\"/>"; + res = IconvString(value.data(), fromEncoding, toEncoding); +return res; } } // namespace STG