summaryrefslogtreecommitdiff
path: root/src/helper/command.h
diff options
context:
space:
mode:
authorZachary T Welch <zw@superlucidity.net>2009-11-15 04:21:17 -0800
committerZachary T Welch <zw@superlucidity.net>2009-11-17 11:40:21 -0800
commitbe084414ba00a4ad641af04c3c6858312dd1b336 (patch)
tree6b32f73b845975eb0af7e8d4634aa5a483a1432d /src/helper/command.h
parent2861877b32a7a2f4022a1c3d9b66c9b4879878ac (diff)
downloadopenocd+libswd-be084414ba00a4ad641af04c3c6858312dd1b336.tar.gz
openocd+libswd-be084414ba00a4ad641af04c3c6858312dd1b336.tar.bz2
openocd+libswd-be084414ba00a4ad641af04c3c6858312dd1b336.tar.xz
openocd+libswd-be084414ba00a4ad641af04c3c6858312dd1b336.zip
add struct command_invocation for COMMAND_HANDLER
Adds the command_invocation structure to encapsulate parameters for all COMMAND_HANDLER routines. Rather than passing several arguments to each successive subroutine, a single pointer may be passed around. Changes the CMD_* macros to reference the new fields. Updates run_command to create an instance and pass it to the handler.
Diffstat (limited to 'src/helper/command.h')
-rw-r--r--src/helper/command.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/helper/command.h b/src/helper/command.h
index 74849646..b8ea3a4a 100644
--- a/src/helper/command.h
+++ b/src/helper/command.h
@@ -80,6 +80,16 @@ struct command_context
void *output_handler_priv;
};
+/**
+ * When run_command is called, a new instance will be created on the
+ * stack, filled with the proper values, and passed by reference to the
+ * required COMMAND_HANDLER routine.
+ */
+struct command_invocation {
+ struct command_context *ctx;
+ unsigned argc;
+ const char **argv;
+};
/**
* Command handlers may be defined with more parameters than the base
@@ -87,8 +97,7 @@ struct command_context
* defining all such derivative types using this macro.
*/
#define __COMMAND_HANDLER(name, extra...) \
- int name(struct command_context *cmd_ctx, \
- const char *args[], unsigned argc, ##extra)
+ int name(struct command_invocation *cmd, ##extra)
/**
* Use this to macro to call a command helper (or a nested handler).
@@ -104,7 +113,7 @@ struct command_context
* variables in intervening scope(s) by accident.
*/
#define CALL_COMMAND_HANDLER(name, extra...) \
- name(cmd_ctx, args, argc, ##extra)
+ name(cmd, ##extra)
/**
* Always use this macro to define new command handler functions.
@@ -125,17 +134,17 @@ struct command_context
* Use this macro to access the context of the command being handled,
* rather than accessing the variable directly. It may be moved.
*/
-#define CMD_CTX cmd_ctx
+#define CMD_CTX cmd->ctx
/**
* Use this macro to access the number of arguments for the command being
* handled, rather than accessing the variable directly. It may be moved.
*/
-#define CMD_ARGC argc
+#define CMD_ARGC cmd->argc
/**
* Use this macro to access the arguments for the command being handled,
* rather than accessing the variable directly. It may be moved.
*/
-#define CMD_ARGV args
+#define CMD_ARGV cmd->argv
/**
* Use this macro to access the name of the command being handled,
* rather than accessing the variable directly. It may be moved.