mirror of
https://github.com/ToruNiina/toml11.git
synced 2024-11-23 04:40:06 +00:00
set Datetime as offset_datetime
prepare for TOML v0.5.0
This commit is contained in:
parent
1e28cb2d13
commit
25789d1450
@ -1,6 +1,7 @@
|
|||||||
#ifndef TOML11_TYPES_H
|
#ifndef TOML11_TYPES_H
|
||||||
#define TOML11_TYPES_H
|
#define TOML11_TYPES_H
|
||||||
#include "datetime.hpp"
|
#include "datetime.hpp"
|
||||||
|
#include "traits.hpp"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
@ -18,7 +19,7 @@ using Boolean = bool;
|
|||||||
using Integer = std::int64_t;
|
using Integer = std::int64_t;
|
||||||
using Float = double;
|
using Float = double;
|
||||||
using String = std::basic_string<character>;
|
using String = std::basic_string<character>;
|
||||||
using Datetime = basic_datetime<unsigned int, int>;
|
using Datetime = offset_datetime;
|
||||||
using Array = std::vector<value>;
|
using Array = std::vector<value>;
|
||||||
using Table = std::unordered_map<key, value>;
|
using Table = std::unordered_map<key, value>;
|
||||||
|
|
||||||
@ -27,60 +28,64 @@ using boolean = Boolean;
|
|||||||
using integer = Integer;
|
using integer = Integer;
|
||||||
using floating = Float; // XXX float is keyword
|
using floating = Float; // XXX float is keyword
|
||||||
using string = String;
|
using string = String;
|
||||||
using datetime = Datetime;
|
// these are defined in datetime.hpp
|
||||||
|
// offset_datetime
|
||||||
|
// local_datetime
|
||||||
|
// local_date
|
||||||
|
// local_time
|
||||||
using array = Array;
|
using array = Array;
|
||||||
using table = Table;
|
using table = Table;
|
||||||
|
|
||||||
enum class value_t : std::uint8_t
|
enum class value_t : std::uint8_t
|
||||||
{
|
{
|
||||||
Boolean = 1,
|
Boolean = 1,
|
||||||
Integer = 2,
|
Integer = 2,
|
||||||
Float = 3,
|
Float = 3,
|
||||||
String = 4,
|
String = 4,
|
||||||
Datetime = 5,
|
Datetime = 5,
|
||||||
Array = 6,
|
LocalDatetime = 6,
|
||||||
Table = 7,
|
LocalDate = 7,
|
||||||
Empty = 0,
|
LocalTime = 8,
|
||||||
Unknown = 255,
|
Array = 9,
|
||||||
|
Table = 10,
|
||||||
|
Empty = 0,
|
||||||
|
Unknown = 255,
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename charT = character, typename traits = std::char_traits<charT>>
|
constexpr inline bool is_valid(value_t vt)
|
||||||
|
{
|
||||||
|
return vt != value_t::Unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename charT, typename traits>
|
||||||
inline std::basic_ostream<charT, traits>&
|
inline std::basic_ostream<charT, traits>&
|
||||||
operator<<(std::basic_ostream<charT, traits>& os, value_t t)
|
operator<<(std::basic_ostream<charT, traits>& os, value_t t)
|
||||||
{
|
{
|
||||||
switch(t)
|
switch(t)
|
||||||
{
|
{
|
||||||
case toml::value_t::Boolean : os << "Boolean"; return os;
|
case toml::value_t::Boolean : os << "boolean"; return os;
|
||||||
case toml::value_t::Integer : os << "Integer"; return os;
|
case toml::value_t::Integer : os << "integer"; return os;
|
||||||
case toml::value_t::Float : os << "Float"; return os;
|
case toml::value_t::Float : os << "float"; return os;
|
||||||
case toml::value_t::String : os << "String"; return os;
|
case toml::value_t::String : os << "string"; return os;
|
||||||
case toml::value_t::Datetime: os << "Datetime"; return os;
|
case toml::value_t::Datetime : os << "offset_datetime"; return os;
|
||||||
case toml::value_t::Array : os << "Array"; return os;
|
case toml::value_t::LocalDatetime: os << "local_datetime"; return os;
|
||||||
case toml::value_t::Table : os << "Table"; return os;
|
case toml::value_t::LocalDate : os << "local_date"; return os;
|
||||||
case toml::value_t::Empty : os << "Empty"; return os;
|
case toml::value_t::LocalTime : os << "local_time"; return os;
|
||||||
case toml::value_t::Unknown : os << "Unknown"; return os;
|
case toml::value_t::Array : os << "array"; return os;
|
||||||
default : os << "Nothing"; return os;
|
case toml::value_t::Table : os << "table"; return os;
|
||||||
|
case toml::value_t::Empty : os << "empty"; return os;
|
||||||
|
case toml::value_t::Unknown : os << "unknown"; return os;
|
||||||
|
default : os << "nothing"; return os;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename charT = character, typename traits = std::char_traits<charT>,
|
template<typename charT = character, typename traits = std::char_traits<charT>,
|
||||||
typename alloc = std::allocator<charT>>
|
typename alloc = std::allocator<charT>>
|
||||||
inline std::basic_string<charT, traits, alloc>
|
inline std::basic_string<charT, traits, alloc> stringize(value_t t)
|
||||||
stringize(value_t t)
|
|
||||||
{
|
{
|
||||||
switch(t)
|
std::ostringstream oss;
|
||||||
{
|
oss << t;
|
||||||
case toml::value_t::Boolean : return "Boolean";
|
return oss.str();
|
||||||
case toml::value_t::Integer : return "Integer";
|
|
||||||
case toml::value_t::Float : return "Float";
|
|
||||||
case toml::value_t::String : return "String";
|
|
||||||
case toml::value_t::Datetime: return "Datetime";
|
|
||||||
case toml::value_t::Array : return "Array";
|
|
||||||
case toml::value_t::Table : return "Table";
|
|
||||||
case toml::value_t::Empty : return "Empty";
|
|
||||||
case toml::value_t::Unknown : return "Unknown";
|
|
||||||
default : return "Nothing";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
@ -99,11 +104,6 @@ constexpr inline value_t check_type()
|
|||||||
value_t::Unknown;
|
value_t::Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr inline bool is_valid(value_t vt)
|
|
||||||
{
|
|
||||||
return vt != value_t::Unknown;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<value_t t> struct toml_default_type{};
|
template<value_t t> struct toml_default_type{};
|
||||||
template<> struct toml_default_type<value_t::Boolean >{typedef Boolean type;};
|
template<> struct toml_default_type<value_t::Boolean >{typedef Boolean type;};
|
||||||
template<> struct toml_default_type<value_t::Integer >{typedef Integer type;};
|
template<> struct toml_default_type<value_t::Integer >{typedef Integer type;};
|
||||||
|
Loading…
Reference in New Issue
Block a user