Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs @ 14733

Last change on this file since 14733 was 14733, checked in by pkimmesw, 7 years ago

#2665 Storable problem data, Renamings due to typos, Removed GP from class names

File size: 2.2 KB
Line 
1namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
2  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
3
4  using Interpreter;
5  using Stack;
6
7  /// <summary>
8  ///     Pushes the stack depth onto the INTEGER stack (thereby increasing it!).
9  /// </summary>
10  /// <typeparam name="T">Stacktype</typeparam>
11  public abstract class StackdepthExpression<T> : StatelessExpression {
12    public void Eval(IStack<T> stack, IStack<long> integerStack, bool incremental = false) {
13      var count = stack.Count;
14
15      if (incremental) count += 1;
16
17      integerStack.Push(count);
18    }
19  }
20
21  [PushExpression(StackType.Integer, "INTEGER.STACKDEPTH")]
22  public class IntegerStackdepthExpression : StackdepthExpression<long> {
23
24    public override void Eval(IPushInterpreter interpreter) {
25      Eval(interpreter.IntegerStack, interpreter.IntegerStack, true);
26    }
27  }
28
29  [PushExpression(StackType.Float, "FLOAT.STACKDEPTH")]
30  public class FloatStackdepthExpression : StackdepthExpression<double> {
31    public override void Eval(IPushInterpreter interpreter) {
32      Eval(interpreter.FloatStack, interpreter.IntegerStack);
33    }
34  }
35
36  [PushExpression(StackType.Boolean, "BOOLEAN.STACKDEPTH")]
37  public class BooleanStackdepthExpression : StackdepthExpression<bool> {
38    public override void Eval(IPushInterpreter interpreter) {
39      Eval(interpreter.BooleanStack, interpreter.IntegerStack);
40    }
41  }
42
43  [PushExpression(StackType.Name, "NAME.STACKDEPTH")]
44  public class NameStackdepthExpression : StackdepthExpression<string> {
45    public override void Eval(IPushInterpreter interpreter) {
46      Eval(interpreter.NameStack, interpreter.IntegerStack);
47    }
48  }
49
50  [PushExpression(StackType.Exec, "EXEC.STACKDEPTH")]
51  public class ExecStackdepthExpression : StackdepthExpression<Expression> {
52    public override void Eval(IPushInterpreter interpreter) {
53      Eval(interpreter.ExecStack, interpreter.IntegerStack);
54    }
55  }
56
57  [PushExpression(StackType.Code, "CODE.STACKDEPTH")]
58  public class CodeStackdepthExpression : StackdepthExpression<Expression> {
59    public override void Eval(IPushInterpreter interpreter) {
60      Eval(interpreter.CodeStack, interpreter.IntegerStack);
61    }
62  }
63}
Note: See TracBrowser for help on using the repository browser.