summaryrefslogtreecommitdiff
path: root/gdb/cp-support.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/cp-support.h')
-rw-r--r--gdb/cp-support.h32
1 files changed, 28 insertions, 4 deletions
diff --git a/gdb/cp-support.h b/gdb/cp-support.h
index d23f19ed0e7..51f808f80ef 100644
--- a/gdb/cp-support.h
+++ b/gdb/cp-support.h
@@ -26,13 +26,12 @@
/* We need this for 'domain_enum', alas... */
#include "symtab.h"
-
#include "vec.h"
+#include "gdb_obstack.h"
/* Opaque declarations. */
struct symbol;
-struct obstack;
struct block;
struct objfile;
struct type;
@@ -46,6 +45,20 @@ struct demangle_component;
#define CP_ANONYMOUS_NAMESPACE_LEN 21
+/* The result of parsing a name. */
+
+struct demangle_parse_info
+{
+ /* The memory used during the parse. */
+ struct demangle_info *info;
+
+ /* The result of the parse. */
+ struct demangle_component *tree;
+
+ /* Any temporary memory used during typedef replacement. */
+ struct obstack obstack;
+};
+
/* This struct is designed to store data from using directives. It
says that names from namespace IMPORT_SRC should be visible within
namespace IMPORT_DEST. These form a linked list; NEXT is the next
@@ -134,6 +147,8 @@ struct using_direct
extern char *cp_canonicalize_string (const char *string);
+extern char *cp_canonicalize_string_no_typedefs (const char *string);
+
extern char *cp_class_name_from_physname (const char *physname);
extern char *method_name_from_physname (const char *physname);
@@ -214,12 +229,21 @@ struct type *cp_lookup_transparent_type (const char *name);
/* Functions from cp-name-parser.y. */
-extern struct demangle_component *cp_demangled_name_to_comp
- (const char *demangled_name, const char **errmsg);
+extern struct demangle_parse_info *cp_demangled_name_to_comp
+ (const char *demangled_name, const char **errmsg);
extern char *cp_comp_to_string (struct demangle_component *result,
int estimated_len);
+extern void cp_demangled_name_parse_free (struct demangle_parse_info *);
+extern struct cleanup *make_cleanup_cp_demangled_name_parse_free
+ (struct demangle_parse_info *);
+extern void cp_merge_demangle_parse_infos (struct demangle_parse_info *,
+ struct demangle_component *,
+ struct demangle_parse_info *);
+
+extern struct demangle_parse_info *cp_new_demangle_parse_info (void);
+
/* The list of "maint cplus" commands. */
extern struct cmd_list_element *maint_cplus_cmd_list;