sim: profile: implement --profile-file backend
[deliverable/binutils-gdb.git] / gdb / cp-support.h
index a629955eaf4d5d80fd8a2b13f3973b68850c5b36..f2f202f139722126a262cc97f32b1f8ea51c6cf5 100644 (file)
@@ -38,15 +38,31 @@ struct demangle_component;
 
 /* 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. IMPORT_DEST should always be a strict initial
-   substring of IMPORT_SRC. These form a linked list; NEXT is the next element
-   of the list.  */
+   namespace IMPORT_DEST.  These form a linked list; NEXT is the next element
+   of the list.  If the imported namespace has been aliased, ALIAS is set to a
+   string representing the alias.  Otherwise, ALIAS is NULL.
+   Eg:
+       namespace C = A::B;
+   ALIAS = "C"
+   DECLARATION is the name of the imported declaration, if this import
+   statement represents one.
+   Eg:
+       using A::x;
+   Where x is variable in namespace A.  DECLARATION is set to x.
+*/
 
 struct using_direct
 {
   char *import_src;
   char *import_dest;
+
+  char *alias;
+  char *declaration;
+
   struct using_direct *next;
+
+  /* Used during import search to temporarily mark this node as searched.  */
+  int searched;
 };
 
 
@@ -79,11 +95,10 @@ extern int cp_validate_operator (const char *input);
 extern int cp_is_anonymous (const char *namespace);
 
 extern void cp_add_using_directive (const char *dest,
-                                    const char *src);
-
-extern struct using_direct *cp_add_using (const char *dest,
-                                          const char *src,
-                                         struct using_direct *next);
+                                    const char *src,
+                                    const char *alias,
+                                   const char *declaration,
+                                    struct obstack *obstack);
 
 extern void cp_initialize_namespace (void);
 
@@ -99,16 +114,21 @@ extern void cp_set_block_scope (const struct symbol *symbol,
 extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol);
 
 extern struct symbol *cp_lookup_symbol_nonlocal (const char *name,
-                                                const char *linkage_name,
                                                 const struct block *block,
                                                 const domain_enum domain);
 
 extern struct symbol *cp_lookup_symbol_namespace (const char *namespace,
                                                  const char *name,
-                                                 const char *linkage_name,
                                                  const struct block *block,
                                                  const domain_enum domain);
 
+extern struct symbol *cp_lookup_symbol_imports (const char *scope,
+                                                const char *name,
+                                                const struct block *block,
+                                                const domain_enum domain,
+                                                const int declaration_only,
+                                                const int search_parents);
+
 extern struct type *cp_lookup_nested_type (struct type *parent_type,
                                           const char *nested_name,
                                           const struct block *block);
This page took 0.02412 seconds and 4 git commands to generate.