aboutsummaryrefslogtreecommitdiff
path: root/cutl/xml/value-traits.txx
blob: 4868dba62c99924dca397ab22334e48637629d21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// file      : cutl/xml/value-traits.txx
// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
// license   : MIT; see accompanying LICENSE file

#include <sstream>

#include <cutl/xml/parser.hxx>
#include <cutl/xml/serializer.hxx>

namespace cutl
{
  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 ();
    }
  }
}