summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-11-26 18:32:57 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-11-26 18:32:57 +0000
commit957446dee480ddd3cc4454a60b718bda35d9dbf6 (patch)
tree72e72c70e223af766dfc54512759f4055fbd35c9 /src/command_manager.cc
parent417802cbdfaa06bb3071fd648ad0536b64fcda21 (diff)
Add a Context parameter to commands
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index cbe2a1cb..7c3606a7 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -57,7 +57,8 @@ struct command_not_found : runtime_error
: runtime_error(command + " : no such command") {}
};
-void CommandManager::execute(const std::string& command_line)
+void CommandManager::execute(const std::string& command_line,
+ const Context& context)
{
TokenList tokens = split(command_line);
if (tokens.empty())
@@ -78,7 +79,18 @@ void CommandManager::execute(const std::string& command_line)
it->second - it->first));
}
- command_it->second.command(params);
+ command_it->second.command(params, context);
+}
+
+void CommandManager::execute(const std::string& command,
+ const CommandParameters& params,
+ const Context& context)
+{
+ auto command_it = m_commands.find(command);
+ if (command_it == m_commands.end())
+ throw command_not_found(command);
+
+ command_it->second.command(params, context);
}
Completions CommandManager::complete(const std::string& command_line, size_t cursor_pos)