private static Op rebuild(Op2 subOp, List<Op> ops) { Op chain = OpTable.unit(); for (Op op : ops) { chain = subOp.copy(chain, op); } return chain; }
private static Op rebuild(Op2 subOp, List<Op> ops) { Op chain = OpTable.unit(); for (Op op : ops) { chain = subOp.copy(chain, op); } return chain; }
private static Op rebuild(Op2 subOp, List<Op> ops) { Op chain = OpTable.unit(); for (Op op : ops) { chain = subOp.copy(chain, op); } return chain; }
private Op xform(Op2 op, Op left, Op right) { if ( ! alwaysCopy && op.getLeft() == left && op.getRight() == right ) return op ; return op.copy(left, right) ; }
public static Op copy(Op op, List<Op> subOps) { Op result; int l = subOps.size(); if (op instanceof Op0) { //Assert.state(l == 0); Op0 o = (Op0) op; result = o.copy(); } else if (op instanceof Op1) { //Assert.state(l == 1); Op1 o = (Op1) op; result = o.copy(subOps.get(0)); } else if (op instanceof Op2) { //Assert.state(l == 2); Op2 o = (Op2) op; result = o.copy(subOps.get(0), subOps.get(1)); } else if (op instanceof OpN) { OpN o = (OpN) op; result = o.copy(subOps); } else if (op instanceof OpCopyable) { OpCopyable o = (OpCopyable) op; result = o.copy(subOps); } else { throw new RuntimeException("Should not happen: Could not copy: " + op); } return result; }
public static Op copy(Op op, List<Op> subOps) { Op result; int l = subOps.size(); if (op instanceof Op0) { //Assert.state(l == 0); Op0 o = (Op0) op; result = o.copy(); } else if (op instanceof Op1) { //Assert.state(l == 1); Op1 o = (Op1) op; result = o.copy(subOps.get(0)); } else if (op instanceof Op2) { //Assert.state(l == 2); Op2 o = (Op2) op; result = o.copy(subOps.get(0), subOps.get(1)); } else if (op instanceof OpN) { OpN o = (OpN) op; result = o.copy(subOps); } else if (op instanceof OpCopyable) { OpCopyable o = (OpCopyable) op; result = o.copy(subOps); } else { throw new RuntimeException("Should not happen: Could not copy: " + op); } return result; }