当前位置: 首页>>代码示例>>C++>>正文


C++ BinaryOperator::isCompoundAssignmentOp方法代码示例

本文整理汇总了C++中BinaryOperator::isCompoundAssignmentOp方法的典型用法代码示例。如果您正苦于以下问题:C++ BinaryOperator::isCompoundAssignmentOp方法的具体用法?C++ BinaryOperator::isCompoundAssignmentOp怎么用?C++ BinaryOperator::isCompoundAssignmentOp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BinaryOperator的用法示例。


在下文中一共展示了BinaryOperator::isCompoundAssignmentOp方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: handleSubExpr

void AssignExprStatementVisitor::handleSubExpr(Expr *E)
{
  if (!E)
    return;

  BinaryOperator *BinOp = dyn_cast<BinaryOperator>(E->IgnoreParenCasts());
  if (!BinOp) {
    TraverseStmt(E);
    return;
  }

  if (!BinOp->isAssignmentOp() && !BinOp->isCompoundAssignmentOp()) {
    TraverseStmt(E);
    return;
  }

  TransAssert(std::find(ConsumerInstance->ValidAssignExprs.begin(), 
                        ConsumerInstance->ValidAssignExprs.end(), BinOp)
              == ConsumerInstance->ValidAssignExprs.end());

  ConsumerInstance->ValidAssignExprs.push_back(BinOp);
  ConsumerInstance->ValidInstanceNum++;

  if (ConsumerInstance->ValidInstanceNum != 
      ConsumerInstance->TransformationCounter)
    return;

  ConsumerInstance->TheFuncDecl = CurrentFuncDecl;
  ConsumerInstance->TheStmt = CurrentStmt;
  ConsumerInstance->TheAssignExpr = BinOp;
  ConsumerInstance->NeedParen = NeedParen;
}
开发者ID:JIghtuse,项目名称:creduce,代码行数:32,代码来源:LiftAssignmentExpr.cpp

示例2: HandleBinaryOperator

void FakeDirectiveHandler::HandleBinaryOperator(DeclRefExpr * Original,
                                            Expr * Var,
                                            Expr * Next,
                                            vector<LocalStmtPair> WritePairs,
                                            bool ActualVar,
                                            string Struct) {

  BinaryOperator * BO = cast<BinaryOperator>(Next);
  
  CompilerInstance &CI = FullDirectives->GetCI(Original->getLocStart());

  // a = b;
  if (BO->isAssignmentOp()) {
  
    // Var = b;
    if (IsWrite(BO, Var, CI)) {
      InsertAccess(Var, Original, true, WritePairs, ActualVar, Struct);
      
      // Var += b;
      if (BO->isCompoundAssignmentOp()) {
        InsertAccess(Var, Original, false, WritePairs, ActualVar, Struct);
      }
      
    // a = Var;
    } else {
      InsertAccess(Var, Original, false, WritePairs, ActualVar, Struct);
    }

    ActualVar = false;

  // a + b;
  } else {
    InsertAccess(Var, Original, false, WritePairs, ActualVar, Struct);
    ActualVar = false;
  }
  
  if (IsPointerType(Var) && IsPointerType(BO)) {
    WalkUpExpr(Original, BO, WritePairs, ActualVar, Struct);
  }
  
}
开发者ID:divot,项目名称:SpecCodeConv,代码行数:41,代码来源:FakeDirectiveHandler.cpp


注:本文中的BinaryOperator::isCompoundAssignmentOp方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。