summaryrefslogtreecommitdiff
path: root/gdb/c-typeprint.c
diff options
context:
space:
mode:
authorJason Molenda <jsm@bugshack.cygnus.com>1999-07-07 20:19:36 +0000
committerJason Molenda <jsm@bugshack.cygnus.com>1999-07-07 20:19:36 +0000
commita87029ef15e59af2cc0b27cb4024b0db313fa88e (patch)
treea5cc2d6f8ebdbbd957642e72e0e88cc5fe5cd2e1 /gdb/c-typeprint.c
parent528824cc847e5a13831dd41e5aacb34679143c94 (diff)
downloadgdb-a87029ef15e59af2cc0b27cb4024b0db313fa88e.tar.gz
import gdb-1999-07-07 post reformat
Diffstat (limited to 'gdb/c-typeprint.c')
-rw-r--r--gdb/c-typeprint.c573
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;
}
}
-
-
-
-
-
-
-
-
-