# # # patch "cmd.hh" # from [aab85d512e79e5dbc56f67a2c4b4bb5f3b991219] # to [91febddd8c375ccdca90fd9fb8ff2d2e48966355] # # patch "cmd_automate.cc" # from [eebc63a6942ff7aa97942655073a43c82f8766cf] # to [6a476a09bdfad75125389eadd7f759627757ce5c] # # patch "lua_hooks.cc" # from [103dbfc1a4c5873528b0d9eb6209154dc6d569e5] # to [a00266e0182e611e8c6a146a59d0d8f5dfd79509] # ============================================================ --- cmd.hh aab85d512e79e5dbc56f67a2c4b4bb5f3b991219 +++ cmd.hh 91febddd8c375ccdca90fd9fb8ff2d2e48966355 @@ -12,6 +12,7 @@ #include #include +#include #include "commands.hh" #include "options.hh" @@ -82,8 +83,9 @@ namespace commands bool operator<(command const & cmd) const; virtual void exec(app_state & app, - command_id const & execid, - args_vector const & args) const = 0; + command_id const & execid, + args_vector const & args, + std::ostream & output = std::cout) const = 0; bool has_name(utf8 const & name) const; command const * find_command(command_id const & id) const; @@ -115,14 +117,10 @@ namespace commands std::string const & desc, options::options_type const & opts); - void exec(app_state & app, + virtual void exec(app_state & app, command_id const & execid, args_vector const & args, - std::ostream & output) const; - - void exec(app_state & app, - command_id const & execid, - args_vector const & args) const; + std::ostream & output = std::cout) const; }; }; @@ -191,13 +189,15 @@ namespace commands { {} \ virtual void exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const; \ + args_vector const & args, \ + std::ostream & output = std::cout) const; \ }; \ cmd_ ## C C ## _cmd; \ } \ void commands::cmd_ ## C::exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const + args_vector const & args, \ + std::ostream & output) const #define CMD(C, name, aliases, parent, params, abstract, desc, opts) \ _CMD2(C, name, aliases, parent, false, params, abstract, desc, opts) @@ -216,13 +216,15 @@ void commands::cmd_ ## C::exec(app_state {} \ virtual void exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const; \ + args_vector const & args, \ + std::ostream & output = std::cout) const; \ }; \ cmd_ ## C C ## _cmd; \ } \ void commands::cmd_ ## C::exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const \ + args_vector const & args, \ + std::ostream & output) const \ { \ I(false); \ } @@ -248,13 +250,15 @@ namespace commands { {} \ virtual void exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const; \ + args_vector const & args, \ + std::ostream & output = std::cout) const; \ }; \ cmd_ ## C C ## _cmd; \ } \ void commands::cmd_ ## C::exec(app_state & app, \ command_id const & execid, \ - args_vector const & args) const + args_vector const & args, \ + std::ostream & output) const // TODO: 'abstract' and 'desc' should be refactored so that the // command definition allows the description of input/output format, ============================================================ --- cmd_automate.cc eebc63a6942ff7aa97942655073a43c82f8766cf +++ cmd_automate.cc 6a476a09bdfad75125389eadd7f759627757ce5c @@ -51,14 +51,6 @@ namespace commands { make_io_binary(); exec_from_automate(args, execid, app, output); } - - void - automate::exec(app_state & app, - command_id const & execid, - args_vector const & args) const - { - exec(app, execid, args, std::cout); - } } static string const interface_version = "5.0"; ============================================================ --- lua_hooks.cc 103dbfc1a4c5873528b0d9eb6209154dc6d569e5 +++ lua_hooks.cc a00266e0182e611e8c6a146a59d0d8f5dfd79509 @@ -980,13 +980,17 @@ namespace commands { CMD_REF(user)->children().insert(this); } - void exec(app_state & app, command_id const & execid, args_vector const & args) const; + void exec(app_state & app, + command_id const & execid, + args_vector const & args, + std::ostream & output) const; }; } void commands::cmd_lua::exec(app_state & app, command_id const & execid, - args_vector const & args) const + args_vector const & args, + std::ostream & output) const { I(st); I(app.lua.check_lua_state(st));