本文整理汇总了C++中AstAttributeMechanism::size方法的典型用法代码示例。如果您正苦于以下问题:C++ AstAttributeMechanism::size方法的具体用法?C++ AstAttributeMechanism::size怎么用?C++ AstAttributeMechanism::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AstAttributeMechanism
的用法示例。
在下文中一共展示了AstAttributeMechanism::size方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sourcePositionInformation
// To improve the default output add additional information here
// Note you need to add "\\n" for newline
string
AstDOTGeneration::additionalNodeInfo(SgNode* node)
{
ostringstream ss;
ss << "\\n";
// print number of max successors (= container size)
AstSuccessorsSelectors::SuccessorsContainer c;
AstSuccessorsSelectors::selectDefaultSuccessors(node,c);
ss << c.size() << "\\n";
// add memory location of node to dot output
ss << node << "\\n";
// DQ (8/31/2013): Added more information about the IR node to the dot graph.
ss << sourcePositionInformation(node);
// DQ (9/19/2013): Added more information about the IR node to the dot graph (comments and C preprocessor directive information).
ss << commentAndCppInformation(node);
// DQ (7/4/2008): Added support for output of information about attributes
AstAttributeMechanism* astAttributeContainer = node->get_attributeMechanism();
if (astAttributeContainer != NULL)
{
ss << "Attribute list (size=" << astAttributeContainer->size() << "):" << "\\n";
for (AstAttributeMechanism::iterator i = astAttributeContainer->begin(); i != astAttributeContainer->end(); i++)
{
// pair<std::string,AstAttribute*>
AstAttribute* attribute = i->second;
ROSE_ASSERT(attribute != NULL);
// Note cast to void*
std::string name = i->first;
std::string label = name + " : " + attribute->toString();
ss << label << "\\n";
}
ss << "\\n";
ss << "\\n";
}
return ss.str();
}
示例2: return_synthesizedAttribute
Detection_SynthesizedAttribute
DetectionTraversal::evaluateSynthesizedAttribute (SgNode* astNode, Detection_InheritedAttribute inheritedAttribute, SubTreeSynthesizedAttributes synthesizedAttributeList )
{
ROSE_ASSERT(astNode != NULL);
Detection_SynthesizedAttribute return_synthesizedAttribute(astNode);
#if 1
printf ("In evaluateSynthesizedAttribute(): astNode = %p = %s synthesizedAttributeList.size() = %zu dslChildren.size() = %zu \n",
astNode,astNode->class_name().c_str(),synthesizedAttributeList.size(),return_synthesizedAttribute.dslChildren.size());
#endif
// At each IR node and across all children, accumulate the dslChildren (child nodes for each of the DSL AST nodes).
for (SubTreeSynthesizedAttributes::iterator i = synthesizedAttributeList.begin(); i != synthesizedAttributeList.end(); i++)
{
SgNode* childNode = (*i).node;
// ROSE_ASSERT(childNode != NULL);
if (childNode != NULL)
{
#if 0
printf ("Identified child node in evaluateSynthesizedAttribute(): childNode = %p = %s \n",childNode,childNode->class_name().c_str());
#endif
// Insert each list from the child into the accumulated list in the current Synthesized Attribute.
return_synthesizedAttribute.dslChildren.insert(return_synthesizedAttribute.dslChildren.end(),i->dslChildren.begin(),i->dslChildren.end());
#if 0
printf (" --- copying i->dslChildren.size() = %zu into return_synthesizedAttribute.dslChildren.size() = %zu \n",i->dslChildren.size(),return_synthesizedAttribute.dslChildren.size());
#endif
if (return_synthesizedAttribute.dslChildren.empty() == false)
{
#if 0
printf ("In evaluateSynthesizedAttribute(): dslChildren.size() = %zu \n",return_synthesizedAttribute.dslChildren.size());
#endif
}
}
else
{
#if 1
printf ("childNode == NULL \n");
#endif
}
}
// Recognition of other control statements (e.g. for loops for the stencil evaluation) or expression/statement abstractions (e.g. function calls)
// Note: DSL specific control abstractions might be recognised as loops containing DSL abstractions and having constant evaluatable base and bounds.
// For any DSL specific AST nodes (C++ AST nodes containing a DSL_Attribute), initialize the pointers to children of the DSL IR node.
AstAttributeMechanism* astAttributeContainer = astNode->get_attributeMechanism();
if (astAttributeContainer != NULL)
{
#if 1
printf ("In evaluateSynthesizedAttribute(): found a attribute on astNode = %p = %s \n",astNode,astNode->class_name().c_str());
#endif
// I think there should only be one DSL attribute, in the future we can support more on a single IR node.
if (astAttributeContainer->size() != 1)
{
printf ("WARNING: astAttributeContainer->size() != 1: astAttributeContainer->size() = %zu \n",astAttributeContainer->size());
}
#if 1
// DQ: Allow this for the moment while testing.
ROSE_ASSERT(astAttributeContainer->size() == 1);
#endif
// Loop over all the attributes at this IR node
// Pei-Hung (12/22/15): THe ASTAttributeMechanmsim is changed and has to use new API
// for (AstAttributeMechanism::iterator i = astAttributeContainer->begin(); i != astAttributeContainer->end(); i++)
BOOST_FOREACH (const std::string &attributeName, astAttributeContainer->getAttributeIdentifiers())
{
AstAttribute* attribute = astNode->getAttribute(attributeName);
ROSE_ASSERT(attribute != NULL);
#if 1
// DSL_Attribute* dslAstAttribute = dynamic_cast<DSL_Attribute*>(attribute);
dsl_attribute* dslAstAttribute = dynamic_cast<dsl_attribute*>(attribute);
ROSE_ASSERT(dslAstAttribute != NULL);
#if 1
printf ("Identified dslAstAttribute in evaluateSynthesizedAttribute(): astNode = %p = %s \n",astNode,astNode->class_name().c_str());
printf (" --- return_synthesizedAttribute.dslChildren.size() = %zu \n",return_synthesizedAttribute.dslChildren.size());
#endif
// Copy the dsl child data to the dsl attribute.
dslAstAttribute->currentNode = astNode;
dslAstAttribute->dslChildren = return_synthesizedAttribute.dslChildren;
#endif
}
// Clear the dsl attributes becasue we the only collect dsl child attributes at dsl attributed IR nodes and don't pass then further up the tree.
return_synthesizedAttribute.dslChildren.clear();
// Add the current node since it has an attribute.
return_synthesizedAttribute.dslChildren.push_back(astNode);
#if 0
printf ("Exiting as a test! \n");
ROSE_ASSERT(false);
#endif
}