diff options
author | Vladimir Prus <vladimir@codesourcery.com> | 2007-08-31 18:52:05 +0000 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2007-08-31 18:52:05 +0000 |
commit | 02142340a06871b1c75a1849438adc62aaffebbd (patch) | |
tree | d4161e4e4b64d349846a0fdbbf6b44fbd94e363a /gdb/mi | |
parent | 144c41d9920221498b4a4f5b9cf504ffe2925957 (diff) | |
download | gdb-02142340a06871b1c75a1849438adc62aaffebbd.zip gdb-02142340a06871b1c75a1849438adc62aaffebbd.tar.gz gdb-02142340a06871b1c75a1849438adc62aaffebbd.tar.bz2 |
Implement -var-info-path-expression.
* mi/mi-cmds.h (mi_cmd_var_info_path_expression):
Declare.
* mi/mi-cmds.c (mi_cmds): Register var-info-path-expression.
* mi/mi-cmd-var.c (mi_cmd_var_info_path_expression): New.
* varobj.c (struct varobj): New field 'path_expr'.
(c_path_expr_of_child, cplus_path_expr_of_child)
(java_path_expr_of_child): New.
(struct language_specific): New field path_expr_of_child.
(varobj_create): Initialize the path_expr field.
(varobj_get_path_expr): New.
(new_variable): Initialize the path_expr field.
(free_variable): Free the path_expr field.
(adjust_value_for_children_access): New parameter
WAS_TYPE.
(c_number_of_children): Adjust.
(c_describe_child): New parameter CFULL_EXPRESSION.
Compute full expression.
(c_value_of_child, c_type_of_child): Adjust.
(cplus_number_of_children): Adjust.
(cplus_describe_child): New parameter CFULL_EXPRESSION.
Compute full expression.
(cplus_name_of_child, cplus_value_of_child)
(cplus_type_of_child): Adjust.
* varobj.h (varobj_get_path_expr): Declare.
Diffstat (limited to 'gdb/mi')
-rw-r--r-- | gdb/mi/mi-cmd-var.c | 21 | ||||
-rw-r--r-- | gdb/mi/mi-cmds.c | 2 | ||||
-rw-r--r-- | gdb/mi/mi-cmds.h | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c index 05fe7a9..213681e 100644 --- a/gdb/mi/mi-cmd-var.c +++ b/gdb/mi/mi-cmd-var.c @@ -413,6 +413,27 @@ mi_cmd_var_info_type (char *command, char **argv, int argc) } enum mi_cmd_result +mi_cmd_var_info_path_expression (char *command, char **argv, int argc) +{ + struct varobj *var; + char *path_expr; + + if (argc != 1) + error (_("Usage: NAME.")); + + /* Get varobj handle, if a valid var obj name was specified. */ + var = varobj_get_handle (argv[0]); + if (var == NULL) + error (_("Variable object not found")); + + path_expr = varobj_get_path_expr (var); + + ui_out_field_string (uiout, "path_expr", path_expr); + + return MI_CMD_DONE; +} + +enum mi_cmd_result mi_cmd_var_info_expression (char *command, char **argv, int argc) { enum varobj_languages lang; diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c index 7a05e33..48ba208 100644 --- a/gdb/mi/mi-cmds.c +++ b/gdb/mi/mi-cmds.c @@ -149,6 +149,8 @@ struct mi_cmd mi_cmds[] = { "var-create", { NULL, 0 }, 0, mi_cmd_var_create}, { "var-delete", { NULL, 0 }, 0, mi_cmd_var_delete}, { "var-evaluate-expression", { NULL, 0 }, 0, mi_cmd_var_evaluate_expression}, + { "var-info-path-expression", { NULL, 0 }, 0, + mi_cmd_var_info_path_expression}, { "var-info-expression", { NULL, 0 }, 0, mi_cmd_var_info_expression}, { "var-info-num-children", { NULL, 0 }, 0, mi_cmd_var_info_num_children}, { "var-info-type", { NULL, 0 }, 0, mi_cmd_var_info_type}, diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h index e045a66..7b3eb0e 100644 --- a/gdb/mi/mi-cmds.h +++ b/gdb/mi/mi-cmds.h @@ -107,6 +107,7 @@ extern mi_cmd_argv_ftype mi_cmd_var_create; extern mi_cmd_argv_ftype mi_cmd_var_delete; extern mi_cmd_argv_ftype mi_cmd_var_evaluate_expression; extern mi_cmd_argv_ftype mi_cmd_var_info_expression; +extern mi_cmd_argv_ftype mi_cmd_var_info_path_expression; extern mi_cmd_argv_ftype mi_cmd_var_info_num_children; extern mi_cmd_argv_ftype mi_cmd_var_info_type; extern mi_cmd_argv_ftype mi_cmd_var_list_children; |