+2002-02-05 Jason Merrill <jason@redhat.com>
+
+ * demangle.h (cplus_demangle_v3): Add "options" parm.
+ (cplus_demangle_v3_type): Remove prototype.
+ (DMGL_VERBOSE): New macro.
+ (DMGL_TYPES): New macro.
+
2002-02-02 H.J. Lu (hjl@gnu.org)
* demangle.h (cplus_demangle_v3_type): New prototype.
#define DMGL_PARAMS (1 << 0) /* Include function args */
#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */
#define DMGL_JAVA (1 << 2) /* Demangle as Java rather than C++. */
+#define DMGL_VERBOSE (1 << 3) /* Include implementation details. */
+#define DMGL_TYPES (1 << 4) /* Also try to demangle type encodings. */
#define DMGL_AUTO (1 << 8)
#define DMGL_GNU (1 << 9)
/* V3 ABI demangling entry points, defined in cp-demangle.c. */
extern char*
-cplus_demangle_v3 PARAMS ((const char* mangled));
-
-/* V3 ABI demangling entry points, defined in cp-demangle.c. Also
- demagle types. */
-extern char*
-cplus_demangle_v3_type PARAMS ((const char* mangled));
+cplus_demangle_v3 PARAMS ((const char* mangled, int options));
extern char*
java_demangle_v3 PARAMS ((const char* mangled));
+2002-02-05 Jason Merrill <jason@redhat.com>
+
+ * cplus-dem.c (flags): Add DMGL_VERBOSE
+ (cplus_demangle_v3_p): Remove.
+ (demangle_it): Add DMGL_TYPES to passed flags.
+ * cp-demangle.c (cplus_demangle_v3_all): Remove.
+ (cplus_demangle_v3_type): Remove.
+ (cplus_demangle_v3): Add options parm.
+
2002-02-02 H.J. Lu (hjl@gnu.org)
* cp-demangle.c (cp_demangle_type): Do not protect with
PARAMS ((const char *, dyn_string_t, int));
static status_t cp_demangle_type
PARAMS ((const char*, dyn_string_t));
-static char* cplus_demangle_v3_all
- PARAMS ((const char*, int));
/* When passed to demangle_bare_function_type, indicates that the
function's return type is not encoded before its parameter types. */
If the demangling failes, returns NULL. */
char *
-cplus_demangle_v3 (mangled)
+cplus_demangle_v3 (mangled, options)
const char* mangled;
-{
- return cplus_demangle_v3_all (mangled, 0);
-}
-
-char *
-cplus_demangle_v3_type (mangled)
- const char* mangled;
-{
- return cplus_demangle_v3_all (mangled, 1);
-}
-
-static char *
-cplus_demangle_v3_all (mangled, type)
- const char* mangled;
- int type;
+ int options;
{
dyn_string_t demangled;
status_t status;
+ int type = !!(options & DMGL_TYPES);
if (mangled[0] == '_' && mangled[1] == 'Z')
/* It is not a type. */
return NULL;
}
+ flag_verbose = !!(options & DMGL_VERBOSE);
+
/* Create a dyn_string to hold the demangled name. */
demangled = dyn_string_new (0);
/* Attempt the demangling. */
static int
snarf_numeric_literal PARAMS ((const char **, string *));
-static char* (*cplus_demangle_v3_p) PARAMS ((const char* mangled))
- = cplus_demangle_v3;
-
/* There is a TYPE_QUAL value for each type qualifier. They can be
combined by bitwise-or to form the complete set of qualifiers for a
type. */
/* The V3 ABI demangling is implemented elsewhere. */
if (GNU_V3_DEMANGLING || AUTO_DEMANGLING)
{
- ret = cplus_demangle_v3_p (mangled);
+ ret = cplus_demangle_v3 (mangled, work->options);
if (ret || GNU_V3_DEMANGLING)
return ret;
}
static const char *program_name;
static const char *program_version = VERSION;
-static int flags = DMGL_PARAMS | DMGL_ANSI;
+static int flags = DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE;
static void demangle_it PARAMS ((char *));
static void usage PARAMS ((FILE *, int)) ATTRIBUTE_NORETURN;
{
char *result;
- result = cplus_demangle (mangled_name, flags);
+ /* For command line args, also try to demangle type encodings. */
+ result = cplus_demangle (mangled_name, flags | DMGL_TYPES);
if (result == NULL)
{
printf ("%s\n", mangled_name);
if (optind < argc)
{
- cplus_demangle_v3_p = cplus_demangle_v3_type;
for ( ; optind < argc; optind++)
{
demangle_it (argv[optind]);