public override OpCode DeepClone(OpCode.VisitTerminalsDelegate copyTerm) { OpCodeTerminal term = (OpCodeTerminal)MemberwiseClone(); copyTerm(term); return(term); }
/// <summary> /// Visit all the terminals in this expression /// </summary> public virtual void VisitTerminals(OpCode.VisitTerminalsDelegate visit) { if (Operands != null) { foreach (OpCode op in Operands) { op.VisitTerminals(visit); } } }
/// <summary> /// Clone an expression. Calls the delegate when a /// terminal expression is encountered. The delegate /// may replace the old expression in the copy. /// </summary> public virtual OpCode DeepClone(OpCode.VisitTerminalsDelegate copyTerm) { OpCode newOp = (OpCode)MemberwiseClone(); if (Operands != null) { newOp.Operands = new List <OpCode>(Operands.Count); foreach (OpCode op in Operands) { newOp.Operands.Add(op.DeepClone(copyTerm)); } } return(newOp); }
public override void VisitTerminals(OpCode.VisitTerminalsDelegate visit) { visit(this); }