diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-08-27 21:36:49 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-08-27 21:36:49 +0100 |
| commit | 1249df9c764d798970b2ae27201681ba359a3c38 (patch) | |
| tree | 017b07764028a023bcf6d2dfb98ac8d24b79dd1a /src/command_manager.cc | |
| parent | 36b82c42e59d469c9d608378973a701eff5cfe63 (diff) | |
Avoid using an UnorderedMap for 4 elements...
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 11 |
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) |
