From: Maxim Mamontov <faust.madf@gmail.com>
Date: Fri, 3 Oct 2014 09:01:52 +0000 (+0300)
Subject: Added resetable utils for attributes.
X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/f8ca79f0620b6738a4714f1ccadf6a1c9ac73947?ds=sidebyside

Added resetable utils for attributes.
---

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 <typename T>
 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 <typename T>
+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<uint8_t>(std::ostream & stream, const std::string & name, const uint8_t & value)
+{
+    stream << "<" << name << " value=\"" << static_cast<unsigned>(value) << "\"/>";
+}
+
+template <>
+inline
+void appendTag<int8_t>(std::ostream & stream, const std::string & name, const int8_t & value)
+{
+    stream << "<" << name << " value=\"" << static_cast<int>(value) << "\"/>";
+}
+
+template <typename T>
+inline
+void appendAttr(std::ostream & stream, const std::string & name, const T & value)
+{
+    stream << " " << name << "=\"" << value << "\"";
+}
+
+template <typename T>
+inline
+void appendAttr(std::ostream & stream, const std::string & name, size_t suffix, const T & value)
+{
+    stream << " " << name << suffix << "=\"" << value << "\"";
+}
+
+template <>
+inline
+void appendAttr<uint8_t>(std::ostream & stream, const std::string & name, const uint8_t & value)
+{
+    stream << " " << name << "=\"" << static_cast<unsigned>(value) << "\"";
+}
+
+template <>
+inline
+void appendAttr<int8_t>(std::ostream & stream, const std::string & name, const int8_t & value)
+{
+    stream << " " << name << "=\"" << static_cast<int>(value) << "\"";
+}
+
+template <typename T>
+inline
+void appendResetableTag(std::ostream & stream, const std::string & name, const T & value)
+{
+if (!value.empty())
+    appendTag(stream, name, value.const_data());
+}
+
+template <typename T>
+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 <typename T>
+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 <typename T>
 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