本文整理汇总了C++中CompoundStmt::child_begin方法的典型用法代码示例。如果您正苦于以下问题:C++ CompoundStmt::child_begin方法的具体用法?C++ CompoundStmt::child_begin怎么用?C++ CompoundStmt::child_begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CompoundStmt
的用法示例。
在下文中一共展示了CompoundStmt::child_begin方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unrollRecordAssigns
//---------------------------------------------------------
void unrollRecordAssigns(StmtEditor& editor, Stmt* S)
{
const RecordType *RT;
for (stmt_iterator<BinaryOperator> i = stmt_ibegin(S),
e = stmt_iend(S); i != e;)
{
BinaryOperator* BO = *i;
if (BO->getOpcode() == BO_Assign &&
(RT = BO->getType()->getAsStructureType()) != 0 &&
editor.getStatementOfExpression(BO) == BO) // ensures top level assign
{
CompoundStmt* CS = editor.ensureCompoundParent(BO);
std::vector<Stmt*> compoundStmts(CS->child_begin(), CS->child_end());
std::vector<Stmt*>::iterator insertPos =
std::find(compoundStmts.begin(), compoundStmts.end(), BO);
assert(insertPos != compoundStmts.end());
insertPos = compoundStmts.erase(insertPos);
RecordAssignUnroller unroller(editor, RT->getDecl(), BO);
compoundStmts.insert(insertPos,
unroller.compoundStmts.begin(), unroller.compoundStmts.end());
editor.replaceStmts(CS, &compoundStmts[0], compoundStmts.size());
i = stmt_ibegin(S);
}
else
{
++i;
}
}
}
示例2: removeInnerAssigns
//---------------------------------------------------------
void removeInnerAssigns(StmtEditor& editor, Stmt* S)
{
for (stmt_iterator<BinaryOperator> i = stmt_ibegin(S),
e = stmt_iend(S); i != e;)
{
if (i->getOpcode() == BO_Assign &&
isa<Expr>(editor.getParent(*i)))
{
Stmt* exprStmt = editor.getStatementOfExpression(*i);
CompoundStmt* CS = editor.ensureCompoundParent(exprStmt);
std::vector<Stmt*> compoundStmts(CS->child_begin(), CS->child_end());
std::vector<Stmt*>::iterator insertPos =
std::find(compoundStmts.begin(), compoundStmts.end(), exprStmt);
assert(insertPos != compoundStmts.end());
compoundStmts.insert(insertPos, *i);
editor.replaceStatement(*i, selectInnerAssignResult(*i));
editor.replaceStmts(CS, &compoundStmts[0], compoundStmts.size());
i = stmt_ibegin(S);
}
else
{
++i;
}
}
}