mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
70 lines
1.3 KiB
Plaintext
70 lines
1.3 KiB
Plaintext
|
// file : xml/value-traits -*- C++ -*-
|
||
|
// copyright : Copyright (c) 2013-2017 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 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
|