Avoid using an UnorderedMap for 4 elements...
This commit is contained in:
parent
36b82c42e5
commit
1249df9c76
|
@ -236,7 +236,8 @@ Token parse_percent_token(Reader& reader)
|
||||||
type_name)};
|
type_name)};
|
||||||
|
|
||||||
Token::Type type = token_type<throw_on_unterminated>(type_name);
|
Token::Type type = token_type<throw_on_unterminated>(type_name);
|
||||||
static const UnorderedMap<char, char> matching_delimiters = {
|
|
||||||
|
constexpr struct CharPair { char opening; char closing; } matching_pairs[] = {
|
||||||
{ '(', ')' }, { '[', ']' }, { '{', '}' }, { '<', '>' }
|
{ '(', ')' }, { '[', ']' }, { '{', '}' }, { '<', '>' }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -245,10 +246,12 @@ Token parse_percent_token(Reader& reader)
|
||||||
auto start = reader.pos;
|
auto start = reader.pos;
|
||||||
auto coord = reader.coord;
|
auto coord = reader.coord;
|
||||||
|
|
||||||
auto delim_it = matching_delimiters.find(opening_delimiter);
|
auto it = find_if(matching_pairs, [opening_delimiter](const CharPair& cp)
|
||||||
if (delim_it != matching_delimiters.end())
|
{ return opening_delimiter == cp.opening; });
|
||||||
|
|
||||||
|
if (it != std::end(matching_pairs))
|
||||||
{
|
{
|
||||||
const char closing_delimiter = delim_it->second;
|
const char closing_delimiter = it->closing;
|
||||||
auto token = get_until_closing_delimiter(reader, opening_delimiter,
|
auto token = get_until_closing_delimiter(reader, opening_delimiter,
|
||||||
closing_delimiter);
|
closing_delimiter);
|
||||||
if (throw_on_unterminated and not reader)
|
if (throw_on_unterminated and not reader)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user