/* Support for printing Pascal types for GDB, the GNU debugger.
- Copyright (C) 2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2000-2002, 2006-2012 Free Software Foundation, Inc.
This file is part of GDB.
#include "language.h"
#include "p-lang.h"
#include "typeprint.h"
-
+#include "gdb-demangle.h"
#include "gdb_string.h"
#include <errno.h>
#include <ctype.h>
static void
pascal_type_print_derivation_info (struct ui_file *stream, struct type *type)
{
- char *name;
+ const char *name;
int i;
for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
/* Print the Pascal method arguments ARGS to the file STREAM. */
void
-pascal_type_print_method_args (char *physname, char *methodname,
+pascal_type_print_method_args (const char *physname, const char *methodname,
struct ui_file *stream)
{
int is_constructor = (strncmp (physname, "__ct__", 6) == 0);
while (isdigit (physname[0]))
{
int len = 0;
- int i;
- char storec;
+ int i, j;
char *argname;
while (isdigit (physname[len]))
}
i = strtol (physname, &argname, 0);
physname += len;
- storec = physname[i];
- physname[i] = 0;
+
+ for (j = 0; j < i; ++j)
+ fputc_filtered (physname[i], stream);
fputs_filtered (physname, stream);
- physname[i] = storec;
+
physname += i;
if (physname[0] != 0)
{
{
struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
- char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
+ const char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
/* this is GNU C++ specific
how can we know constructor/destructor?
It might work for GNU pascal. */
for (j = 0; j < len2; j++)
{
- char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
+ const char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
int is_constructor = (strncmp (physname, "__ct__", 6) == 0);
int is_destructor = (strncmp (physname, "__dt__", 6) == 0);