Changeset 14744 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs
- Timestamp:
- 03/10/17 21:42:09 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs
r14733 r14744 10 10 /// <typeparam name="T">Stacktype</typeparam> 11 11 public abstract class YankDuplicateExpression<T> : StatelessExpression { 12 public voidEval(IStack<T> stack, IStack<long> integerStack) {12 public bool Eval(IStack<T> stack, IStack<long> integerStack) { 13 13 T item; 14 if (this.TryGetItem(stack, integerStack, out item)) stack.Push(item); 14 if (!this.TryGetItem(stack, integerStack, out item)) 15 return false; 16 17 stack.Push(item); 18 return true; 15 19 } 16 20 17 public voidEval(IStack<Expression> stack, IStack<long> integerStack) {21 public bool Eval(IStack<Expression> stack, IStack<long> integerStack) { 18 22 Expression item; 19 if (this.TryGetItem(stack, integerStack, out item)) stack.Push(item); 23 if (!this.TryGetItem(stack, integerStack, out item)) 24 return false; 25 26 stack.Push(item); 27 return true; 20 28 } 21 29 22 public voidEval(IStack<long> integerStack) {30 public bool Eval(IStack<long> integerStack) { 23 31 if ((integerStack.Count < 2) || (integerStack.Top > integerStack.Count - 2) || 24 (integerStack.Top < 0)) return ;32 (integerStack.Top < 0)) return false; 25 33 26 34 var index = (int)integerStack.Pop(); … … 28 36 29 37 integerStack.Push(item); 38 return true; 30 39 } 31 40 … … 48 57 [PushExpression(StackType.Integer, "INTEGER.YANKDUP")] 49 58 public class IntegerYankDuplicateExpression : YankDuplicateExpression<long> { 50 public override voidEval(IPushInterpreter interpreter) {51 this.Eval(interpreter.IntegerStack);59 public override bool Eval(IPushInterpreter interpreter) { 60 return this.Eval(interpreter.IntegerStack); 52 61 } 53 62 } … … 55 64 [PushExpression(StackType.Float, "FLOAT.YANKDUP")] 56 65 public class FloatYankDuplicateExpression : YankDuplicateExpression<double> { 57 public override voidEval(IPushInterpreter interpreter) {58 this.Eval(interpreter.FloatStack, interpreter.IntegerStack);66 public override bool Eval(IPushInterpreter interpreter) { 67 return this.Eval(interpreter.FloatStack, interpreter.IntegerStack); 59 68 } 60 69 } … … 62 71 [PushExpression(StackType.Boolean, "BOOLEAN.YANKDUP")] 63 72 public class BooleanYankDuplicateExpression : YankDuplicateExpression<bool> { 64 public override voidEval(IPushInterpreter interpreter) {65 this.Eval(interpreter.BooleanStack, interpreter.IntegerStack);73 public override bool Eval(IPushInterpreter interpreter) { 74 return this.Eval(interpreter.BooleanStack, interpreter.IntegerStack); 66 75 } 67 76 } … … 69 78 [PushExpression(StackType.Name, "NAME.YANKDUP")] 70 79 public class NameYankDuplicateExpression : YankDuplicateExpression<string> { 71 public override voidEval(IPushInterpreter interpreter) {72 this.Eval(interpreter.NameStack, interpreter.IntegerStack);80 public override bool Eval(IPushInterpreter interpreter) { 81 return this.Eval(interpreter.NameStack, interpreter.IntegerStack); 73 82 } 74 83 } … … 76 85 [PushExpression(StackType.Exec, "EXEC.YANKDUP")] 77 86 public class ExecYankDuplicateExpression : YankDuplicateExpression<Expression> { 78 public override voidEval(IPushInterpreter interpreter) {79 this.Eval(interpreter.ExecStack, interpreter.IntegerStack);87 public override bool Eval(IPushInterpreter interpreter) { 88 return this.Eval(interpreter.ExecStack, interpreter.IntegerStack); 80 89 } 81 90 } … … 83 92 [PushExpression(StackType.Code, "CODE.YANKDUP")] 84 93 public class CodeYankDuplicateExpression : YankDuplicateExpression<Expression> { 85 public override voidEval(IPushInterpreter interpreter) {86 this.Eval(interpreter.CodeStack, interpreter.IntegerStack);94 public override bool Eval(IPushInterpreter interpreter) { 95 return this.Eval(interpreter.CodeStack, interpreter.IntegerStack); 87 96 } 88 97 }
Note: See TracChangeset
for help on using the changeset viewer.