aboutsummaryrefslogtreecommitdiff
path: root/libstudxml/value-traits.txx
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.txx
parent3d2b5b2a7064abe35614ebb32db03bd2881adcf0 (diff)
Add hxx extension for headers and libstud prefix for library dir
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 ();
+ }
+}