openocd/src/helper
Antonio Borneo a510c8e23c helper/command: always pass struct command as jim private data
While registering a new command, jim accepts a pointer to command's
private data that will be accessible during the command execution.

Today openocd is not consistent and passes different private data
depending on the command, and then even overwrites it:
- "simple" commands (.handler) are registered with their own
  struct command pointer as command private data;
- "native" commands (.jim_handler) at root level are registered
  with NULL command private data;
- "native" commands (.jim_handler) not at root level are
  registered with the struct command pointer of their root command
  as command private data but, when executed, the command private
  data is overwritten by the value in field jim_handler_data taken
  from their struct command.

Uniform the usage of command private data by always set it to the
struct command pointer while registering the new commands.
Note: for multi-word commands only the root command is registered,
so command private data will be set to the struct command of the
root command. This will change later in this series when the full-
name of the command will be registered.

Don't overwrite the command private data, but let the commands that
needs jim_handler_data to get it directly through struct command.

For sake of uniformity, let function command_set_handler_data() to
set the field jim_handler_data also for "group" commands, even if
such value will not be used.

Now Jim_CmdPrivData() always returns a struct command pointer, so
wrap it in the inline function jim_to_command() to gain compile
time check on the returned type.
While there, uniform the code to use the macro Jim_CmdPrivData()
to access the command's private data pointer.

Change-Id: Idba16242ba1f6769341b4030a49cdf35a5278695
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5664
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
2021-04-18 15:32:57 +01:00
..
bin2char.sh helper: fix minor typos 2020-09-05 17:10:54 +01:00
binarybuffer.c Fix debug prints when loading to flash 2020-09-05 16:48:08 +01:00
binarybuffer.h Fix debug prints when loading to flash 2020-09-05 16:48:08 +01:00
bits.h openocd: fix incorrect doxygen comments 2021-01-13 11:33:16 +00:00
command.c helper/command: always pass struct command as jim private data 2021-04-18 15:32:57 +01:00
command.h helper/command: always pass struct command as jim private data 2021-04-18 15:32:57 +01:00
configuration.c helper/configuration: free script_search_dirs and config_file_names 2018-03-07 23:47:31 +00:00
configuration.h helper/configuration: free script_search_dirs and config_file_names 2018-03-07 23:47:31 +00:00
fileio.c Handle improperly build image files gracefully 2018-02-14 08:27:01 +00:00
fileio.h Handle improperly build image files gracefully 2018-02-14 08:27:01 +00:00
jep106.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
jep106.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
jep106.inc jep106: Add new IDs from JEDEC 2020-12-05 23:17:48 +00:00
jim-nvp.c jim-nvp: Make Jim_GetOpt_String const-correct 2016-02-29 20:32:31 +00:00
jim-nvp.h helper: fix minor typos 2020-09-05 17:10:54 +01:00
list.h openocd: fix incorrect doxygen comments 2021-01-13 11:33:16 +00:00
log.c helper: fix minor typos 2020-09-05 17:10:54 +01:00
log.h Upstream tons of RISC-V changes. 2020-10-14 05:43:05 +01:00
Makefile.am ioutil: drop the code, deprecated in v0.10.0 2021-03-19 21:55:23 +00:00
options.c openocd: remove command line flag -p/--pipe deprecated in v0.5.0 2021-03-19 21:54:46 +00:00
replacements.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
replacements.h helper/replacements.h: Add missing #include 2018-03-07 23:43:58 +00:00
startup.tcl coding style: src: remove empty lines at end of text files 2020-05-02 15:40:21 +01:00
system.h configure: drop macro 'AC_HEADER_TIME' 2021-01-18 15:32:46 +00:00
time_support_common.c Fix usage of timeval_ms() 2016-07-19 10:45:16 +01:00
time_support.c Add timeval_compare helper function 2018-01-25 16:43:45 +00:00
time_support.h configure: drop macro 'AC_HEADER_TIME' 2021-01-18 15:32:46 +00:00
types.h Remove BUILD_TARGET64 2020-04-21 12:55:41 +01:00
update_jep106.pl helper: fix minor typos 2020-09-05 17:10:54 +01:00
util.c helper: fix minor typos 2020-09-05 17:10:54 +01:00
util.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00