本文整理汇总了C++中SgInitializedName::get_declptr方法的典型用法代码示例。如果您正苦于以下问题:C++ SgInitializedName::get_declptr方法的具体用法?C++ SgInitializedName::get_declptr怎么用?C++ SgInitializedName::get_declptr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SgInitializedName
的用法示例。
在下文中一共展示了SgInitializedName::get_declptr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printf
// DQ (8/23/2011): Made this a static function so that I could call it from the Java support.
void
FixupAstSymbolTablesToSupportAliasedSymbols::injectSymbolsFromReferencedScopeIntoCurrentScope ( SgScopeStatement* referencedScope, SgScopeStatement* currentScope, SgNode* causalNode, SgAccessModifier::access_modifier_enum accessLevel )
{
ROSE_ASSERT(referencedScope != NULL);
ROSE_ASSERT(currentScope != NULL);
#if ALIAS_SYMBOL_DEBUGGING || 0
printf ("In injectSymbolsFromReferencedScopeIntoCurrentScope(): referencedScope = %p = %s currentScope = %p = %s accessLevel = %d \n",referencedScope,referencedScope->class_name().c_str(),currentScope,currentScope->class_name().c_str(),accessLevel);
#endif
SgSymbolTable* symbolTable = referencedScope->get_symbol_table();
ROSE_ASSERT(symbolTable != NULL);
#if 0
printf ("AST Fixup: Building Symbol Table for %p = %s at: \n",scope,scope->sage_class_name());
referencedScope->get_file_info()->display("Symbol Table Location");
#endif
SgClassDefinition* classDefinition = isSgClassDefinition(referencedScope);
if (classDefinition != NULL)
{
// If this is a class definition, then we need to make sure that we only for alias symbols for those declarations.
#if ALIAS_SYMBOL_DEBUGGING
printf ("Injection of symbols from a class definition needs to respect access priviledge (private, protected, public) declarations \n");
#endif
}
SgSymbolTable::BaseHashType* internalTable = symbolTable->get_table();
ROSE_ASSERT(internalTable != NULL);
int counter = 0;
SgSymbolTable::hash_iterator i = internalTable->begin();
while (i != internalTable->end())
{
// DQ: removed SgName casting operator to char*
// cout << "[" << idx << "] " << (*i).first.str();
ROSE_ASSERT ( (*i).first.str() != NULL );
ROSE_ASSERT ( isSgSymbol( (*i).second ) != NULL );
#if ALIAS_SYMBOL_DEBUGGING
printf ("Symbol number: %d (pair.first (SgName) = %s) pair.second (SgSymbol) class_name() = %s \n",counter,(*i).first.str(),(*i).second->class_name().c_str());
#endif
SgName name = (*i).first;
SgSymbol* symbol = (*i).second;
ROSE_ASSERT ( symbol != NULL );
// Make sure that this is not a SgLabelSymbol, I think these should not be aliased
// (if only because I don't think that C++ support name qualification for labels).
ROSE_ASSERT ( isSgLabelSymbol(symbol) == NULL );
// DQ (6/22/2011): For now skip the handling of alias symbol from other scopes.
// ROSE_ASSERT(isSgAliasSymbol(symbol) == NULL);
if (isSgAliasSymbol(symbol) != NULL)
{
#if ALIAS_SYMBOL_DEBUGGING
printf ("WARNING: Not clear if we want to nest SgAliasSymbol inside of SgAliasSymbol \n");
#endif
// DQ (9/22/2012): We need to avoid building chains of SgAliasSymbol (to simplify the representation in the AST).
while (isSgAliasSymbol(symbol) != NULL)
{
#if ALIAS_SYMBOL_DEBUGGING
printf (" --- Iterating to root of alias: symbol = %p = %s \n",symbol,symbol->class_name().c_str());
#endif
symbol = isSgAliasSymbol(symbol)->get_alias();
ROSE_ASSERT(symbol != NULL);
}
#if ALIAS_SYMBOL_DEBUGGING
printf ("Resolved aliased symbol to root symbol: symbol = %p = %s \n",symbol,symbol->class_name().c_str());
#endif
}
SgNode* symbolBasis = symbol->get_symbol_basis();
ROSE_ASSERT(symbolBasis != NULL);
#if ALIAS_SYMBOL_DEBUGGING
printf ("symbolBasis = %p = %s \n",symbolBasis,symbolBasis->class_name().c_str());
#endif
// SgDeclarationStatement* declarationFromSymbol = symbol->get_declaration();
SgDeclarationStatement* declarationFromSymbol = isSgDeclarationStatement(symbolBasis);
SgAccessModifier::access_modifier_enum declarationAccessLevel = SgAccessModifier::e_unknown;
// ROSE_ASSERT(declarationFromSymbol != NULL);
if (declarationFromSymbol != NULL)
{
// DQ (6/22/2011): Can I, or should I, do relational operations on enum values (note that the values are designed to allow this).
declarationAccessLevel = declarationFromSymbol->get_declarationModifier().get_accessModifier().get_modifier();
}
else
{
SgInitializedName* initializedNameFromSymbol = isSgInitializedName(symbolBasis);
ROSE_ASSERT(initializedNameFromSymbol != NULL);
// DQ (9/8/2014): This fails for test2013_234, 235, 240, 241, 242, 246.C.
// ROSE_ASSERT(initializedNameFromSymbol->get_declptr() != NULL);
// declarationAccessLevel = initializedNameFromSymbol->get_declptr()->get_declarationModifier().get_accessModifier().get_modifier();
if (initializedNameFromSymbol->get_declptr() != NULL)
{
//.........这里部分代码省略.........