[RFA]: Make class_name_from_physname part of language vector

Jeff Johnston jjohnstn@redhat.com
Mon Jul 5 23:50:00 GMT 2004


Daniel Jacobowitz wrote:
> On Mon, Jul 05, 2004 at 04:21:20PM -0400, Jeff Johnston wrote:
> 
>>>You've left in a lot of hokery from the C++ support which I'm
>>>reasonably confident Java does not need.  I don't believe that Java
>>>mangled names will ever have templates, or classes nested inside of
>>>functions, or multiple argument lists - no depth at all.  Also, I'd
>>>appreciate it if you called it something other than
>>>find_last_component; the C++ version shouldn't have such a generic name
>>>either, IMO.
>>>
>>>Otherwise this looks fine.
> 
> 
>>I have made the changes you recommended.  The function now only looks for 
>>the opening parenthesis.  I renamed it to "find_member_function_name" as 
>>well.
> 
> 
> Sorry I wasn't clear - I was hoping for something that said it was for
> Java.  Maybe java_find_last_component?  Also:
>

Oops.  I thought you meant the functional description was too generic.  Anyway, 
changed to java_find_last_component.

> 
>>+/* Find the member function name of the demangled name NAME.  NAME
>>+   must be a method name including arguments, in order to correctly
>>+   locate the last component.
>>+
>>+   This function return a pointer to the first dot before the
>>+   member function name, or NULL if the name was not of the
>>+   expected form.  */
>>+
>>+static const char *
>>+find_member_function_name (const char *name)
>>+{
>>+  const char *p;
>>+  int depth;
> 
> 
> DEPTH is now write-only.
> 

Deleted.

> 
>>+
>>+  /* Functions can have local classes, so we need to find the
>>+     beginning of the last argument list, not the end of the first
>>+     one.  */
>>+  p = name + strlen (name) - 1;
>>+  while (p > name && *p != ')')
>>+    p--;
> 
> 
> Is this true for Java?
> 
> I don't think it is.  If it isn't, you can just search forward for the
> first '(' (and use strchr, even - I'm not sure why the old code doesn't
> use strrchr).
>

No, you're correct.  I have simplified the code.

New ChangeLog with name change:

2004-07-05  Jeff Johnston <jjohnstn@redhat.com>

         * language.h (struct_language_defn): Add new function pointer:
         la_class_name_from_physname.  Also add new prototype for
         language_class_name_from_physname.
         * language.c (language_class_name_from_physname): New function.
         (unk_lang_class_name): Ditto.
         (unknown_language_defn, auto_language_defn): Change
         to add unk_lang_class_name function pointer for
         la_class_name_from_physname.
         (local_language_defn): Ditto.
         * dwarf2read.c (guess_structure_name): Change to call
         language_class_name_from_physname.
         (determine_class_name): Ditto.
         * cp-support.c (class_name_from_physname): Renamed.
         (cp_class_name_from_physname): New name of function.
         * cp-support.h: Ditto.
         * c-lang.c (c_language_defn): Change to add NULL
         for class_name_from_physname function pointer.
         (cplus_language_defn): Change to add cp_class_name_from_physname.
         * jv-lang.c (java_class_name_physname): New function.
         (java_find_last_component): New static routine.
         (java_language_defn): Add java_class_name_from_physname pointer.
         * ada-lang.c (ada_language_defn): Change to add NULL
         for class_name_from_physname function pointer.
         * f-lang.c (f_language_defn): Ditto.
         * m2-lang.c (m2_language_defn): Ditto.
         * objc-lang.c (objc_language_defn): Ditto.
         * p-lang.c (pascal_language_defn): Ditto.
         * scm-lang.c (scm_language_defn): Ditto.

-- Jeff J.

> 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: class_name.patch2
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20040705/073c0cbe/attachment.ksh>


More information about the Gdb-patches mailing list