123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // file : xml/value-traits -*- C++ -*-
- // copyright : Copyright (c) 2013-2014 Code Synthesis Tools CC
- // license : MIT; see accompanying LICENSE file
- #ifndef XML_VALUE_TRAITS
- #define XML_VALUE_TRAITS
- #include <xml/details/pre.hxx>
- #include <string>
- #include <cstddef> // std::size_t
- #include <xml/forward>
- #include <xml/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 LIBSTUDXML_EXPORT 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 <xml/value-traits.txx>
- #include <xml/details/post.hxx>
- #endif // XML_VALUE_TRAITS
|