summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-08-23 23:56:35 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-08-23 23:56:35 +0200
commite4fd839ddaaf3fc68df2cb502a633a2ae6a9f86f (patch)
tree681b2a63eb9b9497b97697e3f1479a7b20270427 /src/command_manager.cc
parent0d8cce272831cd896d0e69d7c86cc9afc521eb11 (diff)
use a strongly typed int CharCount for character counts
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index 4e982663..947031c4 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -61,7 +61,7 @@ private:
using TokenList = std::vector<Token>;
-using TokenPosList = std::vector<std::pair<size_t, size_t>>;
+using TokenPosList = std::vector<std::pair<CharCount, CharCount>>;
bool is_command_separator(Character c)
{
@@ -78,8 +78,8 @@ TokenList parse(const String& line,
{
TokenList result;
- size_t length = line.length();
- size_t pos = 0;
+ CharCount length = line.length();
+ CharCount pos = 0;
while (pos < length)
{
while (pos != length)
@@ -92,7 +92,7 @@ TokenList parse(const String& line,
break;
}
- size_t token_start = pos;
+ CharCount token_start = pos;
Token::Type type = Token::Type::Raw;
if (line[pos] == '"' or line[pos] == '\'')
@@ -107,7 +107,7 @@ TokenList parse(const String& line,
}
else if (line[pos] == '%')
{
- size_t type_start = ++pos;
+ CharCount type_start = ++pos;
while (isalpha(line[pos]))
++pos;
String type_name = line.substr(type_start, pos - type_start);
@@ -250,7 +250,7 @@ void CommandManager::execute(const String& command_line,
}
Completions CommandManager::complete(const Context& context,
- const String& command_line, size_t cursor_pos)
+ const String& command_line, CharCount cursor_pos)
{
TokenPosList pos_info;
TokenList tokens = parse(command_line, &pos_info);
@@ -267,7 +267,7 @@ Completions CommandManager::complete(const Context& context,
if (token_to_complete == 0 or tokens.empty()) // command name completion
{
- size_t cmd_start = tokens.empty() ? 0 : pos_info[0].first;
+ CharCount cmd_start = tokens.empty() ? 0 : pos_info[0].first;
Completions result(cmd_start, cursor_pos);
String prefix = command_line.substr(cmd_start,
cursor_pos - cmd_start);
@@ -292,10 +292,10 @@ Completions CommandManager::complete(const Context& context,
if (command_it == m_commands.end() or not command_it->second.completer)
return Completions();
- size_t start = token_to_complete < tokens.size() ?
+ CharCount start = token_to_complete < tokens.size() ?
pos_info[token_to_complete].first : cursor_pos;
Completions result(start , cursor_pos);
- size_t cursor_pos_in_token = cursor_pos - start;
+ CharCount cursor_pos_in_token = cursor_pos - start;
std::vector<String> params;
for (auto token_it = tokens.begin()+1; token_it != tokens.end(); ++token_it)
@@ -309,7 +309,7 @@ Completions CommandManager::complete(const Context& context,
CandidateList PerArgumentCommandCompleter::operator()(const Context& context,
const CommandParameters& params,
size_t token_to_complete,
- size_t pos_in_token) const
+ CharCount pos_in_token) const
{
if (token_to_complete >= m_completers.size())
return CandidateList();