PR c++/12266
[deliverable/binutils-gdb.git] / gdb / cp-support.h
index d23f19ed0e7ba419eb2cff261a948187229f2995..51f808f80efc19657f510d2b78df33dd16bb13eb 100644 (file)
 /* 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;
This page took 0.042344 seconds and 4 git commands to generate.