summaryrefslogtreecommitdiff
path: root/commands.cpp
diff options
context:
space:
mode:
authorBossCode45 <human.cyborg42@gmail.com>2023-05-31 20:55:49 +1200
committerBossCode45 <human.cyborg42@gmail.com>2023-05-31 20:55:49 +1200
commit6b3dff404248bcf03e0bf0463a8c53d8918f7eec (patch)
tree35ec2c56e0408d18beaab7520004573162ff4250 /commands.cpp
parentea827624d203c73af896669e161972fc8be022ed (diff)
downloadYATwm-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.cpp19
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)
{