diff options
author | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2009-02-06 21:33:59 +0000 |
---|---|---|
committer | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2009-02-06 21:33:59 +0000 |
commit | d8906c6f0e46480df2c8ad6aec13e57c9af084f9 (patch) | |
tree | 0cb9e42b2182e59dbb81db42677032ed9160d564 /gdb/cli | |
parent | f073bbf7e0a9d7ebe5323c660b34c893c5dfedee (diff) | |
download | gdb-d8906c6f0e46480df2c8ad6aec13e57c9af084f9.zip gdb-d8906c6f0e46480df2c8ad6aec13e57c9af084f9.tar.gz gdb-d8906c6f0e46480df2c8ad6aec13e57c9af084f9.tar.bz2 |
gdb/
2009-02-06 Tom Tromey <tromey@redhat.com>
* Makefile.in (SUBDIR_PYTHON_OBS): Add python-cmd.o.
(SUBDIR_PYTHON_SRCS): Add python-cmd.c.
(python-cmd.o): New target.
* cli/cli-decode.c (set_cmd_completer): Add self parameter to
completer prototype.
(add_cmd): Initialize destroyer member of cmd_list_element. Use
make_symbol_completion_list_fn as completer.
(delete_cmd): Call destroyer if one is set.
* cli/cli-decode.h (cmd_list_element): Add cmd parameter to
completer member. Add destroyer member.
(set_cmd_completer): Add self parameter to
completer prototype.
* command.h (set_cmd_completer): Add cmd parameter to
completer prototype.
* completer.c (noop_completer, filename_completer,
location_completer, expression_completer, command_completer): Adapt
to new completer prototype.
(complete_line_internal): Pass new parameter to completer function.
* completer.h (noop_completer, filename_completer,
location_completer, expression_completer, command_completer): Adapt
prototypes to new completer prototype.
* interps.c (interpreter_completer): Adapt to new completer
prototype.
* python/python-cmd.c: New file.
* python/python-internal.h (gdbpy_initialize_commands): Add
prototype.
(gdbpy_doc_cst): Add forward declaration.
* python/python.c (gdbpy_doc_cst): Declare.
(_initialize_python): Call gdbpy_initialize_commands. Initialize
gdbpy_doc_cst.
* symtab.c (make_symbol_completion_list_fn): New function.
* symtab.h (make_symbol_completion_list_fn): Add prototype.
gdb/doc/
2009-02-06 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Python API): Add entry for Commands In Python.
(Commands In Python): New node.
gdb/testsuite/
2009-02-06 Thiago Jung Bauermann <bauerman@br.ibm.com>
* gdb.python/python-cmd.exp: New file.
Diffstat (limited to 'gdb/cli')
-rw-r--r-- | gdb/cli/cli-decode.c | 8 | ||||
-rw-r--r-- | gdb/cli/cli-decode.h | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index 556c027..8760ebf 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -132,7 +132,8 @@ cmd_type (struct cmd_list_element *cmd) void set_cmd_completer (struct cmd_list_element *cmd, - char **(*completer) (char *text, char *word)) + char **(*completer) (struct cmd_list_element *self, + char *text, char *word)) { cmd->completer = completer; /* Ok. */ } @@ -207,7 +208,8 @@ add_cmd (char *name, enum command_class class, void (*fun) (char *, int), c->prefixname = NULL; c->allow_unknown = 0; c->abbrev_flag = 0; - set_cmd_completer (c, make_symbol_completion_list); + set_cmd_completer (c, make_symbol_completion_list_fn); + c->destroyer = NULL; c->type = not_set_cmd; c->var = NULL; c->var_type = var_boolean; @@ -688,6 +690,8 @@ delete_cmd (char *name, struct cmd_list_element **list, { if (strcmp (iter->name, name) == 0) { + if (iter->destroyer) + iter->destroyer (iter, iter->context); if (iter->hookee_pre) iter->hookee_pre->hook_pre = 0; *prehook = iter->hook_pre; diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h index 56ea9bf..26ca2f7 100644 --- a/gdb/cli/cli-decode.h +++ b/gdb/cli/cli-decode.h @@ -167,7 +167,12 @@ struct cmd_list_element returned relative to this position. For example, suppose TEXT is "foo" and we want to complete to "foobar". If WORD is "oo", return "oobar"; if WORD is "baz/foo", return "baz/foobar". */ - char **(*completer) (char *text, char *word); + char **(*completer) (struct cmd_list_element *cmd, char *text, char *word); + + /* Destruction routine for this command. If non-NULL, this is + called when this command instance is destroyed. This may be + used to finalize the CONTEXT field, if needed. */ + void (*destroyer) (struct cmd_list_element *self, void *context); /* Type of "set" or "show" command (or SET_NOT_SET if not "set" or "show"). */ @@ -242,7 +247,8 @@ extern void set_cmd_sfunc (struct cmd_list_element *cmd, struct cmd_list_element * c)); extern void set_cmd_completer (struct cmd_list_element *cmd, - char **(*completer) (char *text, char *word)); + char **(*completer) (struct cmd_list_element *self, + char *text, char *word)); /* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs around in cmd objects to test the value of the commands sfunc(). */ |