diff --git a/storm/Command.cpp b/storm/Command.cpp index 934db61..d4b0ecb 100644 --- a/storm/Command.cpp +++ b/storm/Command.cpp @@ -395,15 +395,13 @@ int32_t SCmdRegisterArgument(uint32_t flags, uint32_t id, const char* name, void STORM_VALIDATE((STORM_COMMAND_GET_TYPE(flags) != STORM_COMMAND_TYPE_BOOL) || (!variableptr) || (variablebytes == sizeof(uint32_t)), ERROR_INVALID_PARAMETER, 0); // If argument is flagged, it goes in the flag list - auto& cmdlist = s_arglist; + auto listptr = &s_arglist; if (STORM_COMMAND_GET_ARG(flags) == STORM_COMMAND_ARG_FLAGGED) { - cmdlist = s_flaglist; + listptr = &s_flaglist; } - - auto cmd = cmdlist.NewNode(2, 0, 0); + auto cmd = listptr->NewNode(2, 0, 0); SStrCopy(cmd->name, name, sizeof(cmd->name)); - cmd->id = id; cmd->namelength = namelength; cmd->variableptr = variableptr; @@ -412,7 +410,6 @@ int32_t SCmdRegisterArgument(uint32_t flags, uint32_t id, const char* name, void cmd->setvalue = setvalue; cmd->setmask = setmask; cmd->callback = callback; - if ((STORM_COMMAND_GET_TYPE(flags) == STORM_COMMAND_TYPE_BOOL) && (STORM_COMMAND_GET_BOOL(flags) == STORM_COMMAND_BOOL_CLEAR)) { cmd->currvalue = setvalue; } else { diff --git a/storm/Command.hpp b/storm/Command.hpp index 1b52388..624559e 100644 --- a/storm/Command.hpp +++ b/storm/Command.hpp @@ -5,10 +5,6 @@ #include -#define STORM_COMMAND_ERROR_BAD_ARGUMENT 0x85100065 -#define STORM_COMMAND_ERROR_NOT_ENOUGH_ARGUMENTS 0x8510006D -#define STORM_COMMAND_ERROR_OPEN_FAILED 0x6E - #define STORM_COMMAND_WHITESPACE_CHARS " ,;\"\t\n\r\x1A" #define STORM_COMMAND_EXTRA_CASE_SENSITIVE (1 << 8) @@ -45,17 +41,17 @@ class CMDERROR; class CMDPARAMS; // Callback types -typedef int32_t (*CMDEXTRACALLBACKFCN)(const char*); -typedef int32_t (*CMDERRORCALLBACKFCN)(CMDERROR*); -typedef int32_t (*CMDPARAMSCALLBACKFCN)(CMDPARAMS*, const char*); +typedef int32_t (*CMDEXTRACALLBACK)(const char*); +typedef int32_t (*CMDERRORCALLBACK)(CMDERROR*); +typedef int32_t (*CMDPARAMSCALLBACK)(CMDPARAMS*, const char*); // Details a command line argument class ARGLIST { public: - uint32_t flags; - uint32_t id; - const char* name; - CMDPARAMSCALLBACKFCN callback; + uint32_t flags; + uint32_t id; + const char* name; + CMDPARAMSCALLBACK callback; }; // Parameters passed to argument callback @@ -78,19 +74,19 @@ class CMDPARAMS { // Command definitions class CMDDEF : public TSLinkedNode { public: - uint32_t flags; - uint32_t id; - char name[16]; - int32_t namelength; - uint32_t setvalue; - uint32_t setmask; - void* variableptr; - uint32_t variablebytes; - CMDPARAMSCALLBACKFCN callback; - int32_t found; + uint32_t flags; + uint32_t id; + char name[16]; + int32_t namelength; + uint32_t setvalue; + uint32_t setmask; + void* variableptr; + uint32_t variablebytes; + CMDPARAMSCALLBACK callback; + int32_t found; union { - uint32_t currvalue; - char* currvaluestr; + uint32_t currvalue; + char* currvaluestr; }; }; diff --git a/storm/error/Codes.hpp b/storm/error/Codes.hpp index 0071a63..5f2f578 100644 --- a/storm/error/Codes.hpp +++ b/storm/error/Codes.hpp @@ -13,4 +13,8 @@ #define STORM_ERROR_APPLICATION_FATAL STORM_ERROR(0x84) +#define STORM_COMMAND_ERROR_BAD_ARGUMENT STORM_ERROR(0x65) +#define STORM_COMMAND_ERROR_NOT_ENOUGH_ARGUMENTS STORM_ERROR(0x6D) +#define STORM_COMMAND_ERROR_OPEN_FAILED 0x6E + #endif diff --git a/test/Command.cpp b/test/Command.cpp new file mode 100644 index 0000000..8a578df --- /dev/null +++ b/test/Command.cpp @@ -0,0 +1,13 @@ +#include "storm/Command.hpp" +#include "test/Test.hpp" + +TEST_CASE("SCmdRegisterArgList", "[command]") { + SECTION("register an argument list normally") { + ARGLIST argList[] = { + { 0x0, 1, "one", nullptr }, + { 0x0, 2, "two", nullptr } + }; + + SCmdRegisterArgList(argList, sizeof(argList) / sizeof(ARGLIST)); + } +}