Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/10/17 11:23:05 (7 years ago)
Author:
pkimmesw
Message:

#2665 Added IsNoop to Expression, Made Expressions storable, Fixed Debugger, Fixed and improved problem data and result visualisation, Added custom ErcOption view, Added problem difficulty to problem data name

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorRestExpressions.cs

    r14834 r14952  
    22  using System.Collections.Generic;
    33
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
     
    1011  /// </summary>
    1112  /// <typeparam name="T"></typeparam>
     13  [StorableClass]
    1214  public abstract class VectorRestExpression<T> : StatelessExpression {
    13     protected bool Eval(IPushStack<List<T>> vectorStack) {
    14       if (vectorStack.IsEmpty || vectorStack.Top.Count < 2)
    15         return false;
     15    protected VectorRestExpression() { }
     16    [StorableConstructor]
     17    protected VectorRestExpression(bool deserializing) : base(deserializing) { }
    1618
     19    protected bool IsNoop(IPushStack<List<T>> vectorStack) {
     20      return vectorStack.IsEmpty || vectorStack.Top.Count < 2;
     21    }
     22
     23    protected void Eval(IPushStack<List<T>> vectorStack) {
    1724      var result = vectorStack.Top.GetRange(1, vectorStack.Top.Count - 1);
    1825      vectorStack.SetTop(result);
    19       return true;
    2026    }
    2127  }
    2228
     29  [StorableClass]
    2330  [PushExpression(StackTypes.IntegerVector, "INTEGER[].REST")]
    2431  public class IntegerVectorRestExpression : VectorRestExpression<long> {
    25     public override bool Eval(IInternalPushInterpreter interpreter) {
    26       return Eval(interpreter.IntegerVectorStack);
     32    public IntegerVectorRestExpression() { }
     33    [StorableConstructor]
     34    protected IntegerVectorRestExpression(bool deserializing) : base(deserializing) { }
     35
     36    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     37      return IsNoop(interpreter.IntegerVectorStack);
     38    }
     39
     40    public override void Eval(IInternalPushInterpreter interpreter) {
     41      Eval(interpreter.IntegerVectorStack);
    2742    }
    2843  }
    2944
     45  [StorableClass]
    3046  [PushExpression(StackTypes.FloatVector, "FLOAT[].REST")]
    3147  public class FloatVectorRestExpression : VectorRestExpression<double> {
    32     public override bool Eval(IInternalPushInterpreter interpreter) {
    33       return Eval(interpreter.FloatVectorStack);
     48    public FloatVectorRestExpression() { }
     49    [StorableConstructor]
     50    protected FloatVectorRestExpression(bool deserializing) : base(deserializing) { }
     51
     52    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     53      return IsNoop(interpreter.FloatVectorStack);
     54    }
     55
     56    public override void Eval(IInternalPushInterpreter interpreter) {
     57      Eval(interpreter.FloatVectorStack);
    3458    }
    3559  }
    3660
     61  [StorableClass]
    3762  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].REST")]
    3863  public class BooleanVectorRestExpression : VectorRestExpression<bool> {
    39     public override bool Eval(IInternalPushInterpreter interpreter) {
    40       return Eval(interpreter.BooleanVectorStack);
     64    public BooleanVectorRestExpression() { }
     65    [StorableConstructor]
     66    protected BooleanVectorRestExpression(bool deserializing) : base(deserializing) { }
     67
     68    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     69      return IsNoop(interpreter.BooleanVectorStack);
     70    }
     71
     72    public override void Eval(IInternalPushInterpreter interpreter) {
     73      Eval(interpreter.BooleanVectorStack);
    4174    }
    4275  }
    4376
     77  [StorableClass]
    4478  [PushExpression(StackTypes.StringVector, "STRING[].REST")]
    4579  public class StringVectorRestExpression : VectorRestExpression<string> {
    46     public override bool Eval(IInternalPushInterpreter interpreter) {
    47       return Eval(interpreter.StringVectorStack);
     80    public StringVectorRestExpression() { }
     81    [StorableConstructor]
     82    protected StringVectorRestExpression(bool deserializing) : base(deserializing) { }
     83
     84    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     85      return IsNoop(interpreter.StringVectorStack);
     86    }
     87
     88    public override void Eval(IInternalPushInterpreter interpreter) {
     89      Eval(interpreter.StringVectorStack);
    4890    }
    4991  }
Note: See TracChangeset for help on using the changeset viewer.