本文整理汇总了C++中BinaryOperator::getLHS方法的典型用法代码示例。如果您正苦于以下问题:C++ BinaryOperator::getLHS方法的具体用法?C++ BinaryOperator::getLHS怎么用?C++ BinaryOperator::getLHS使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BinaryOperator
的用法示例。
在下文中一共展示了BinaryOperator::getLHS方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isFortranLoop
//---------------------------------------------------------
VarDecl* isFortranLoop(ForStmt* Node, const char*& errMsg)
{
// cond must be of form "x >/</!=/ expr":
BinaryOperator* condCmp = dyn_cast_or_null<BinaryOperator>(Node->getCond());
if (condCmp == 0 ||
((!condCmp->isRelationalOp()) && condCmp->getOpcode() != BO_NE))
{
errMsg = "for-cond not fortran-like (must be x rel expr)";
return 0;
}
DeclRefExpr* condVar = dyn_cast<DeclRefExpr>(stripParenCasts(condCmp->getLHS()));
if (condVar == 0 || !condVar->getType()->isIntegerType())
{
errMsg = "no integer for-init variable";
return 0;
}
VarDecl* VD = dyn_cast<VarDecl>(condVar->getDecl());
if (VD == 0)
{
errMsg = "strange unrecognized lhs in for-condition";
return 0;
}
// inc must be of form "++x/x++":
UnaryOperator* incStmt = dyn_cast_or_null<UnaryOperator>(Node->getInc());
if (incStmt == 0 || (!incStmt->isIncrementOp()))
{
errMsg = "for-inc not fortran-like (must be ++x/x++)";
return 0;
}
DeclRefExpr* incVar = dyn_cast<DeclRefExpr>(incStmt->getSubExpr());
if (incVar == 0 || incVar->getDecl() != VD)
{
errMsg = "for-inc doesn't refer to for-cond variable";
return 0;
}
return VD;
}