summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-08-27 21:36:49 +0100
committerMaxime Coste <frrrwww@gmail.com>2015-08-27 21:36:49 +0100
commit1249df9c764d798970b2ae27201681ba359a3c38 (patch)
tree017b07764028a023bcf6d2dfb98ac8d24b79dd1a /src/command_manager.cc
parent36b82c42e59d469c9d608378973a701eff5cfe63 (diff)
Avoid using an UnorderedMap for 4 elements...
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index dc2f464f..b0c14a7c 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -236,7 +236,8 @@ Token parse_percent_token(Reader& reader)
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 coord = reader.coord;
- auto delim_it = matching_delimiters.find(opening_delimiter);
- if (delim_it != matching_delimiters.end())
+ auto it = find_if(matching_pairs, [opening_delimiter](const CharPair& cp)
+ { 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,
closing_delimiter);
if (throw_on_unterminated and not reader)