本文整理汇总了C++中SgType::sage_class_name方法的典型用法代码示例。如果您正苦于以下问题:C++ SgType::sage_class_name方法的具体用法?C++ SgType::sage_class_name怎么用?C++ SgType::sage_class_name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SgType
的用法示例。
在下文中一共展示了SgType::sage_class_name方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printf
void
TransformationSupport::getTransformationOptions ( SgNode* astNode, list<OptionDeclaration> & generatedList, string identifingTypeName )
{
// This function searches for variables of type ScopeBasedTransformationOptimization. Variables
// of type ScopeBasedTransformationOptimization are used to communicate optimizations from the
// application to the preprocessor. If called from a project or file object it traverses down to
// the global scope of the file and searches only the global scope, if called from and other
// location within the AST it searches the current scope and then traverses the parent nodes to
// find all enclosing scopes until in reaches the global scope. At each scope it searches for
// variables of type ScopeBasedTransformationOptimization.
// printf ("######################### START OF TRANSFORMATION OPTION QUERY ######################## \n");
ROSE_ASSERT (astNode != NULL);
ROSE_ASSERT (identifingTypeName.c_str() != NULL);
#if 0
printf ("In getTransformationOptions(): astNode->sage_class_name() = %s generatedList.size() = %d \n",
astNode->sage_class_name(),generatedList.size());
SgLocatedNode* locatedNode = isSgLocatedNode(astNode);
if (locatedNode != NULL)
{
printf (" locatedNode->get_file_info()->get_filename() = %s \n",locatedNode->get_file_info()->get_filename());
printf (" locatedNode->get_file_info()->get_line() = %d \n",locatedNode->get_file_info()->get_line());
}
#endif
switch (astNode->variant())
{
case ProjectTag:
{
SgProject* project = isSgProject(astNode);
ROSE_ASSERT (project != NULL);
//! Loop through all the files in the project and call the mainTransform function for each file
int i = 0;
for (i=0; i < project->numberOfFiles(); i++)
{
SgFile* file = &(project->get_file(i));
// printf ("Calling Query::traverse(SgFile,QueryFunctionType,QueryAssemblyFunctionType) \n");
getTransformationOptions ( file, generatedList, identifingTypeName );
}
break;
}
case SourceFileTag:
{
SgSourceFile* file = isSgSourceFile(astNode);
ROSE_ASSERT (file != NULL);
SgGlobal* globalScope = file->get_globalScope();
ROSE_ASSERT (globalScope != NULL);
ROSE_ASSERT (isSgGlobal(globalScope) != NULL);
getTransformationOptions ( globalScope, generatedList, identifingTypeName );
break;
}
// Global Scope
case GLOBAL_STMT:
{
SgGlobal* globalScope = isSgGlobal(astNode);
ROSE_ASSERT (globalScope != NULL);
SgSymbolTable* symbolTable = globalScope->get_symbol_table();
ROSE_ASSERT (symbolTable != NULL);
getTransformationOptions ( symbolTable, generatedList, identifingTypeName );
// printf ("Processed global scope, exiting .. \n");
// ROSE_ABORT();
break;
}
case SymbolTableTag:
{
// List the variable in each scope
// printf ("List all the variables in this symbol table! \n");
SgSymbolTable* symbolTable = isSgSymbolTable(astNode);
ROSE_ASSERT (symbolTable != NULL);
bool foundTransformationOptimizationSpecifier = false;
// printf ("Now print out the information in the symbol table for this scope: \n");
// symbolTable->print();
#if 0
// I don't know when a SymbolTable is given a name!
printf ("SymbolTable has a name = %s \n",
(symbolTable->get_no_name()) ? "NO: it has no name" : "YES: it does have a name");
if (!symbolTable->get_no_name())
printf ("SymbolTable name = %s \n",symbolTable->get_name().str());
else
ROSE_ASSERT (symbolTable->get_name().str() == NULL);
#endif
if (symbolTable->get_table() != NULL)
{
SgSymbolTable::hash_iterator i = symbolTable->get_table()->begin();
int counter = 0;
while (i != symbolTable->get_table()->end())
{
//.........这里部分代码省略.........
示例2: isSgType
//.........这里部分代码省略.........
case V_SgNamedType:
{
SgNamedType *sageNamedType = isSgNamedType (type);
ROSE_ASSERT (sageNamedType != NULL);
typeName = sageNamedType->get_name ().str ();
break;
}
case V_SgClassType:
{
SgClassType *sageClassType = isSgClassType (type);
ROSE_ASSERT (sageClassType != NULL);
typeName = sageClassType->get_name ().str ();
break;
}
case V_SgTypedefType:
{
SgTypedefType *sageTypedefType = isSgTypedefType (type);
ROSE_ASSERT (sageTypedefType != NULL);
typeName = sageTypedefType->get_name ().str ();
break;
}
case V_SgPointerMemberType:
{
SgPointerMemberType *pointerMemberType =
isSgPointerMemberType (type);
ROSE_ASSERT (pointerMemberType != NULL);
SgClassType *classType =
isSgClassType(pointerMemberType->get_class_type()->stripTypedefsAndModifiers());
ROSE_ASSERT (classType != NULL);
SgClassDeclaration *classDeclaration =
isSgClassDeclaration(classType->get_declaration());
ROSE_ASSERT (classDeclaration != NULL);
typeName = classDeclaration->get_name ().str ();
break;
}
case V_SgArrayType:
{
ROSE_ASSERT (isSgArrayType (type)->get_base_type () != NULL);
Rose_STL_Container< string > subTypeNames =
queryNameTypeName (isSgArrayType (type)->get_base_type ());
typedef Rose_STL_Container< string >::iterator typeIterator;
//This iterator will only contain one name
for (typeIterator i = subTypeNames.begin ();
i != subTypeNames.end (); ++i)
{
string e = *i;
typeName = e;
break;
}
break;
}
case V_SgFunctionType:
{
SgFunctionType *functionType = isSgFunctionType (type);
ROSE_ASSERT (functionType != NULL);
typeName = functionType->get_mangled_type ().str ();
break;
}
case V_SgMemberFunctionType:
{
SgMemberFunctionType *memberFunctionType =
isSgMemberFunctionType (type);
ROSE_ASSERT (memberFunctionType != NULL);
SgClassType *classType =
isSgClassType(memberFunctionType->get_class_type()->stripTypedefsAndModifiers());
ROSE_ASSERT (classType != NULL);
SgClassDeclaration *classDeclaration =
isSgClassDeclaration(classType->get_declaration());
ROSE_ASSERT (classDeclaration != NULL);
typeName = classDeclaration->get_name ().str ();
break;
}
case V_SgTypeWchar:
typeName = "wchar";
break;
case V_SgTypeDefault:
typeName = "default";
break;
default:
printf
("default reached in switch within TransformationSupport::getTypeName type->sage_class_name() = %s variant = %d \n",
type->sage_class_name (), type->variant ());
ROSE_ABORT ();
break;
}
// Fix for purify problem report
// typeName = ROSE::stringDuplicate(typeName);
if (typeName.size () > 0)
returnList.push_back (typeName);
//ROSE_ASSERT(typeName.c_str() != NULL);
// return typeName;
return returnList;
//return ROSE::stringDuplicate(typeName.c_str());
}