diff options
| author | BossCode45 <human.cyborg42@gmail.com> | 2023-05-31 20:55:49 +1200 |
|---|---|---|
| committer | BossCode45 <human.cyborg42@gmail.com> | 2023-05-31 20:55:49 +1200 |
| commit | 6b3dff404248bcf03e0bf0463a8c53d8918f7eec (patch) | |
| tree | 35ec2c56e0408d18beaab7520004573162ff4250 /commands.cpp | |
| parent | ea827624d203c73af896669e161972fc8be022ed (diff) | |
| download | YATwm-6b3dff404248bcf03e0bf0463a8c53d8918f7eec.tar.gz YATwm-6b3dff404248bcf03e0bf0463a8c53d8918f7eec.zip | |
Added support for commands without a module
Also made it easier to add commands by making the ~addCommand~
function accept a vector for ~argTypes~ and then convert it.
Diffstat (limited to 'commands.cpp')
| -rw-r--r-- | commands.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/commands.cpp b/commands.cpp index 322d160..549775e 100644 --- a/commands.cpp +++ b/commands.cpp @@ -47,6 +47,20 @@ void CommandsModule::addCommand(Command c) } commandList.push_back(c); } +void CommandsModule::addCommand(std::string name, const void (*func)(const CommandArg *), const int argc, CommandArgType *argTypes) +{ + Command c = {name, nullptr, func, argc, argTypes, nullptr}; + addCommand(c); +} +void CommandsModule::addCommand(std::string name, const void(*func)(const CommandArg*), const int argc, std::vector<CommandArgType> argTypes) +{ + CommandArgType* argTypesArr = new CommandArgType[argc]; + for(int i = 0; i < argc; i++) + { + argTypesArr[i] = argTypes[i]; + } + addCommand(name, func, argc, argTypesArr); +} struct NameMatches { @@ -145,7 +159,10 @@ void CommandsModule::runCommand(string command) CommandArg* args = getCommandArgs(split, cmd->argTypes, cmd->argc); try { - cmd->func(*cmd->module, args); + if(cmd->module == nullptr) + cmd->staticFunc(args); + else + cmd->func(*cmd->module, args); } catch (Err e) { |
