fix orders of call

This commit is contained in:
ToruNiina
2017-05-08 19:07:29 +09:00
parent 98d1d88f60
commit 567b69d050
2 changed files with 25 additions and 18 deletions

View File

@@ -520,9 +520,9 @@ using is_fundamental_type =
is_basic_multiline_string<charT>,
is_literal_inline_string<charT>,
is_literal_multiline_string<charT>,
is_integer<charT>,
is_float<charT>,
is_boolean<charT>,
is_float<charT>,
is_integer<charT>,
is_offset_date_time<charT>,
is_local_date_time<charT>,
is_local_date<charT>,
@@ -608,6 +608,7 @@ struct is_inline_table
{
typedef is_one_of<is_fundamental_type<charT>,
is_array<charT>, is_inline_table<charT>> is_component;
typedef is_chain_of<
is_any_num_of_ws<charT>,
is_key<charT>,
@@ -632,13 +633,13 @@ struct is_inline_table
>
>,
is_ignorable<
is_chain_of<
is_any_num_of_ws<charT>,
is_inline_key_value_pair,
is_any_num_of_ws<charT>,
is_ignorable<is_charactor<charT, ','>>
>
>,
is_chain_of<
is_any_num_of_ws<charT>,
is_inline_key_value_pair,
is_any_num_of_ws<charT>,
is_ignorable<is_charactor<charT, ','>>
>
>,
is_any_num_of_ws<charT>,
is_charactor<charT, '}'>
> entity;
@@ -657,18 +658,18 @@ using is_table_definition =
is_any_num_of_ws<charT>,
is_charactor<charT, '['>,
is_any_num_of_ws<charT>,
is_key<charT>,
is_ignorable<
is_repeat_of<
is_chain_of<
is_any_num_of_ws<charT>,
is_key<charT>,
is_any_num_of_ws<charT>,
is_charactor<charT, '.'>,
is_any_num_of_ws<charT>,
is_key<charT>,
is_any_num_of_ws<charT>
>,
repeat_infinite()>
>,
is_key<charT>,
is_charactor<charT, ']'>
>;
@@ -677,18 +678,19 @@ using is_array_of_table_definition =
is_chain_of<
is_any_num_of_ws<charT>,
is_repeat_of<is_charactor<charT, '['>, 2>,
is_any_num_of_ws<charT>,
is_key<charT>,
is_ignorable<
is_repeat_of<
is_chain_of<
is_any_num_of_ws<charT>,
is_key<charT>,
is_any_num_of_ws<charT>,
is_charactor<charT, '.'>,
is_any_num_of_ws<charT>,
is_key<charT>,
is_any_num_of_ws<charT>
>,
repeat_infinite()>
>,
is_key<charT>,
is_repeat_of<is_charactor<charT, ']'>, 2>
>;

View File

@@ -505,8 +505,9 @@ struct parse_fixed_type_array
static result_type invoke(Iterator iter, Iterator end)
{
result_type result;
--end;
assert(*iter == '[' && *end == ']');
++iter; --end;
++iter;
iter = skippable::invoke(iter);
while(iter != end)
{
@@ -565,6 +566,9 @@ struct parse_array
return parse_fixed_type_array<charT, is_inline_table<charT>,
parse_inline_table<charT>>::invoke(iter, end);
if(is_skippable_in_array<charT>::invoke(init) == std::prev(end))
return result_type{}; // empty
throw internal_error("no valid array here");
}
};
@@ -582,10 +586,10 @@ struct parse_value
{
if(iter != is_string<charT>::invoke(iter))
return result_type(parse_string<charT>::invoke(iter, end));
else if(iter != is_integer<charT>::invoke(iter))
return result_type(parse_integer<charT>::invoke(iter, end));
else if(iter != is_float<charT>::invoke(iter))
return result_type(parse_float<charT>::invoke(iter, end));
else if(iter != is_integer<charT>::invoke(iter))
return result_type(parse_integer<charT>::invoke(iter, end));
else if(iter != is_boolean<charT>::invoke(iter))
return result_type(parse_boolean<charT>::invoke(iter, end));
else if(iter != is_datetime<charT>::invoke(iter))
@@ -642,6 +646,7 @@ struct parse_key_value_pair
{
typedef charT value_type;
typedef std::pair<toml::key, toml::value> result_type;
template<typename Iterator, class = typename std::enable_if<
std::is_same<typename std::iterator_traits<Iterator>::value_type,
value_type>::value>::type>