mirror of
https://github.com/ToruNiina/toml11.git
synced 2025-09-17 00:38:08 +08:00
split is_array to fixed_type_array and array_of_some_type
This commit is contained in:
@@ -411,6 +411,14 @@ BOOST_AUTO_TEST_CASE(test_array)
|
|||||||
const std::string arr2("[#c\n1,\n2,#comment\r\n3]");
|
const std::string arr2("[#c\n1,\n2,#comment\r\n3]");
|
||||||
BOOST_CHECK(is_valid::invoke(arr2.cbegin()) == arr2.cend());
|
BOOST_CHECK(is_valid::invoke(arr2.cbegin()) == arr2.cend());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const std::string invalid("[1, 3.14, 'string']");
|
||||||
|
BOOST_CHECK(is_valid::invoke(invalid.cbegin()) == invalid.cbegin());
|
||||||
|
const std::string valid("[[1,2,3], [3.14, 2.71, 1.414], ['foo', 'bar']]");
|
||||||
|
BOOST_CHECK(is_valid::invoke(valid.cbegin()) == valid.cend());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(test_inline_table)
|
BOOST_AUTO_TEST_CASE(test_inline_table)
|
||||||
|
@@ -547,6 +547,34 @@ using is_key =
|
|||||||
is_literal_inline_string<charT>
|
is_literal_inline_string<charT>
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
|
||||||
|
template<typename charT, typename is_array_component>
|
||||||
|
using is_fixed_type_array =
|
||||||
|
is_chain_of<
|
||||||
|
is_charactor<charT, '['>,
|
||||||
|
is_ignorable<
|
||||||
|
is_repeat_of<
|
||||||
|
is_chain_of<
|
||||||
|
is_ignorable<is_skippable_in_array<charT>>,
|
||||||
|
is_array_component,
|
||||||
|
is_ignorable<is_skippable_in_array<charT>>,
|
||||||
|
is_charactor<charT, ','>
|
||||||
|
>,
|
||||||
|
repeat_infinite()
|
||||||
|
>
|
||||||
|
>,
|
||||||
|
is_ignorable<
|
||||||
|
is_chain_of<
|
||||||
|
is_ignorable<is_skippable_in_array<charT>>,
|
||||||
|
is_array_component,
|
||||||
|
is_ignorable<is_skippable_in_array<charT>>,
|
||||||
|
is_ignorable<is_charactor<charT, ','>>
|
||||||
|
>
|
||||||
|
>,
|
||||||
|
is_ignorable<is_skippable_in_array<charT>>,
|
||||||
|
is_charactor<charT, ']'>
|
||||||
|
>;
|
||||||
|
|
||||||
template<typename charT>
|
template<typename charT>
|
||||||
struct is_array
|
struct is_array
|
||||||
{
|
{
|
||||||
@@ -557,34 +585,15 @@ struct is_array
|
|||||||
value_type>::value>::type>
|
value_type>::value>::type>
|
||||||
static Iterator invoke(Iterator iter)
|
static Iterator invoke(Iterator iter)
|
||||||
{
|
{
|
||||||
typedef is_one_of<is_fundamental_type<charT>,
|
return is_one_of<
|
||||||
is_array<charT>, is_inline_table<charT>> is_component;
|
is_fixed_type_array<charT, is_boolean<charT>>,
|
||||||
|
is_fixed_type_array<charT, is_integer<charT>>,
|
||||||
typedef is_chain_of<
|
is_fixed_type_array<charT, is_float<charT>>,
|
||||||
is_charactor<charT, '['>,
|
is_fixed_type_array<charT, is_string<charT>>,
|
||||||
is_ignorable<
|
is_fixed_type_array<charT, is_datetime<charT>>,
|
||||||
is_repeat_of<
|
is_fixed_type_array<charT, is_array<charT>>,
|
||||||
is_chain_of<
|
is_fixed_type_array<charT, is_inline_table<charT>>
|
||||||
is_ignorable<is_skippable_in_array<charT>>,
|
>::invoke(iter);
|
||||||
is_component,
|
|
||||||
is_ignorable<is_skippable_in_array<charT>>,
|
|
||||||
is_charactor<charT, ','>
|
|
||||||
>,
|
|
||||||
repeat_infinite()
|
|
||||||
>
|
|
||||||
>,
|
|
||||||
is_ignorable<
|
|
||||||
is_chain_of<
|
|
||||||
is_ignorable<is_skippable_in_array<charT>>,
|
|
||||||
is_component,
|
|
||||||
is_ignorable<is_skippable_in_array<charT>>,
|
|
||||||
is_ignorable<is_charactor<charT, ','>>
|
|
||||||
>
|
|
||||||
>,
|
|
||||||
is_ignorable<is_skippable_in_array<charT>>,
|
|
||||||
is_charactor<charT, ']'>
|
|
||||||
> entity;
|
|
||||||
return entity::invoke(iter);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user