diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2011-11-26 18:32:57 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2011-11-26 18:32:57 +0000 |
| commit | 957446dee480ddd3cc4454a60b718bda35d9dbf6 (patch) | |
| tree | 72e72c70e223af766dfc54512759f4055fbd35c9 /src/command_manager.cc | |
| parent | 417802cbdfaa06bb3071fd648ad0536b64fcda21 (diff) | |
Add a Context parameter to commands
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 16 |
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) |
