コード例 #1
0
        public override OpCode DeepClone(OpCode.VisitTerminalsDelegate copyTerm)
        {
            OpCodeTerminal term = (OpCodeTerminal)MemberwiseClone();

            copyTerm(term);
            return(term);
        }
コード例 #2
0
 /// <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);
         }
     }
 }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 public override void VisitTerminals(OpCode.VisitTerminalsDelegate visit)
 {
     visit(this);
 }