diff options
author | Zachary T Welch <zw@superlucidity.net> | 2009-11-18 05:19:34 -0800 |
---|---|---|
committer | Zachary T Welch <zw@superlucidity.net> | 2009-11-18 15:51:07 -0800 |
commit | bd5a1799ea63c2a863eae4aca2b55e41373d7528 (patch) | |
tree | 4334d94e264076dbf8830ee4afd859cd0e240938 /src/helper | |
parent | bd9d05e14bd08352811561e2d59a7ef2d9f3ed25 (diff) | |
download | openocd_libswd-bd5a1799ea63c2a863eae4aca2b55e41373d7528.tar.gz openocd_libswd-bd5a1799ea63c2a863eae4aca2b55e41373d7528.tar.bz2 openocd_libswd-bd5a1799ea63c2a863eae4aca2b55e41373d7528.tar.xz openocd_libswd-bd5a1799ea63c2a863eae4aca2b55e41373d7528.zip |
add COMMAND_PARSE_BOOL macro and friends
Adds several macros similar to COMMAND_PARSE_NUMBER, but for parsing
boolean command arguments. Two flavors are provided to provide
drop-in compatibility with existing code, allow for the elimination
of a lot of code bloat while improving the error checking and reporting.
COMMAND_PARSE_ON_OFF parses "on"/"off" command parameters.
COMMAND_PARSE_ENABLE parses "enable"/"disable" command parameters.
Both print the error and return an error out of the calling function.
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/helper/command.h b/src/helper/command.h index 05088b56..9f2d9712 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -263,6 +263,34 @@ DECLARE_PARSE_WRAPPER(_s8, int8_t); } \ } while (0) +/** + * Parse the string @c as a binary parameter, storing the boolean value + * in @c out. The strings @c on and @c off are used to match different + * strings for true and false options (e.g. "on" and "off" or + * "enable" and "disable"). + */ +#define COMMAND_PARSE_BOOL(in, out, on, off) \ + do { \ + if (strcmp(in, on) == 0) \ + out = true; \ + else if (strcmp(in, off) == 0) \ + out = false; \ + else { \ + command_print(CMD_CTX, stringify(out) \ + " option value ('%s') is not valid", in); \ + command_print(CMD_CTX, " choices are '%s' or '%s'", \ + on, off); \ + return ERROR_COMMAND_SYNTAX_ERROR; \ + } \ + } while (0) + +/// parses an on/off command argument +#define COMMAND_PARSE_ON_OFF(in, out) \ + COMMAND_PARSE_BOOL(in, out, "on", "off") +/// parses an enable/disable command argument +#define COMMAND_PARSE_ENABLE(in, out) \ + COMMAND_PARSE_BOOL(in, out, "enable", "disable") + void script_debug(Jim_Interp *interp, const char *cmd, unsigned argc, Jim_Obj *const *argv); |