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/VectorReverseExpressions.cs

    r14834 r14952  
    22
    33namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
     
    1112  /// <param name="vectorStack"></param>
    1213  /// <returns></returns>
     14  [StorableClass]
    1315  public abstract class VectorReverseExpression<T> : StatelessExpression {
    14     protected bool Eval(IPushStack<List<T>> vectorStack) {
    15       if (vectorStack.IsEmpty)
    16         return false;
     16    protected VectorReverseExpression() { }
     17    [StorableConstructor]
     18    protected VectorReverseExpression(bool deserializing) : base(deserializing) { }
    1719
     20    protected bool IsNoop(IPushStack<List<T>> vectorStack) {
     21      return vectorStack.IsEmpty;
     22    }
     23
     24    protected void Eval(IPushStack<List<T>> vectorStack) {
    1825      vectorStack.Top.Reverse();
    19       return true;
    2026    }
    2127  }
    2228
     29  [StorableClass]
    2330  [PushExpression(StackTypes.IntegerVector, "INTEGER[].REVERSE")]
    2431  public class IntegerVectorReverseExpression : VectorReverseExpression<long> {
    25     public override bool Eval(IInternalPushInterpreter interpreter) {
    26       return Eval(interpreter.IntegerVectorStack);
     32    public IntegerVectorReverseExpression() { }
     33    [StorableConstructor]
     34    protected IntegerVectorReverseExpression(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[].REVERSE")]
    3147  public class FloatVectorReverseExpression : VectorReverseExpression<double> {
    32     public override bool Eval(IInternalPushInterpreter interpreter) {
    33       return Eval(interpreter.FloatVectorStack);
     48    public FloatVectorReverseExpression() { }
     49    [StorableConstructor]
     50    protected FloatVectorReverseExpression(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[].REVERSE")]
    3863  public class BooleanVectorReverseExpression : VectorReverseExpression<bool> {
    39     public override bool Eval(IInternalPushInterpreter interpreter) {
    40       return Eval(interpreter.BooleanVectorStack);
     64    public BooleanVectorReverseExpression() { }
     65    [StorableConstructor]
     66    protected BooleanVectorReverseExpression(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[].REVERSE")]
    4579  public class StringVectorReverseExpression : VectorReverseExpression<string> {
    46     public override bool Eval(IInternalPushInterpreter interpreter) {
    47       return Eval(interpreter.StringVectorStack);
     80    public StringVectorReverseExpression() { }
     81    [StorableConstructor]
     82    protected StringVectorReverseExpression(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.