helper/command: change prototype of command_print/command_print_sameline
[fw/openocd] / src / helper / command.h
index 1a26c069956af15e6d3302b444ccc5ff8d8e4aca..41cdc0b9d2de8a0e26dce0f12b27b87f95119d42 100644 (file)
 #ifndef OPENOCD_HELPER_COMMAND_H
 #define OPENOCD_HELPER_COMMAND_H
 
+#include <stdint.h>
+#include <stdbool.h>
 #include <jim-nvp.h>
 
+#include <helper/types.h>
+
 /* To achieve C99 printf compatibility in MinGW, gnu_printf should be
  * used for __attribute__((format( ... ))), with GCC v4.4 or later
  */
@@ -117,6 +121,11 @@ struct command_invocation {
  */
 #define COMMAND_HELPER(name, extra ...) __COMMAND_HANDLER(name, extra)
 
+/**
+ * Use this macro to access the command being handled,
+ * rather than accessing the variable directly.  It may be moved.
+ */
+#define CMD (cmd)
 /**
  * Use this macro to access the context of the command being handled,
  * rather than accessing the variable directly.  It may be moved.
@@ -344,9 +353,9 @@ struct command_context *copy_command_context(struct command_context *cmd_ctx);
  */
 void command_done(struct command_context *context);
 
-void command_print(struct command_context *context, const char *format, ...)
+void command_print(struct command_invocation *cmd, const char *format, ...)
 __attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 2, 3)));
-void command_print_sameline(struct command_context *context, const char *format, ...)
+void command_print_sameline(struct command_invocation *cmd, const char *format, ...)
 __attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 2, 3)));
 int command_run_line(struct command_context *context, char *line);
 int command_run_linef(struct command_context *context, const char *format, ...)
@@ -400,7 +409,7 @@ DECLARE_PARSE_WRAPPER(_target_addr, target_addr_t);
        do { \
                int retval_macro_tmp = parse_ ## type(in, &(out)); \
                if (ERROR_OK != retval_macro_tmp) { \
-                       command_print(CMD_CTX, stringify(out) \
+                       command_print(CMD, stringify(out) \
                                " option value ('%s') is not valid", in); \
                        return retval_macro_tmp; \
                } \
@@ -420,9 +429,9 @@ DECLARE_PARSE_WRAPPER(_target_addr, target_addr_t);
                bool value; \
                int retval_macro_tmp = command_parse_bool_arg(in, &value); \
                if (ERROR_OK != retval_macro_tmp) { \
-                       command_print(CMD_CTX, stringify(out) \
+                       command_print(CMD, stringify(out) \
                                " option value ('%s') is not valid", in); \
-                       command_print(CMD_CTX, "  choices are '%s' or '%s'", \
+                       command_print(CMD, "  choices are '%s' or '%s'", \
                                on, off); \
                        return retval_macro_tmp; \
                } \