diff options
author | Michael Snyder <msnyder@specifix.com> | 2002-09-19 01:34:51 +0000 |
---|---|---|
committer | Michael Snyder <msnyder@specifix.com> | 2002-09-19 01:34:51 +0000 |
commit | 90b05b388cbccc9399a41c0a8df8fc5f39c04414 (patch) | |
tree | aeb60c0c5e09758d05463e5b51d4eedebb1d580c /gdb/expression.h | |
parent | f490fab98fd335a4e15cb1d23cac3a575cb49035 (diff) | |
download | gdb-90b05b388cbccc9399a41c0a8df8fc5f39c04414.tar.gz |
2002-09-18 Michael Snyder <msnyder@redhat.com>
Preliminary support for Objective-C:
* defs.h (language_objc): New enum value.
(puts_filtered_tabular): Declaration only, exported from utils.c.
(skip_quoted): Delete, declared in completer.h.
* c-exp.y: Include completer.h.
* p-exp.y: Ditto.
* jv-exp.y: Ditto.
* expression.h (OP_MSGCALL, OP_SELECTOR, OP_SELF, OP_NSSTRING):
New operator enum values.
* language.h (CAST_IS_CONVERSION): Test for language_objc.
* language.c (binop_result_type): Handle language_objc case.
(integral_type, character_type, string_type, boolean_type,
structured_type, binop_type_check): Ditto.
* symtab.h (SYMBOL_OBJC_DEMANGLED_NAME): Define.
(struct objc_specific): Add to general_symbol_info.
(SYMBOL_INIT_LANGUAGE_SPECIFIC): Add objc initialization.
(SYMBOL_DEMANGLED_NAME): Handle objc case.
* parser-defs.h (struct objc_class_str): New struct type.
(start_msglist, end_msglist, add_msglist): Declaration only,
exported from objc-lang.c.
* value.h (value_of_local, value_nsstring,
call_function_by_hand_expecting_type): Exported from valops.c.
* valops.c (find_function_addr): Export.
(call_function_by_hand_expecting_type): New function.
(value_of_local): New function.
* symfile.c (init_filename_language_table): Add ".m" extension
for Objective-C.
* utils.c (puts_filtered_tabular): New function.
(fprintf_symbol_filtered): Add objc demangling support (disabled).
(set/show demangle): Extend help-string to refer to ObjC.
* elfread.c (elf_symtab_read): Skip Objective-C special symbols.
* stabsread.c (symbol_reference_defined): Objective-C symbols
may contain colons: make allowances when scanning stabs strings
for colons.
(objc_find_colon): New function.
* printcmd.c (address_info): If language == objc then print
"self" instead of "this".
* parse.c (length_of_subexp): Handle new operators OP_MSGCALL,
OP_NSSTRING, and OP_SELF.
(prefixify_subexp): Ditto.
* source.c (print_source_lines): Mention objc in comment.
* breakpoint.c (parse_breakpoint_sals): Recognize Objective-C
method names.
Diffstat (limited to 'gdb/expression.h')
-rw-r--r-- | gdb/expression.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/gdb/expression.h b/gdb/expression.h index 34e002f3a28..c1f36a1d36e 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -181,6 +181,12 @@ enum exp_opcode making three exp_elements. */ OP_FUNCALL, + /* OP_MSGCALL is followed by a string in the next exp_element and then an + integer. The string is the selector string. The integer is the number + of arguments to the message call. That many plus one values are used, + the first one being the object pointer. This is an Objective C message */ + OP_MSGCALL, + /* This is EXACTLY like OP_FUNCALL but is semantically different. In F77, array subscript expressions, substring expressions and function calls are all exactly the same syntactically. They may @@ -273,11 +279,18 @@ enum exp_opcode STRUCTOP_STRUCT, STRUCTOP_PTR, - /* C++ */ - /* OP_THIS is just a placeholder for the class instance variable. + /* C++: + OP_THIS is just a placeholder for the class instance variable. It just comes in a tight (OP_THIS, OP_THIS) pair. */ OP_THIS, + /* Objective C: "@selector" pseudo-operator */ + OP_SELECTOR, + + /* Objective C: OP_SELF is just a placeholder for the class instance + variable. It just comes in a tight (OP_SELF, OP_SELF) pair. */ + OP_SELF, + /* OP_SCOPE surrounds a type name and a field name. The type name is encoded as one element, but the field name stays as a string, which, of course, is variable length. */ @@ -305,7 +318,10 @@ enum exp_opcode OP_NAME, /* An unparsed expression. Used for Scheme (for now at least) */ - OP_EXPRSTRING + OP_EXPRSTRING, + + /* An Objective C Foundation Class NSString constant */ + OP_NSSTRING }; union exp_element @@ -350,7 +366,7 @@ extern struct block *innermost_block; /* From eval.c */ -/* Values of NOSIDE argument to eval_subexp. */ +/* Values of NOSIDE argument to evaluate_subexp. */ enum noside { |