本文整理汇总了C++中SgVariableDeclaration::class_name方法的典型用法代码示例。如果您正苦于以下问题:C++ SgVariableDeclaration::class_name方法的具体用法?C++ SgVariableDeclaration::class_name怎么用?C++ SgVariableDeclaration::class_name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SgVariableDeclaration
的用法示例。
在下文中一共展示了SgVariableDeclaration::class_name方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isSgVariableDeclaration
void
FixupTemplateArguments::visit ( SgNode* node )
{
ROSE_ASSERT(node != NULL);
SgVariableDeclaration* variableDeclaration = isSgVariableDeclaration(node);
if (variableDeclaration != NULL)
{
// Check the type of the variable declaration, and any template arguments if it is a template type with template arguments.
// SgType* type = variableDeclaration->get_type();
// ROSE_ASSERT(type != NULL);
SgInitializedName* initializedName = SageInterface::getFirstInitializedName(variableDeclaration);
ROSE_ASSERT(initializedName != NULL);
SgType* type = initializedName->get_type();
ROSE_ASSERT(type != NULL);
#if 0
printf ("\n**************************************************************************** \n");
printf ("FixupTemplateArguments::visit(): variableDeclaration = %p = %s initializedName = %s \n",variableDeclaration,variableDeclaration->class_name().c_str(),initializedName->get_name().str());
printf (" --- type = %p = %s \n",type,type->class_name().c_str());
string filename = initializedName->get_file_info()->get_filename();
int linenumber = initializedName->get_file_info()->get_line();
printf (" --- filename = %s line = %d \n",filename.c_str(),linenumber);
#endif
SgScopeStatement* targetScope = variableDeclaration->get_scope();
ROSE_ASSERT(targetScope != NULL);
#if 0
printf ("In FixupTemplateArguments::visit(): targetScope for variableDeclaration = %p = %s \n",targetScope,targetScope->class_name().c_str());
#endif
// DQ (2/16/2017): Don't process code in template instantiations.
SgTemplateInstantiationDefn* templateInstantiationDefn = isSgTemplateInstantiationDefn(targetScope);
SgFunctionDeclaration* functionDeclaration = TransformationSupport::getFunctionDeclaration(targetScope);
SgTemplateInstantiationFunctionDecl* templateInstantiationFunctionDec = isSgTemplateInstantiationFunctionDecl(functionDeclaration);
SgTemplateInstantiationMemberFunctionDecl* templateInstantiationMemberFunctionDec = isSgTemplateInstantiationMemberFunctionDecl(functionDeclaration);
// if (templateInstantiationDefn == NULL)
if (templateInstantiationDefn == NULL && templateInstantiationFunctionDec == NULL && templateInstantiationMemberFunctionDec == NULL)
{
#if 1
// DQ (2/15/2017): When this is run, we cause transformations that cause ROSE to have an infinte loop.
// Since this is a second (redundant) invocaion, we likely should just not run this. But it is not
// clear if this truely fixes the problem that I am seeing.
bool result = contains_private_type(type,targetScope);
// DQ (3/25/2017): Added a trivial use to eliminate Clang warning about the return value not being used.
// But it might be that we should not run the function, however this is a complex subject from last month
// that I don't wish to revisit at the moment while being focused om eliminating warnings from Clang.
ROSE_ASSERT(result == true || result == false);
#endif
#if 0
if (result == true)
{
printf ("******** contains private type: variableDeclaration = %p = %s initializedName = %s \n",variableDeclaration,variableDeclaration->class_name().c_str(),initializedName->get_name().str());
}
#endif
}
#if 0
printf ("DONE: FixupTemplateArguments::visit(): variableDeclaration = %p = %s initializedName = %s \n",variableDeclaration,variableDeclaration->class_name().c_str(),initializedName->get_name().str());
#endif
#if 0
printf ("Exiting as a test! \n");
ROSE_ASSERT(false);
#endif
}
}
示例2: switch
void
visitorTraversal::visit (SgNode * n)
{
ROSE_ASSERT (n != NULL);
switch (n->variantT())
{
//some of SgScopeStatement
case V_SgGlobal:
case V_SgBasicBlock:
case V_SgNamespaceDefinitionStatement:
case V_SgClassDefinition:
case V_SgFunctionDefinition:
case V_SgTemplateInstantiationDefn:
{
GET_QUALIFIED_NAME(ScopeStatement)
break;
}
//Some of SgDeclarationStatement
case V_SgFunctionDeclaration:
{
GET_QUALIFIED_NAME(FunctionDeclaration)
break;
}
case V_SgClassDeclaration:
{
GET_QUALIFIED_NAME(ClassDeclaration)
break;
}
case V_SgEnumDeclaration:
{
GET_QUALIFIED_NAME(EnumDeclaration)
break;
}
case V_SgNamespaceDeclarationStatement:
{
GET_QUALIFIED_NAME(NamespaceDeclarationStatement)
break;
}
case V_SgTemplateDeclaration:
{
GET_QUALIFIED_NAME(TemplateDeclaration)
break;
}
case V_SgTemplateInstantiationDecl:
{
GET_QUALIFIED_NAME(TemplateInstantiationDecl)
break;
}
case V_SgMemberFunctionDeclaration:
{
GET_QUALIFIED_NAME(MemberFunctionDeclaration)
break;
}
case V_SgTypedefDeclaration:
{
GET_QUALIFIED_NAME(TypedefDeclaration)
break;
}
// special case here
case V_SgVariableDeclaration:
{
SgVariableDeclaration * target = isSgVariableDeclaration(n);
SgQualifiedNamePtrList & n_list = target-> get_qualifiedNameList ();
SgQualifiedNamePtrList::const_iterator iter = n_list.begin();
for (; iter!=n_list.end(); iter++)
{
SgQualifiedName * q_name = *iter;
ROSE_ASSERT (q_name != NULL);
cout<< target->class_name()<<endl;
cout<<"\tunparsed string is "<< target->unparseToString()<<endl;
}
break;
}
//Others
case V_SgInitializedName:
{
GET_QUALIFIED_NAME(InitializedName)
break;
}
case V_SgNamedType:
{
GET_QUALIFIED_NAME(NamedType)
break;
}
default:
{
break;
}
} // end switch
}