#if BUILD_ECOSBOARD
#include <stdio.h>
#include <stdarg.h>
-/* Jim is provied by eCos */
-#include <cyg/jimtcl/jim.h>
-#else
-#include <helper/jim.h>
#endif
+#include <jim.h>
+#include <jim-nvp.h>
+
/* To achieve C99 printf compatibility in MinGW, gnu_printf should be
* used for __attribute__((format( ... ))), with GCC v4.4 or later
*/
struct command
{
- char *name;
+ const char *name;
const char *help;
const char *usage;
struct command *parent;
struct command* register_command(struct command_context *cmd_ctx,
struct command *parent, const struct command_registration *rec);
-#define COMMAND_REGISTER(_cmd_ctx, _parent, _name, _handler, _mode, _help) \
- ({ \
- struct command_registration cr = { \
- .name = _name, \
- .handler = _handler, \
- .mode = _mode, \
- .help = _help, \
- }; \
- register_command(_cmd_ctx, _parent, &cr); \
- })
-
/**
* Register one or more commands in the specified context, as children
* of @c parent (or top-level commends, if NULL). In a registration's
int command_context_mode(struct command_context *context, enum command_mode mode);
+/* Return the current command context associated with the Jim interpreter or
+ * alternatively the global default command interpreter
+ */
+struct command_context *current_command_context(Jim_Interp *interp);
/**
* Creates a new command context using the startup TCL provided and
* the existing Jim interpreter, if any. If interp == NULL, then command_init
/**
* Frees the resources associated with a command context. The commands
* are not removed, so unregister_all_commands() must be called first.
- * @param cmd_ctx The command_context that will be destroyed.
+ * @param context The command_context that will be destroyed.
*/
void command_done(struct command_context *context);
*/
#define COMMAND_PARSE_NUMBER(type, in, out) \
do { \
- int retval = parse_##type(in, &(out)); \
- if (ERROR_OK != retval) { \
+ int retval_macro_tmp = parse_##type(in, &(out)); \
+ if (ERROR_OK != retval_macro_tmp) { \
command_print(CMD_CTX, stringify(out) \
" option value ('%s') is not valid", in); \
- return retval; \
+ return retval_macro_tmp; \
} \
} while (0)
#define COMMAND_PARSE_BOOL(in, out, on, off) \
do { \
bool value; \
- int retval = command_parse_bool_arg(in, &value); \
- if (ERROR_OK != retval) { \
+ int retval_macro_tmp = command_parse_bool_arg(in, &value); \
+ if (ERROR_OK != retval_macro_tmp) { \
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 retval; \
+ return retval_macro_tmp; \
} \
out = value; \
} while (0)