Changeset 14834 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs
- Timestamp:
- 04/10/17 00:27:31 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs
r14777 r14834 1 1 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions { 2 using System.Collections.Generic; 3 2 4 using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes; 3 5 using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter; … … 10 12 /// <typeparam name="T">Stacktype</typeparam> 11 13 public abstract class DuplicateExpression<T> : StatelessExpression { 12 protected bool Eval(I Stack<T> stack) {14 protected bool Eval(IPushStack<T> stack) { 13 15 if (stack.Count == 0) return false; 14 16 … … 17 19 return true; 18 20 } 19 20 protected bool Eval(IStack<Expression> stack) {21 if (stack.Count == 0) return false;22 23 var top = stack.Top;24 25 stack.Push(top);26 return true;27 }28 21 } 29 22 30 23 [PushExpression(StackTypes.Integer, "INTEGER.DUP")] 31 24 public class IntegerDuplicateExpression : DuplicateExpression<long> { 32 public override bool Eval(I PushInterpreter interpreter) {25 public override bool Eval(IInternalPushInterpreter interpreter) { 33 26 return this.Eval(interpreter.IntegerStack); 34 27 } … … 37 30 [PushExpression(StackTypes.Float, "FLOAT.DUP")] 38 31 public class FloatDuplicateExpression : DuplicateExpression<double> { 39 public override bool Eval(I PushInterpreter interpreter) {32 public override bool Eval(IInternalPushInterpreter interpreter) { 40 33 return this.Eval(interpreter.FloatStack); 41 34 } … … 44 37 [PushExpression(StackTypes.Boolean, "BOOLEAN.DUP")] 45 38 public class BooleanDuplicateExpression : DuplicateExpression<bool> { 46 public override bool Eval(I PushInterpreter interpreter) {39 public override bool Eval(IInternalPushInterpreter interpreter) { 47 40 return this.Eval(interpreter.BooleanStack); 48 41 } … … 51 44 [PushExpression(StackTypes.Name, "NAME.DUP")] 52 45 public class NameDuplicateExpression : DuplicateExpression<string> { 53 public override bool Eval(I PushInterpreter interpreter) {46 public override bool Eval(IInternalPushInterpreter interpreter) { 54 47 return this.Eval(interpreter.NameStack); 55 48 } … … 58 51 [PushExpression(StackTypes.Exec, "EXEC.DUP")] 59 52 public class ExecDuplicateExpression : DuplicateExpression<Expression> { 60 public override bool Eval(I PushInterpreter interpreter) {53 public override bool Eval(IInternalPushInterpreter interpreter) { 61 54 return this.Eval(interpreter.ExecStack); 62 55 } … … 65 58 [PushExpression(StackTypes.Code, "CODE.DUP")] 66 59 public class CodeDuplicateExpression : DuplicateExpression<Expression> { 67 public override bool Eval(I PushInterpreter interpreter) {60 public override bool Eval(IInternalPushInterpreter interpreter) { 68 61 return this.Eval(interpreter.CodeStack); 69 62 } 70 63 } 64 65 [PushExpression(StackTypes.IntegerVector, "INTEGER[].DUP")] 66 public class IntegerVectorDuplicateExpression : DuplicateExpression<List<long>> { 67 public override bool Eval(IInternalPushInterpreter interpreter) { 68 return this.Eval(interpreter.IntegerVectorStack); 69 } 70 } 71 71 }
Note: See TracChangeset
for help on using the changeset viewer.