@Override protected void visitN(OpN op) { List<Op> x = new ArrayList<Op>(op.size()) ; for ( Iterator<Op> iter = op.iterator() ; iter.hasNext() ; ) { Op sub = iter.next() ; Op r = pop() ; // Skip nulls. if ( r != null ) // Add in reverse. x.add(0, r) ; } Op opX = op.apply(transform, x) ; push(opX) ; }
@Override protected void visitN(OpN op) { List<Op> x = new ArrayList<Op>(op.size()) ; for ( Iterator<Op> iter = op.iterator() ; iter.hasNext() ; ) { Op sub = iter.next() ; Op r = pop() ; // Skip nulls. if ( r != null ) // Add in reverse. x.add(0, r) ; } Op opX = op.apply(transform, x) ; push(opX) ; }
@Override protected void visitLeftJoin(OpLeftJoin op) { Op left = null ; Op right = null ; // Must do right-left because the pushes onto the stack were left-right. if ( op.getRight() != null ) right = pop() ; if ( op.getLeft() != null ) left = pop() ; ExprList exprs = op.getExprs() ; ExprList exprs2 = process(exprs, exprTransform) ; OpLeftJoin x = op ; if ( exprs != exprs2 ) x = OpLeftJoin.createLeftJoin(left, right, exprs2) ; Op opX = x.apply(transform, left, right) ; push(opX) ; }
@Override protected void visitFilter(OpFilter opFilter) { Op subOp = null ; if ( opFilter.getSubOp() != null ) subOp = pop() ; boolean changed = ( opFilter.getSubOp() != subOp ) ; ExprList ex = opFilter.getExprs() ; ExprList ex2 = process(ex, exprTransform) ; OpFilter f = opFilter ; if ( ex != ex2 ) f = (OpFilter)OpFilter.filter(ex2, subOp) ; push(f.apply(transform, subOp)) ; }
@Override protected void visit2(Op2 op) { Op left = null ; Op right = null ; // Must do right-left because the pushes onto the stack were left-right. if ( op.getRight() != null ) right = pop() ; if ( op.getLeft() != null ) left = pop() ; Op opX = op.apply(transform, left, right) ; push(opX) ; }
@Override protected void visit2(Op2 op) { Op left = null ; Op right = null ; // Must do right-left because the pushes onto the stack were left-right. if ( op.getRight() != null ) right = pop() ; if ( op.getLeft() != null ) left = pop() ; Op opX = op.apply(transform, left, right) ; push(opX) ; }
@Override protected void visit1(Op1 op) { Op subOp = null ; if ( op.getSubOp() != null ) subOp = pop() ; push(op.apply(transform, subOp)) ; }
@Override protected void visit0(Op0 op) { push(op.apply(transform)) ; }
@Override protected void visitExt(OpExt op) { push(transform.transform(op)) ; } }
@Override protected void visitExt(OpExt op) { push(transform.transform(op)) ; } }
@Override protected void visit1(Op1 op) { Op subOp = null ; if ( op.getSubOp() != null ) subOp = pop() ; push(op.apply(transform, subOp)) ; }
@Override protected void visit0(Op0 op) { push(op.apply(transform)) ; }