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.
This commit is contained in:
parent
b9caf5053f
commit
3b4efeaa2d
21 changed files with 446 additions and 184 deletions
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue