diff options
author | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
---|---|---|
committer | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
commit | a87029ef15e59af2cc0b27cb4024b0db313fa88e (patch) | |
tree | a5cc2d6f8ebdbbd957642e72e0e88cc5fe5cd2e1 /gdb/c-typeprint.c | |
parent | 528824cc847e5a13831dd41e5aacb34679143c94 (diff) | |
download | gdb-a87029ef15e59af2cc0b27cb4024b0db313fa88e.tar.gz |
import gdb-1999-07-07 post reformat
Diffstat (limited to 'gdb/c-typeprint.c')
-rw-r--r-- | gdb/c-typeprint.c | 573 |
1 files changed, 290 insertions, 283 deletions
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 52569f8fc53..d6eca3042b7 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -2,21 +2,22 @@ Copyright 1986, 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1998, 1999 Free Software Foundation, Inc. -This file is part of GDB. + This file is part of GDB. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #include "defs.h" #include "obstack.h" @@ -41,7 +42,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Flag indicating target was compiled by HP compiler */ extern int hp_som_som_object_present; -static void cp_type_print_method_args PARAMS ((struct type **args, char *prefix, char *varstring, int staticp, GDB_FILE *stream)); +static void cp_type_print_method_args PARAMS ((struct type ** args, char *prefix, char *varstring, int staticp, GDB_FILE * stream)); static void c_type_print_args PARAMS ((struct type *, GDB_FILE *)); @@ -54,58 +55,58 @@ c_type_print_varspec_prefix PARAMS ((struct type *, GDB_FILE *, int, int)); static void c_type_print_cv_qualifier PARAMS ((struct type *, GDB_FILE *, int, int)); + - /* Print a description of a type in the format of a typedef for the current language. NEW is the new name for a type TYPE. */ void c_typedef_print (type, new, stream) - struct type *type; - struct symbol *new; - GDB_FILE *stream; + struct type *type; + struct symbol *new; + GDB_FILE *stream; { CHECK_TYPEDEF (type); - switch (current_language->la_language) - { + switch (current_language->la_language) + { #ifdef _LANG_c - case language_c: - case language_cplus: - fprintf_filtered(stream, "typedef "); - type_print(type,"",stream,0); - if(TYPE_NAME ((SYMBOL_TYPE (new))) == 0 - || !STREQ (TYPE_NAME ((SYMBOL_TYPE (new))), SYMBOL_NAME (new))) - fprintf_filtered(stream, " %s", SYMBOL_SOURCE_NAME(new)); + case language_c: + case language_cplus: + fprintf_filtered (stream, "typedef "); + type_print (type, "", stream, 0); + if (TYPE_NAME ((SYMBOL_TYPE (new))) == 0 + || !STREQ (TYPE_NAME ((SYMBOL_TYPE (new))), SYMBOL_NAME (new))) + fprintf_filtered (stream, " %s", SYMBOL_SOURCE_NAME (new)); break; #endif #ifdef _LANG_m2 - case language_m2: - fprintf_filtered(stream, "TYPE "); - if(!TYPE_NAME(SYMBOL_TYPE(new)) || - !STREQ (TYPE_NAME(SYMBOL_TYPE(new)), SYMBOL_NAME(new))) - fprintf_filtered(stream, "%s = ", SYMBOL_SOURCE_NAME(new)); + case language_m2: + fprintf_filtered (stream, "TYPE "); + if (!TYPE_NAME (SYMBOL_TYPE (new)) || + !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new))) + fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new)); else - fprintf_filtered(stream, "<builtin> = "); - type_print(type,"",stream,0); + fprintf_filtered (stream, "<builtin> = "); + type_print (type, "", stream, 0); break; #endif #ifdef _LANG_chill - case language_chill: - fprintf_filtered(stream, "SYNMODE "); - if(!TYPE_NAME(SYMBOL_TYPE(new)) || - !STREQ (TYPE_NAME(SYMBOL_TYPE(new)), SYMBOL_NAME(new))) - fprintf_filtered(stream, "%s = ", SYMBOL_SOURCE_NAME(new)); + case language_chill: + fprintf_filtered (stream, "SYNMODE "); + if (!TYPE_NAME (SYMBOL_TYPE (new)) || + !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new))) + fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new)); else - fprintf_filtered(stream, "<builtin> = "); - type_print(type,"",stream,0); + fprintf_filtered (stream, "<builtin> = "); + type_print (type, "", stream, 0); break; #endif - default: - error("Language not supported."); - } - fprintf_filtered(stream, ";\n"); + default: + error ("Language not supported."); + } + fprintf_filtered (stream, ";\n"); } @@ -129,8 +130,8 @@ c_print_type (type, varstring, stream, show, level) code = TYPE_CODE (type); if ((varstring != NULL && *varstring != '\0') || - /* Need a space if going to print stars or brackets; - but not if we will print just a type name. */ + /* Need a space if going to print stars or brackets; + but not if we will print just a type name. */ ((show > 0 || TYPE_NAME (type) == 0) && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC @@ -146,33 +147,33 @@ c_print_type (type, varstring, stream, show, level) fputs_filtered (varstring, stream); /* For demangled function names, we have the arglist as part of the name, - so don't print an additional pair of ()'s */ + so don't print an additional pair of ()'s */ - demangled_args = strchr(varstring, '(') != NULL; + demangled_args = strchr (varstring, '(') != NULL; c_type_print_varspec_suffix (type, stream, show, 0, demangled_args); } } - + /* If TYPE is a derived type, then print out derivation information. Print only the actual base classes of this type, not the base classes of the base classes. I.E. for the derivation hierarchy: - class A { int a; }; - class B : public A {int b; }; - class C : public B {int c; }; + class A { int a; }; + class B : public A {int b; }; + class C : public B {int c; }; Print the type of class C as: - class C : public B { - int c; - } + class C : public B { + int c; + } Not as the following (like gdb used to), which is not legal C++ syntax for derived types and may be confused with the multiple inheritance form: - class C : public B : public A { - int c; - } + class C : public B : public A { + int c; + } In general, gdb should try to print the types as closely as possible to the form that they appear in the source code. @@ -192,9 +193,9 @@ cp_type_print_derivation_info (stream, type) { fputs_filtered (i == 0 ? ": " : ", ", stream); fprintf_filtered (stream, "%s%s ", - BASETYPE_VIA_PUBLIC (type, i) ? "public" - : (TYPE_FIELD_PROTECTED (type, i) ? "protected" : "private"), - BASETYPE_VIA_VIRTUAL(type, i) ? " virtual" : ""); + BASETYPE_VIA_PUBLIC (type, i) ? "public" + : (TYPE_FIELD_PROTECTED (type, i) ? "protected" : "private"), + BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : ""); name = type_name_no_tag (TYPE_BASECLASS (type, i)); fprintf_filtered (stream, "%s", name ? name : "(null)"); } @@ -204,7 +205,7 @@ cp_type_print_derivation_info (stream, type) } } /* Print the C++ method arguments ARGS to the file STREAM. */ - + static void cp_type_print_method_args (args, prefix, varstring, staticp, stream) struct type **args; @@ -214,33 +215,34 @@ cp_type_print_method_args (args, prefix, varstring, staticp, stream) GDB_FILE *stream; { int i; - + fprintf_symbol_filtered (stream, prefix, language_cplus, DMGL_ANSI); fprintf_symbol_filtered (stream, varstring, language_cplus, DMGL_ANSI); fputs_filtered ("(", stream); if (args && args[!staticp] && args[!staticp]->code != TYPE_CODE_VOID) { - i = !staticp; /* skip the class variable */ + i = !staticp; /* skip the class variable */ while (1) - { - type_print (args[i++], "", stream, 0); - if (!args[i]) - { - fprintf_filtered (stream, " ..."); - break; - } - else if (args[i]->code != TYPE_CODE_VOID) - { - fprintf_filtered (stream, ", "); - } - else break; - } + { + type_print (args[i++], "", stream, 0); + if (!args[i]) + { + fprintf_filtered (stream, " ..."); + break; + } + else if (args[i]->code != TYPE_CODE_VOID) + { + fprintf_filtered (stream, ", "); + } + else + break; + } } else if (current_language->la_language == language_cplus) { fprintf_filtered (stream, "void"); } - + fprintf_filtered (stream, ")"); } @@ -286,7 +288,7 @@ c_type_print_varspec_prefix (type, stream, show, passed_a_ptr) if (name) fputs_filtered (name, stream); else - c_type_print_base (TYPE_DOMAIN_TYPE (type), stream, 0, passed_a_ptr); + c_type_print_base (TYPE_DOMAIN_TYPE (type), stream, 0, passed_a_ptr); fprintf_filtered (stream, "::"); break; @@ -337,7 +339,7 @@ c_type_print_varspec_prefix (type, stream, show, passed_a_ptr) case TYPE_CODE_COMPLEX: case TYPE_CODE_TYPEDEF: /* These types need no prefix. They are listed here so that - gcc -Wall will reveal any types that haven't been handled. */ + gcc -Wall will reveal any types that haven't been handled. */ break; } } @@ -349,25 +351,25 @@ c_type_print_varspec_prefix (type, stream, show, passed_a_ptr) static void c_type_print_cv_qualifier (type, stream, need_pre_space, need_post_space) - struct type *type; - GDB_FILE *stream; - int need_pre_space; - int need_post_space; + struct type *type; + GDB_FILE *stream; + int need_pre_space; + int need_post_space; { int flag = 0; - + if (TYPE_CONST (type)) { if (need_pre_space) - fprintf_filtered (stream, " "); + fprintf_filtered (stream, " "); fprintf_filtered (stream, "const"); flag = 1; } - + if (TYPE_VOLATILE (type)) { if (flag || need_pre_space) - fprintf_filtered (stream, " "); + fprintf_filtered (stream, " "); fprintf_filtered (stream, "volatile"); flag = 1; } @@ -396,10 +398,10 @@ c_type_print_args (type, stream) fprintf_filtered (stream, "..."); } else if ((args[1]->code == TYPE_CODE_VOID) && - (current_language->la_language == language_cplus)) - { - fprintf_filtered (stream, "void"); - } + (current_language->la_language == language_cplus)) + { + fprintf_filtered (stream, "void"); + } else { for (i = 1; @@ -407,11 +409,11 @@ c_type_print_args (type, stream) i++) { c_print_type (args[i], "", stream, -1, 0); - if (args[i+1] == NULL) + if (args[i + 1] == NULL) { fprintf_filtered (stream, "..."); } - else if (args[i+1]->code != TYPE_CODE_VOID) + else if (args[i + 1]->code != TYPE_CODE_VOID) { fprintf_filtered (stream, ","); wrap_here (" "); @@ -423,7 +425,7 @@ c_type_print_args (type, stream) { fprintf_filtered (stream, "void"); } - + fprintf_filtered (stream, ")"); } @@ -452,15 +454,15 @@ c_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args) case TYPE_CODE_ARRAY: if (passed_a_ptr) fprintf_filtered (stream, ")"); - + fprintf_filtered (stream, "["); if (TYPE_LENGTH (type) >= 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 - && TYPE_ARRAY_UPPER_BOUND_TYPE(type) != BOUND_CANNOT_BE_DETERMINED) + && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) fprintf_filtered (stream, "%d", (TYPE_LENGTH (type) / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))); fprintf_filtered (stream, "]"); - + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); break; @@ -489,22 +491,23 @@ c_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args) if (passed_a_ptr) fprintf_filtered (stream, ")"); if (!demangled_args) - { int i, len = TYPE_NFIELDS (type); + { + int i, len = TYPE_NFIELDS (type); fprintf_filtered (stream, "("); - if ((len == 0) && (current_language->la_language == language_cplus)) - { - fprintf_filtered (stream, "void"); - } - else - for (i = 0; i < len; i++) - { - if (i > 0) - { - fputs_filtered (", ", stream); - wrap_here (" "); - } - c_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); - } + if ((len == 0) && (current_language->la_language == language_cplus)) + { + fprintf_filtered (stream, "void"); + } + else + for (i = 0; i < len; i++) + { + if (i > 0) + { + fputs_filtered (", ", stream); + wrap_here (" "); + } + c_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); + } fprintf_filtered (stream, ")"); } c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, @@ -528,7 +531,7 @@ c_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args) case TYPE_CODE_COMPLEX: case TYPE_CODE_TYPEDEF: /* These types do not need a suffix. They are listed so that - gcc -Wall will report types that may not have been considered. */ + gcc -Wall will report types that may not have been considered. */ break; } } @@ -562,7 +565,11 @@ c_type_print_base (type, stream, show, level) char *mangled_name; char *demangled_name; char *demangled_no_static; - enum {s_none, s_public, s_private, s_protected} section_type; + enum + { + s_none, s_public, s_private, s_protected + } + section_type; int need_access_label = 0; int j, len2; @@ -590,7 +597,7 @@ c_type_print_base (type, stream, show, level) } CHECK_TYPEDEF (type); - + switch (TYPE_CODE (type)) { case TYPE_CODE_TYPEDEF: @@ -608,28 +615,32 @@ c_type_print_base (type, stream, show, level) /* Note TYPE_CODE_STRUCT and TYPE_CODE_CLASS have the same value, * so we use another means for distinguishing them. */ - if (HAVE_CPLUS_STRUCT (type)) { - switch (TYPE_DECLARED_TYPE(type)) { - case DECLARED_TYPE_CLASS: - fprintf_filtered (stream, "class "); - break; - case DECLARED_TYPE_UNION: - fprintf_filtered (stream, "union "); - break; - case DECLARED_TYPE_STRUCT: - fprintf_filtered (stream, "struct "); - break; - default: - /* If there is a CPLUS_STRUCT, assume class if not - * otherwise specified in the declared_type field. - */ - fprintf_filtered (stream, "class "); - break; - } /* switch */ - } else { - /* If not CPLUS_STRUCT, then assume it's a C struct */ - fprintf_filtered (stream, "struct "); - } + if (HAVE_CPLUS_STRUCT (type)) + { + switch (TYPE_DECLARED_TYPE (type)) + { + case DECLARED_TYPE_CLASS: + fprintf_filtered (stream, "class "); + break; + case DECLARED_TYPE_UNION: + fprintf_filtered (stream, "union "); + break; + case DECLARED_TYPE_STRUCT: + fprintf_filtered (stream, "struct "); + break; + default: + /* If there is a CPLUS_STRUCT, assume class if not + * otherwise specified in the declared_type field. + */ + fprintf_filtered (stream, "class "); + break; + } /* switch */ + } + else + { + /* If not CPLUS_STRUCT, then assume it's a C struct */ + fprintf_filtered (stream, "struct "); + } goto struct_union; case TYPE_CODE_UNION: @@ -645,7 +656,7 @@ c_type_print_base (type, stream, show, level) * want to print. */ if (TYPE_TAG_NAME (type) != NULL && - strncmp(TYPE_TAG_NAME(type), "{unnamed", 8)) + strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) @@ -661,7 +672,7 @@ c_type_print_base (type, stream, show, level) else if (show > 0 || TYPE_TAG_NAME (type) == NULL) { cp_type_print_derivation_info (stream, type); - + fprintf_filtered (stream, "{\n"); if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0)) { @@ -677,71 +688,71 @@ c_type_print_base (type, stream, show, level) section_type = s_none; - /* For a class, if all members are private, there's no need - for a "private:" label; similarly, for a struct or union - masquerading as a class, if all members are public, there's - no need for a "public:" label. */ - - if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_CLASS) || - (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_TEMPLATE)) - { - QUIT; - len = TYPE_NFIELDS (type); - for (i = TYPE_N_BASECLASSES (type); i < len; i++) - if (!TYPE_FIELD_PRIVATE (type, i)) - { - need_access_label = 1; - break; - } - QUIT; - if (!need_access_label) - { - len2 = TYPE_NFN_FIELDS (type); - for (j = 0; j < len2; j++) - { - len = TYPE_FN_FIELDLIST_LENGTH (type, j); - for (i = 0; i < len; i++) - if (!TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i)) - { - need_access_label = 1; - break; - } - if (need_access_label) - break; - } - } - } - else if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_STRUCT) || - (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_UNION)) - { - QUIT; - len = TYPE_NFIELDS (type); - for (i = TYPE_N_BASECLASSES (type); i < len; i++) - if (TYPE_FIELD_PRIVATE (type, i) || TYPE_FIELD_PROTECTED (type, i)) - { - need_access_label = 1; - break; - } - QUIT; - if (!need_access_label) - { - len2 = TYPE_NFN_FIELDS (type); - for (j = 0; j < len2; j++) - { - QUIT; - len = TYPE_FN_FIELDLIST_LENGTH (type, j); - for (i = 0; i < len; i++) - if (TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i) || - TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type, j), i)) - { - need_access_label = 1; - break; - } - if (need_access_label) - break; - } - } - } + /* For a class, if all members are private, there's no need + for a "private:" label; similarly, for a struct or union + masquerading as a class, if all members are public, there's + no need for a "public:" label. */ + + if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_CLASS) || + (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_TEMPLATE)) + { + QUIT; + len = TYPE_NFIELDS (type); + for (i = TYPE_N_BASECLASSES (type); i < len; i++) + if (!TYPE_FIELD_PRIVATE (type, i)) + { + need_access_label = 1; + break; + } + QUIT; + if (!need_access_label) + { + len2 = TYPE_NFN_FIELDS (type); + for (j = 0; j < len2; j++) + { + len = TYPE_FN_FIELDLIST_LENGTH (type, j); + for (i = 0; i < len; i++) + if (!TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i)) + { + need_access_label = 1; + break; + } + if (need_access_label) + break; + } + } + } + else if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_STRUCT) || + (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_UNION)) + { + QUIT; + len = TYPE_NFIELDS (type); + for (i = TYPE_N_BASECLASSES (type); i < len; i++) + if (TYPE_FIELD_PRIVATE (type, i) || TYPE_FIELD_PROTECTED (type, i)) + { + need_access_label = 1; + break; + } + QUIT; + if (!need_access_label) + { + len2 = TYPE_NFN_FIELDS (type); + for (j = 0; j < len2; j++) + { + QUIT; + len = TYPE_FN_FIELDLIST_LENGTH (type, j); + for (i = 0; i < len; i++) + if (TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i) || + TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type, j), i)) + { + need_access_label = 1; + break; + } + if (need_access_label) + break; + } + } + } /* If there is a base class for this type, do not print the field that it occupies. */ @@ -751,17 +762,17 @@ c_type_print_base (type, stream, show, level) { QUIT; /* Don't print out virtual function table. */ - /* HP ANSI C++ case */ - if (TYPE_HAS_VTABLE(type) && (STREQN (TYPE_FIELD_NAME (type, i), "__vfp", 5))) - continue; - /* Other compilers */ - /* pai:: FIXME : check for has_vtable < 0 */ + /* HP ANSI C++ case */ + if (TYPE_HAS_VTABLE (type) && (STREQN (TYPE_FIELD_NAME (type, i), "__vfp", 5))) + continue; + /* Other compilers */ + /* pai:: FIXME : check for has_vtable < 0 */ if (STREQN (TYPE_FIELD_NAME (type, i), "_vptr", 5) && is_cplus_marker ((TYPE_FIELD_NAME (type, i))[5])) continue; /* If this is a C++ class we can print the various C++ section - labels. */ + labels. */ if (HAVE_CPLUS_STRUCT (type) && need_access_label) { @@ -817,7 +828,7 @@ c_type_print_base (type, stream, show, level) /* If there are both fields and methods, put a space between. */ len = TYPE_NFN_FIELDS (type); if (len && section_type != s_none) - fprintf_filtered (stream, "\n"); + fprintf_filtered (stream, "\n"); /* C++: print out the methods */ for (i = 0; i < len; i++) @@ -826,16 +837,16 @@ c_type_print_base (type, stream, show, level) int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i); char *method_name = TYPE_FN_FIELDLIST_NAME (type, i); char *name = type_name_no_tag (type); - int is_constructor = name && STREQ(method_name, name); + int is_constructor = name && STREQ (method_name, name); for (j = 0; j < len2; j++) { char *physname = TYPE_FN_FIELD_PHYSNAME (f, j); - int is_full_physname_constructor = - ((physname[0] == '_' && physname[1] == '_' - && strchr ("0123456789Qt", physname[2])) - || STREQN (physname, "__ct__", 6) - || DESTRUCTOR_PREFIX_P (physname) - || STREQN (physname, "__dt__", 6)); + int is_full_physname_constructor = + ((physname[0] == '_' && physname[1] == '_' + && strchr ("0123456789Qt", physname[2])) + || STREQN (physname, "__ct__", 6) + || DESTRUCTOR_PREFIX_P (physname) + || STREQN (physname, "__dt__", 6)); QUIT; if (TYPE_FN_FIELD_PROTECTED (f, j)) @@ -873,13 +884,13 @@ c_type_print_base (type, stream, show, level) { /* Keep GDB from crashing here. */ fprintf_filtered (stream, "<undefined type> %s;\n", - TYPE_FN_FIELD_PHYSNAME (f, j)); + TYPE_FN_FIELD_PHYSNAME (f, j)); break; } - else if (!is_constructor && /* constructors don't have declared types */ - !is_full_physname_constructor && /* " " */ - !strstr (method_name, "operator ")) /* Not a type conversion operator */ - /* (note space -- other operators don't have it) */ + else if (!is_constructor && /* constructors don't have declared types */ + !is_full_physname_constructor && /* " " */ + !strstr (method_name, "operator ")) /* Not a type conversion operator */ + /* (note space -- other operators don't have it) */ { type_print (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)), "", stream, -1); @@ -897,14 +908,14 @@ c_type_print_base (type, stream, show, level) if (demangled_name == NULL) { /* in some cases (for instance with the HP demangling), - if a function has more than 10 arguments, - the demangling will fail. - Let's try to reconstruct the function signature from - the symbol information */ + if a function has more than 10 arguments, + the demangling will fail. + Let's try to reconstruct the function signature from + the symbol information */ if (!TYPE_FN_FIELD_STUB (f, j)) cp_type_print_method_args (TYPE_FN_FIELD_ARGS (f, j), "", method_name, - TYPE_FN_FIELD_STATIC_P (f, j), + TYPE_FN_FIELD_STATIC_P (f, j), stream); else fprintf_filtered (stream, "<badly mangled name '%s'>", @@ -914,7 +925,7 @@ c_type_print_base (type, stream, show, level) { char *p; char *demangled_no_class = demangled_name; - + while ((p = strchr (demangled_no_class, ':'))) { demangled_no_class = p; @@ -928,7 +939,7 @@ c_type_print_base (type, stream, show, level) int length = p - demangled_no_class; demangled_no_static = (char *) xmalloc (length + 1); strncpy (demangled_no_static, demangled_no_class, length); - *(demangled_no_static + length) = '\0'; + *(demangled_no_static + length) = '\0'; fputs_filtered (demangled_no_static, stream); free (demangled_no_static); } @@ -944,40 +955,40 @@ c_type_print_base (type, stream, show, level) } } - if (TYPE_LOCALTYPE_PTR (type) && show >= 0) - fprintfi_filtered (level, stream, " (Local at %s:%d)\n", - TYPE_LOCALTYPE_FILE (type), - TYPE_LOCALTYPE_LINE (type)); + if (TYPE_LOCALTYPE_PTR (type) && show >= 0) + fprintfi_filtered (level, stream, " (Local at %s:%d)\n", + TYPE_LOCALTYPE_FILE (type), + TYPE_LOCALTYPE_LINE (type)); fprintfi_filtered (level, stream, "}"); } - if (TYPE_CODE(type) == TYPE_CODE_TEMPLATE) - goto go_back; + if (TYPE_CODE (type) == TYPE_CODE_TEMPLATE) + goto go_back; break; case TYPE_CODE_ENUM: c_type_print_cv_qualifier (type, stream, 0, 1); /* HP C supports sized enums */ if (hp_som_som_object_present) - switch (TYPE_LENGTH (type)) - { - case 1: - fputs_filtered ("char ", stream); - break; - case 2: - fputs_filtered ("short ", stream); - break; - default: - break; - } - fprintf_filtered (stream, "enum "); + switch (TYPE_LENGTH (type)) + { + case 1: + fputs_filtered ("char ", stream); + break; + case 2: + fputs_filtered ("short ", stream); + break; + default: + break; + } + fprintf_filtered (stream, "enum "); /* Print the tag name if it exists. The aCC compiler emits a spurious "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}" tag for unnamed struct/union/enum's, which we don't want to print. */ if (TYPE_TAG_NAME (type) != NULL && - strncmp(TYPE_TAG_NAME(type), "{unnamed", 8)) + strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) @@ -999,7 +1010,8 @@ c_type_print_base (type, stream, show, level) for (i = 0; i < len; i++) { QUIT; - if (i) fprintf_filtered (stream, ", "); + if (i) + fprintf_filtered (stream, ", "); wrap_here (" "); fputs_filtered (TYPE_FIELD_NAME (type, i), stream); if (lastval != TYPE_FIELD_BITPOS (type, i)) @@ -1033,41 +1045,45 @@ c_type_print_base (type, stream, show, level) case TYPE_CODE_TEMPLATE: /* Called on "ptype t" where "t" is a template. Prints the template header (with args), e.g.: - template <class T1, class T2> class " + template <class T1, class T2> class " and then merges with the struct/union/class code to print the rest of the definition. */ c_type_print_cv_qualifier (type, stream, 0, 1); fprintf_filtered (stream, "template <"); - for (i = 0; i < TYPE_NTEMPLATE_ARGS(type); i++) { - struct template_arg templ_arg; - templ_arg = TYPE_TEMPLATE_ARG(type, i); - fprintf_filtered (stream, "class %s", templ_arg.name); - if (i < TYPE_NTEMPLATE_ARGS(type)-1) - fprintf_filtered (stream, ", "); - } + for (i = 0; i < TYPE_NTEMPLATE_ARGS (type); i++) + { + struct template_arg templ_arg; + templ_arg = TYPE_TEMPLATE_ARG (type, i); + fprintf_filtered (stream, "class %s", templ_arg.name); + if (i < TYPE_NTEMPLATE_ARGS (type) - 1) + fprintf_filtered (stream, ", "); + } fprintf_filtered (stream, "> class "); /* Yuck, factor this out to a subroutine so we can call it and return to the point marked with the "goback:" label... - RT */ - goto struct_union; -go_back: - if (TYPE_NINSTANTIATIONS(type) > 0) { - fprintf_filtered (stream, "\ntemplate instantiations:\n"); - for (i = 0; i < TYPE_NINSTANTIATIONS(type); i++) { - fprintf_filtered(stream, " "); - c_type_print_base (TYPE_INSTANTIATION(type, i), stream, 0, level); - if (i < TYPE_NINSTANTIATIONS(type)-1) fprintf_filtered(stream, "\n"); - } - } + goto struct_union; + go_back: + if (TYPE_NINSTANTIATIONS (type) > 0) + { + fprintf_filtered (stream, "\ntemplate instantiations:\n"); + for (i = 0; i < TYPE_NINSTANTIATIONS (type); i++) + { + fprintf_filtered (stream, " "); + c_type_print_base (TYPE_INSTANTIATION (type, i), stream, 0, level); + if (i < TYPE_NINSTANTIATIONS (type) - 1) + fprintf_filtered (stream, "\n"); + } + } break; - + default: /* Handle types not explicitly handled by the other cases, - such as fundamental types. For these, just print whatever - the type name is, as recorded in the type itself. If there - is no type name, then complain. */ + such as fundamental types. For these, just print whatever + the type name is, as recorded in the type itself. If there + is no type name, then complain. */ if (TYPE_NAME (type) != NULL) { - c_type_print_cv_qualifier (type, stream, 0, 1); + c_type_print_cv_qualifier (type, stream, 0, 1); fputs_filtered (TYPE_NAME (type), stream); } else @@ -1080,12 +1096,3 @@ go_back: break; } } - - - - - - - - - |