value-traits.txx 718 B

1234567891011121314151617181920212223242526272829303132
  1. // file : xml/value-traits.txx
  2. // copyright : Copyright (c) 2013-2014 Code Synthesis Tools CC
  3. // license : MIT; see accompanying LICENSE file
  4. #include <sstream>
  5. #include <xml/parser>
  6. #include <xml/serializer>
  7. namespace xml
  8. {
  9. template <typename T>
  10. T default_value_traits<T>::
  11. parse (std::string s, const parser& p)
  12. {
  13. T r;
  14. std::istringstream is (s);
  15. if (!(is >> r && is.eof ()) )
  16. throw parsing (p, "invalid value '" + s + "'");
  17. return r;
  18. }
  19. template <typename T>
  20. std::string default_value_traits<T>::
  21. serialize (const T& v, const serializer& s)
  22. {
  23. std::ostringstream os;
  24. if (!(os << v))
  25. throw serialization (s, "invalid value");
  26. return os.str ();
  27. }
  28. }