#ifndef command_manager_hh_INCLUDED #define command_manager_hh_INCLUDED #include #include #include #include #include namespace Kakoune { struct wrong_argument_count : public std::runtime_error { wrong_argument_count() : std::runtime_error("wrong argument count") {} }; typedef std::vector CommandParameters; typedef std::function Command; class CommandManager { public: void execute(const std::string& command_line); void register_command(const std::string& command_name, Command command); void register_command(const std::vector& command_names, Command command); private: std::unordered_map m_commands; }; } #endif // command_manager_hh_INCLUDED