mirror of
https://github.com/ToruNiina/toml11.git
synced 2024-11-26 14:20:05 +00:00
refactor: remove internal fn not needed any more
The function was needed to copy region information from value to value, for a useful error message. Because of the last few commits, the region information about keys are passed to insert_nested_keys that requires the function which is removed. And it turned out that the function is no longer required. It is originally a workaround, so I removed it.
This commit is contained in:
parent
73ba6b385f
commit
b36fdf2f54
@ -21,8 +21,6 @@ namespace detail
|
||||
{
|
||||
// to show error messages. not recommended for users.
|
||||
region_base const& get_region(const value&);
|
||||
// ditto.
|
||||
void assign_keeping_region(value&, value);
|
||||
}// detail
|
||||
|
||||
template<typename T>
|
||||
@ -562,9 +560,6 @@ class value
|
||||
// for error messages
|
||||
friend region_base const& detail::get_region(const value&);
|
||||
|
||||
// to see why it's here, see detail::insert_nested_key.
|
||||
friend void detail::assign_keeping_region(value&, value);
|
||||
|
||||
template<value_t T>
|
||||
struct switch_cast;
|
||||
|
||||
@ -599,36 +594,8 @@ inline region_base const& get_region(const value& v)
|
||||
{
|
||||
return *(v.region_info_);
|
||||
}
|
||||
// If we keep region information after assigning another toml::* types, the
|
||||
// error message become different from the actual value contained.
|
||||
// To avoid this kind of confusing phenomena, the default assigners clear the
|
||||
// old region_info_. But this functionality is actually needed deep inside of
|
||||
// parser, so if you want to see the usecase, see toml::detail::insert_nested_key
|
||||
// defined in toml/parser.hpp.
|
||||
inline void assign_keeping_region(value& v, value other)
|
||||
{
|
||||
v.cleanup(); // this keeps region info
|
||||
// keep region_info_ intact
|
||||
v.type_ = other.type();
|
||||
switch(v.type())
|
||||
{
|
||||
case value_t::Boolean : ::toml::value::assigner(v.boolean_ , other.boolean_ ); break;
|
||||
case value_t::Integer : ::toml::value::assigner(v.integer_ , other.integer_ ); break;
|
||||
case value_t::Float : ::toml::value::assigner(v.floating_ , other.floating_ ); break;
|
||||
case value_t::String : ::toml::value::assigner(v.string_ , other.string_ ); break;
|
||||
case value_t::OffsetDatetime: ::toml::value::assigner(v.offset_datetime_, other.offset_datetime_); break;
|
||||
case value_t::LocalDatetime : ::toml::value::assigner(v.local_datetime_ , other.local_datetime_ ); break;
|
||||
case value_t::LocalDate : ::toml::value::assigner(v.local_date_ , other.local_date_ ); break;
|
||||
case value_t::LocalTime : ::toml::value::assigner(v.local_time_ , other.local_time_ ); break;
|
||||
case value_t::Array : ::toml::value::assigner(v.array_ , other.array_ ); break;
|
||||
case value_t::Table : ::toml::value::assigner(v.table_ , other.table_ ); break;
|
||||
default: break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}// detail
|
||||
|
||||
|
||||
template<> struct value::switch_cast<value_t::Boolean>
|
||||
{
|
||||
static Boolean& invoke(value& v) {return v.boolean_;}
|
||||
|
Loading…
Reference in New Issue
Block a user