2
0
mirror of https://github.com/boostorg/parser.git synced 2026-01-24 18:12:32 +00:00

Preserve the Attribute template parameter in char_parser::operator().

This commit is contained in:
Zach Laine
2018-10-26 00:57:54 -05:00
parent 6086b69034
commit bfcad8d415
3 changed files with 20 additions and 20 deletions

View File

@@ -182,24 +182,24 @@ namespace boost { namespace parser { namespace detail {
std::ostream & os,
int components = 0);
template<typename Context, typename Expected>
template<typename Context, typename Expected, typename AttributeType>
void parser_name(
Context const & context,
char_parser<Expected> const & parser,
char_parser<Expected, AttributeType> const & parser,
std::ostream & os,
int components = 0);
template<typename Context>
template<typename Context, typename AttributeType>
void parser_name(
Context const & context,
char_parser<nope> const & parser,
char_parser<nope, AttributeType> const & parser,
std::ostream & os,
int components = 0);
template<typename Context, typename Expected>
template<typename Context, typename Expected, typename AttributeType>
void parser_name(
Context const & context,
omit_parser<char_parser<Expected>> const & parser,
omit_parser<char_parser<Expected, AttributeType>> const & parser,
std::ostream & os,
int components = 0);

View File

@@ -393,10 +393,10 @@ namespace boost { namespace parser { namespace detail {
}
};
template<typename Context, typename Expected>
template<typename Context, typename Expected, typename AttributeType>
void parser_name(
Context const & context,
char_parser<Expected> const & parser,
char_parser<Expected, AttributeType> const & parser,
std::ostream & os,
int components)
{
@@ -404,20 +404,20 @@ namespace boost { namespace parser { namespace detail {
context, os, parser.expected_);
}
template<typename Context>
template<typename Context, typename AttributeType>
void parser_name(
Context const & context,
char_parser<nope> const & parser,
char_parser<nope, AttributeType> const & parser,
std::ostream & os,
int components)
{
os << "char_";
}
template<typename Context, typename Expected>
template<typename Context, typename Expected, typename AttributeType>
void parser_name(
Context const & context,
omit_parser<char_parser<Expected>> const & parser,
omit_parser<char_parser<Expected, AttributeType>> const & parser,
std::ostream & os,
int components)
{

View File

@@ -4026,8 +4026,8 @@ namespace boost { namespace parser {
std::is_same<Expected, detail::nope>{},
"If you're seeing this, you tried to chain calls on char_, "
"like 'char_('a')('b')'. Quit it!'");
return parser_interface<char_parser<T>>{
char_parser<T>{std::move(x)}};
return parser_interface<char_parser<T, AttributeType>>{
char_parser<T, AttributeType>{std::move(x)}};
}
// TODO: Document this conversion to string_view.
@@ -4039,7 +4039,7 @@ namespace boost { namespace parser {
"like 'char_(\"chars\")(\"chars\")'. Quit it!'");
std::string_view const range(s);
using char_range_t = detail::char_range<std::string_view>;
using char_parser_t = char_parser<char_range_t>;
using char_parser_t = char_parser<char_range_t, AttributeType>;
return parser_interface<char_parser_t>(
char_parser_t(char_range_t(range.begin(), range.end())));
}
@@ -4051,10 +4051,10 @@ namespace boost { namespace parser {
std::is_same<Expected, detail::nope>{},
"If you're seeing this, you tried to chain calls on char_, "
"like 'char_('a', 'b')('c', 'd')'. Quit it!'");
using pair_type = detail::char_pair<LoType, HiType>;
return parser_interface<char_parser<pair_type>>(
char_parser<pair_type>(
pair_type{std::move(lo), std::move(hi)}));
using char_pair_t = detail::char_pair<LoType, HiType>;
using char_parser_t = char_parser<char_pair_t, AttributeType>;
return parser_interface<char_parser_t>(
char_parser_t(char_pair_t{std::move(lo), std::move(hi)}));
}
template<typename Range>
@@ -4070,7 +4070,7 @@ namespace boost { namespace parser {
"like 'char_(char-set)(char-set)'. Quit it!'");
auto range = make_range(r.begin(), r.end());
using char_range_t = detail::char_range<decltype(range)>;
using char_parser_t = char_parser<char_range_t>;
using char_parser_t = char_parser<char_range_t, AttributeType>;
return parser_interface<char_parser_t>(
char_parser_t(char_range_t(range.begin(), range.end())));
}