diff options
Diffstat (limited to 'gdb/cp-support.h')
-rw-r--r-- | gdb/cp-support.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gdb/cp-support.h b/gdb/cp-support.h index 52d4cb7..d23f19e 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -27,6 +27,8 @@ #include "symtab.h" +#include "vec.h" + /* Opaque declarations. */ struct symbol; @@ -60,6 +62,7 @@ struct demangle_component; import_dest = local scope of the import statement even such as "" alias = NULL declaration = NULL + excludes = NULL C++: using A::x; Fortran: use A, only: x @@ -67,14 +70,32 @@ struct demangle_component; import_dest = local scope of the import statement even such as "" alias = NULL declaration = "x" + excludes = NULL The declaration will get imported as import_dest::x. + C++ has no way to import all names except those listed ones. + Fortran: use A, localname => x + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = "localname" + declaration = "x" + excludes = NULL + + + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = NULL + declaration = NULL + excludes = ["x"] + All the entries of A get imported except of "x". "x" gets imported as + "localname". "x" is not defined as a local name by this statement. + C++: namespace LOCALNS = A; Fortran has no way to address non-local namespace/module. import_src = "A" import_dest = local scope of the import statement even such as "" alias = "LOCALNS" declaration = NULL + excludes = NULL The namespace will get imported as the import_dest::LOCALNS namespace. @@ -85,6 +106,7 @@ struct demangle_component; import_dest = local scope of the import statement even such as "" alias = "localname" declaration = "x" + excludes = NULL The declaration will get imported as localname or `import_dest`localname. */ @@ -101,6 +123,10 @@ struct using_direct /* Used during import search to temporarily mark this node as searched. */ int searched; + + /* USING_DIRECT has variable allocation size according to the number of + EXCLUDES entries, the last entry is NULL. */ + const char *excludes[1]; }; @@ -136,10 +162,13 @@ extern int cp_validate_operator (const char *input); extern int cp_is_anonymous (const char *namespace); +DEF_VEC_P (const_char_ptr); + extern void cp_add_using_directive (const char *dest, const char *src, const char *alias, const char *declaration, + VEC (const_char_ptr) *excludes, struct obstack *obstack); extern void cp_initialize_namespace (void); |