aboutsummaryrefslogtreecommitdiff
path: root/libstudxml/value-traits.hxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-05-02 21:26:58 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-05-02 23:55:21 +0300
commit424e315dfa9a78aebf0653c95f83fe6ed452dd8e (patch)
tree59759d1d4eac4096df104d4dbab24a531ada3399 /libstudxml/value-traits.hxx
parent3d2b5b2a7064abe35614ebb32db03bd2881adcf0 (diff)
Add hxx extension for headers and libstud prefix for library dir
Diffstat (limited to 'libstudxml/value-traits.hxx')
-rw-r--r--libstudxml/value-traits.hxx69
1 files changed, 69 insertions, 0 deletions
diff --git a/libstudxml/value-traits.hxx b/libstudxml/value-traits.hxx
new file mode 100644
index 0000000..08590e2
--- /dev/null
+++ b/libstudxml/value-traits.hxx
@@ -0,0 +1,69 @@
+// file : libstudxml/value-traits.hxx -*- C++ -*-
+// copyright : Copyright (c) 2013-2017 Code Synthesis Tools CC
+// license : MIT; see accompanying LICENSE file
+
+#ifndef LIBSTUDXML_VALUE_TRAITS_HXX
+#define LIBSTUDXML_VALUE_TRAITS_HXX
+
+#include <libstudxml/details/pre.hxx>
+
+#include <string>
+#include <cstddef> // std::size_t
+
+#include <libstudxml/forward.hxx>
+
+#include <libstudxml/details/export.hxx>
+
+namespace xml
+{
+ template <typename T>
+ struct default_value_traits
+ {
+ static T
+ parse (std::string, const parser&);
+
+ static std::string
+ serialize (const T&, const serializer&);
+ };
+
+ template <>
+ struct LIBSTUDXML_EXPORT default_value_traits<bool>
+ {
+ static bool
+ parse (std::string, const parser&);
+
+ static std::string
+ serialize (bool v, const serializer&)
+ {
+ return v ? "true" : "false";
+ }
+ };
+
+ template <>
+ struct default_value_traits<std::string>
+ {
+ static std::string
+ parse (std::string s, const parser&)
+ {
+ return s;
+ }
+
+ static std::string
+ serialize (const std::string& v, const serializer&)
+ {
+ return v;
+ }
+ };
+
+ template <typename T>
+ struct value_traits: default_value_traits<T> {};
+
+ template <typename T, std::size_t N>
+ struct value_traits<T[N]>: default_value_traits<const T*> {};
+}
+
+#include <libstudxml/value-traits.txx>
+
+#include <libstudxml/details/post.hxx>
+
+#endif // LIBSTUDXML_VALUE_TRAITS_HXX