Changeset 14513 for branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/StackdepthExpressions.cs
- Timestamp:
- 12/20/16 22:57:11 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/StackdepthExpressions.cs
r14398 r14513 1 using HeuristicLab.Algorithms.PushGP.Interpreter; 2 using HeuristicLab.Algorithms.PushGP.Stack; 1 namespace HeuristicLab.Algorithms.PushGP.Expressions { 2 using HeuristicLab.Algorithms.PushGP.Interpreter; 3 using HeuristicLab.Algorithms.PushGP.Stack; 3 4 4 namespace HeuristicLab.Algorithms.PushGP.Expressions 5 { 6 /// <summary> 7 /// Pushes the stack depth onto the INTEGER stack (thereby increasing it!). 8 /// </summary> 9 /// <typeparam name="T">Stacktype</typeparam> 10 public abstract class StackdepthExpression<T> : StatelessExpression 11 { 12 public void Eval(IStack<T> stack, IStack<long> integerStack, bool incremental = false) 13 { 14 var count = stack.Count; 5 /// <summary> 6 /// Pushes the stack depth onto the INTEGER stack (thereby increasing it!). 7 /// </summary> 8 /// <typeparam name="T">Stacktype</typeparam> 9 public abstract class StackdepthExpression<T> : StatelessExpression { 10 public void Eval(IStack<T> stack, IStack<long> integerStack, bool incremental = false) { 11 var count = stack.Count; 15 12 16 if (incremental) 17 { 18 count += 1; 19 } 13 if (incremental) count += 1; 20 14 21 integerStack.Push(count); 22 } 15 integerStack.Push(count); 16 } 17 } 18 19 public class IntegerStackdepthExpression : StackdepthExpression<long> { 20 protected override string InitStringRepresentation() { 21 return "INTEGER.STACKDEPTH"; 23 22 } 24 23 25 public class IntegerStackdepthExpression : StackdepthExpression<long> 26 { 27 protected override string InitStringRepresentation() { return "INTEGER.STACKDEPTH"; } 24 public override void Eval(IPushGpInterpreter interpreter) { 25 this.Eval(interpreter.IntegerStack, interpreter.IntegerStack, true); 26 } 27 } 28 28 29 public override void Eval(IInterpreter interpreter) 30 { 31 Eval(interpreter.IntegerStack, interpreter.IntegerStack, true); 32 } 29 public class FloatStackdepthExpression : StackdepthExpression<double> { 30 protected override string InitStringRepresentation() { 31 return "FLOAT.STACKDEPTH"; 33 32 } 34 33 35 public class FloatStackdepthExpression : StackdepthExpression<double> 36 { 37 protected override string InitStringRepresentation() { return "FLOAT.STACKDEPTH"; } 34 public override void Eval(IPushGpInterpreter interpreter) { 35 this.Eval(interpreter.FloatStack, interpreter.IntegerStack); 36 } 37 } 38 38 39 public override void Eval(IInterpreter interpreter) 40 { 41 Eval(interpreter.FloatStack, interpreter.IntegerStack); 42 } 39 public class BooleanStackdepthExpression : StackdepthExpression<bool> { 40 protected override string InitStringRepresentation() { 41 return "BOOLEAN.STACKDEPTH"; 43 42 } 44 43 45 public class BooleanStackdepthExpression : StackdepthExpression<bool> 46 { 47 protected override string InitStringRepresentation() { return "BOOLEAN.STACKDEPTH"; } 44 public override void Eval(IPushGpInterpreter interpreter) { 45 this.Eval(interpreter.BooleanStack, interpreter.IntegerStack); 46 } 47 } 48 48 49 public override void Eval(IInterpreter interpreter) 50 { 51 Eval(interpreter.BooleanStack, interpreter.IntegerStack); 52 } 49 public class NameStackdepthExpression : StackdepthExpression<string> { 50 protected override string InitStringRepresentation() { 51 return "NAME.STACKDEPTH"; 53 52 } 54 53 55 public class NameStackdepthExpression : StackdepthExpression<string> 56 { 57 protected override string InitStringRepresentation() { return "NAME.STACKDEPTH"; } 54 public override void Eval(IPushGpInterpreter interpreter) { 55 this.Eval(interpreter.NameStack, interpreter.IntegerStack); 56 } 57 } 58 58 59 public override void Eval(IInterpreter interpreter) 60 { 61 Eval(interpreter.NameStack, interpreter.IntegerStack); 62 } 59 public class ExecStackdepthExpression : StackdepthExpression<Expression> { 60 protected override string InitStringRepresentation() { 61 return "EXEC.STACKDEPTH"; 63 62 } 64 63 65 public class ExecStackdepthExpression : StackdepthExpression<Expression> 66 { 67 protected override string InitStringRepresentation() { return "EXEC.STACKDEPTH"; } 64 public override void Eval(IPushGpInterpreter interpreter) { 65 this.Eval(interpreter.ExecStack, interpreter.IntegerStack); 66 } 67 } 68 68 69 public override void Eval(IInterpreter interpreter) 70 { 71 Eval(interpreter.ExecStack, interpreter.IntegerStack); 72 } 69 public class CodeStackdepthExpression : StackdepthExpression<Expression> { 70 protected override string InitStringRepresentation() { 71 return "CODE.STACKDEPTH"; 73 72 } 74 73 75 public class CodeStackdepthExpression : StackdepthExpression<Expression> 76 { 77 protected override string InitStringRepresentation() { return "CODE.STACKDEPTH"; } 78 79 public override void Eval(IInterpreter interpreter) 80 { 81 Eval(interpreter.CodeStack, interpreter.IntegerStack); 82 } 74 public override void Eval(IPushGpInterpreter interpreter) { 75 this.Eval(interpreter.CodeStack, interpreter.IntegerStack); 83 76 } 77 } 84 78 }
Note: See TracChangeset
for help on using the changeset viewer.