void ASTExporter::VisitCXXNewExpr()

in facebook-clang-plugins/libtooling/ASTExporter.h [4169:4198]


void ASTExporter<ATDWriter>::VisitCXXNewExpr(const CXXNewExpr *Node) {
  VisitExpr(Node);

  bool IsArray = Node->isArray();
  bool HasArraySize = Node->getArraySize().hasValue();
  bool HasInitializer = Node->hasInitializer();
  unsigned PlacementArgs = Node->getNumPlacementArgs();
  bool HasPlacementArgs = PlacementArgs > 0;
  ObjectScope Scope(
      OF, 0 + IsArray + HasArraySize + HasInitializer + HasPlacementArgs);

  //  ?should_null_check : bool;
  // OF.emitFlag("should_null_check", Node->shouldNullCheckAllocation());
  OF.emitFlag("is_array", IsArray);
  if (HasArraySize) {
    OF.emitTag("array_size_expr");
    dumpPointer(Node->getArraySize().getValue());
  }
  if (HasInitializer) {
    OF.emitTag("initializer_expr");
    dumpPointer(Node->getInitializer());
  }
  if (HasPlacementArgs) {
    OF.emitTag("placement_args");
    ArrayScope aScope(OF, PlacementArgs);
    for (auto arg : Node->placement_arguments()) {
      dumpPointer(arg);
    }
  }
}