aboutsummaryrefslogtreecommitdiff
path: root/libstudxml/value-traits.txx
diff options
context:
space:
mode:
Diffstat (limited to 'libstudxml/value-traits.txx')
-rw-r--r--libstudxml/value-traits.txx32
1 files changed, 32 insertions, 0 deletions
diff --git a/libstudxml/value-traits.txx b/libstudxml/value-traits.txx
new file mode 100644
index 0000000..0e4d4df
--- /dev/null
+++ b/libstudxml/value-traits.txx
@@ -0,0 +1,32 @@
+// file : libstudxml/value-traits.txx
+// copyright : Copyright (c) 2013-2017 Code Synthesis Tools CC
+// license : MIT; see accompanying LICENSE file
+
+#include <sstream>
+
+#include <libstudxml/parser.hxx>
+#include <libstudxml/serializer.hxx>
+
+namespace xml
+{
+ template <typename T>
+ T default_value_traits<T>::
+ parse (std::string s, const parser& p)
+ {
+ T r;
+ std::istringstream is (s);
+ if (!(is >> r && is.eof ()) )
+ throw parsing (p, "invalid value '" + s + "'");
+ return r;
+ }
+
+ template <typename T>
+ std::string default_value_traits<T>::
+ serialize (const T& v, const serializer& s)
+ {
+ std::ostringstream os;
+ if (!(os << v))
+ throw serialization (s, "invalid value");
+ return os.str ();
+ }
+}