diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-04-21 21:49:25 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-04-21 21:49:25 +0100 |
| commit | 65c818b85970135f9fff3b71432d2a8f331f8526 (patch) | |
| tree | 5968b65a04609c3c781e3e45a099e5555c8114a3 /src/command_manager.cc | |
| parent | 8beda67fae3a57b450139037715122016bde2319 (diff) | |
Use StringView in CommandManager
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index efcd897a..a00ac00e 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -107,7 +107,7 @@ struct unknown_expand : parse_error : parse_error{"unknown expand '" + name + "'"} {} }; -String get_until_delimiter(const String& base, ByteCount& pos, char delimiter) +String get_until_delimiter(StringView base, ByteCount& pos, char delimiter) { const ByteCount length = base.length(); String str; @@ -127,7 +127,7 @@ String get_until_delimiter(const String& base, ByteCount& pos, char delimiter) return str; } -String get_until_delimiter(const String& base, ByteCount& pos, +String get_until_delimiter(StringView base, ByteCount& pos, char opening_delimiter, char closing_delimiter) { kak_assert(base[pos-1] == opening_delimiter); @@ -151,7 +151,7 @@ String get_until_delimiter(const String& base, ByteCount& pos, } template<bool throw_on_invalid> -Token::Type token_type(const String& type_name) +Token::Type token_type(StringView type_name) { if (type_name == "") return Token::Type::Raw; @@ -169,7 +169,7 @@ Token::Type token_type(const String& type_name) return Token::Type::Raw; } -void skip_blanks_and_comments(const String& base, ByteCount& pos) +void skip_blanks_and_comments(StringView base, ByteCount& pos) { const ByteCount length = base.length(); while (pos != length) @@ -189,13 +189,13 @@ void skip_blanks_and_comments(const String& base, ByteCount& pos) } template<bool throw_on_unterminated> -Token parse_percent_token(const String& line, ByteCount& pos) +Token parse_percent_token(StringView line, ByteCount& pos) { const ByteCount length = line.length(); const ByteCount type_start = ++pos; while (isalpha(line[pos])) ++pos; - String type_name = line.substr(type_start, pos - type_start); + StringView type_name = line.substr(type_start, pos - type_start); if (throw_on_unterminated and pos == length) throw parse_error{"expected a string delimiter after '%" + @@ -228,7 +228,7 @@ Token parse_percent_token(const String& line, ByteCount& pos) } template<bool throw_on_unterminated> -TokenList parse(const String& line) +TokenList parse(StringView line) { TokenList result; @@ -265,7 +265,7 @@ TokenList parse(const String& line) ++pos; if (start_pos != pos) { - auto token = line.substr(token_start, pos - token_start); + String token = line.substr(token_start, pos - token_start); static const Regex regex{R"(\\([ \t;\n]))"}; result.emplace_back(Token::Type::Raw, token_start, pos, boost::regex_replace(token, regex, @@ -371,7 +371,7 @@ void CommandManager::execute_single_command(CommandParameters params, command_it->second.command(parameter_parser, context); } -void CommandManager::execute(const String& command_line, +void CommandManager::execute(StringView command_line, Context& context, memoryview<String> shell_params, const EnvVarMap& env_vars) @@ -410,7 +410,7 @@ void CommandManager::execute(const String& command_line, execute_single_command(params, context); } -CommandInfo CommandManager::command_info(const String& command_line) const +CommandInfo CommandManager::command_info(StringView command_line) const { TokenList tokens = parse<false>(command_line); size_t cmd_idx = 0; @@ -420,7 +420,7 @@ CommandInfo CommandManager::command_info(const String& command_line) const cmd_idx = i+1; } - std::pair<String, String> res; + CommandInfo res; if (cmd_idx == tokens.size() or tokens[cmd_idx].type() != Token::Type::Raw) return res; @@ -444,7 +444,7 @@ CommandInfo CommandManager::command_info(const String& command_line) const Completions CommandManager::complete(const Context& context, CompletionFlags flags, - const String& command_line, + StringView command_line, ByteCount cursor_pos) { TokenList tokens = parse<false>(command_line); @@ -472,8 +472,8 @@ Completions CommandManager::complete(const Context& context, ByteCount cmd_start = is_end_token ? cursor_pos : tokens[tok_idx].begin(); Completions result(cmd_start, cursor_pos); - String prefix = command_line.substr(cmd_start, - cursor_pos - cmd_start); + StringView prefix = command_line.substr(cmd_start, + cursor_pos - cmd_start); for (auto& command : m_commands) { |
