Program Listing for File fixupCxxSymbolTablesToSupportAliasingSymbols.h

Program Listing for File fixupCxxSymbolTablesToSupportAliasingSymbols.h#

Return to documentation for file (src/frontend/SageIII/astPostProcessing/fixupCxxSymbolTablesToSupportAliasingSymbols.h)

#ifndef FIXUP_CXX_TO_USE_ALIASING_SYMBOLS_H
#define FIXUP_CXX_TO_USE_ALIASING_SYMBOLS_H

// DQ (4/14/2010):
void fixupAstSymbolTablesToSupportAliasedSymbols (SgNode* node);

class FixupAstSymbolTablesToSupportAliasedSymbols : public AstSimpleProcessing
   {
     public:
       // DQ (7/23/2011): Linkup namespaces so that we can build alias sysmbol from previously matching namespaces into subsequent matching namespaces.
          std::map<SgName,std::vector<SgNamespaceDefinitionStatement*> > namespaceMap;

          void visit ( SgNode* node );

       // DQ (7/12/2014): Added support to record the causalDeclaration (the declaration that is causing the SgAliasSymbol to be introduced).
       // This is important for the name qualification to be generated correctly before and after the causalDeclaration has been seen.
       // It is also helpful in knowing which SgAliassymbols to remove from the AST when a SgUsingDirective or SgUsingDeclaration is
       // removed from the AST.  This functionality has not yet been implemented.
       // This inserts an alias for each of the symbols in referencedScope into the symbol table of currentScope
       // static void injectSymbolsFromReferencedScopeIntoCurrentScope ( SgScopeStatement* referencedScope, SgScopeStatement* currentScope, SgAccessModifier::access_modifier_enum accessLevel);
       // static void injectSymbolsFromReferencedScopeIntoCurrentScope ( SgScopeStatement* referencedScope, SgScopeStatement* currentScope, SgNode* causalNode, SgAccessModifier::access_modifier_enum accessLevel);
          static void injectSymbolsFromReferencedScopeIntoCurrentScope ( SgScopeStatement* referencedScope, SgScopeStatement* currentScope, SgNode* causalNode,
                                                                         SgAccessModifier::access_modifier_enum accessLevel, bool calledFromUsingDirective );
       // DQ (1/21/2019): Added to support Cxx_tests/test2019_21.C (symbol aliasing of data member in private base class of base class of derived class).
          static bool isDefinedThroughPrivateBaseClass ( SgClassDeclaration* classDeclaration, SgSymbol* symbol );
   };

// endif for FIXUP_CXX_TO_USE_ALIASING_SYMBOLS_H
#endif