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

    r14875 r14952  
    22  using System.Collections.Generic;
    33
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56
     
    1112  /// </summary>
    1213  /// <typeparam name="T">Stacktype</typeparam>
     14  [StorableClass]
    1315  public abstract class FlushExpression<T> : StatelessExpression {
    14     public bool Eval(IPushStack<T> stack) {
     16    protected FlushExpression() { }
     17    [StorableConstructor]
     18    protected FlushExpression(bool deserializing) : base(deserializing) { }
     19
     20    protected void Eval(IPushStack<T> stack) {
    1521      stack.Clear();
    16       return true;
    1722    }
    1823  }
    1924
    2025  [PushExpression(StackTypes.Integer, "INTEGER.FLUSH")]
     26  [StorableClass]
    2127  public class IntegerFlushExpression : FlushExpression<long> {
    22     public override bool Eval(IInternalPushInterpreter interpreter) {
    23       return Eval(interpreter.IntegerStack);
     28    public IntegerFlushExpression() { }
     29    [StorableConstructor]
     30    protected IntegerFlushExpression(bool deserializing) : base(deserializing) { }
     31
     32    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     33      return interpreter.IntegerStack.IsEmpty;
     34    }
     35
     36    public override void Eval(IInternalPushInterpreter interpreter) {
     37      Eval(interpreter.IntegerStack);
    2438    }
    2539  }
    2640
    2741  [PushExpression(StackTypes.Float, "FLOAT.FLUSH")]
     42  [StorableClass]
    2843  public class FloatFlushExpression : FlushExpression<double> {
    29     public override bool Eval(IInternalPushInterpreter interpreter) {
    30       return Eval(interpreter.FloatStack);
     44    public FloatFlushExpression() { }
     45    [StorableConstructor]
     46    protected FloatFlushExpression(bool deserializing) : base(deserializing) { }
     47
     48    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     49      return interpreter.FloatStack.IsEmpty;
     50    }
     51
     52    public override void Eval(IInternalPushInterpreter interpreter) {
     53      Eval(interpreter.FloatStack);
    3154    }
    3255  }
    3356
    3457  [PushExpression(StackTypes.Boolean, "BOOLEAN.FLUSH")]
     58  [StorableClass]
    3559  public class BooleanFlushExpression : FlushExpression<bool> {
    36     public override bool Eval(IInternalPushInterpreter interpreter) {
    37       return Eval(interpreter.BooleanStack);
     60    public BooleanFlushExpression() { }
     61    [StorableConstructor]
     62    protected BooleanFlushExpression(bool deserializing) : base(deserializing) { }
     63
     64    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     65      return interpreter.BooleanStack.IsEmpty;
     66    }
     67
     68    public override void Eval(IInternalPushInterpreter interpreter) {
     69      Eval(interpreter.BooleanStack);
    3870    }
    3971  }
    4072
    4173  [PushExpression(StackTypes.Name, "NAME.FLUSH")]
     74  [StorableClass]
    4275  public class NameFlushExpression : FlushExpression<string> {
    43     public override bool Eval(IInternalPushInterpreter interpreter) {
    44       return Eval(interpreter.NameStack);
     76    public NameFlushExpression() { }
     77    [StorableConstructor]
     78    protected NameFlushExpression(bool deserializing) : base(deserializing) { }
     79
     80    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     81      return interpreter.NameStack.IsEmpty;
     82    }
     83
     84    public override void Eval(IInternalPushInterpreter interpreter) {
     85      Eval(interpreter.NameStack);
    4586    }
    4687  }
    4788
    4889  [PushExpression(StackTypes.Exec, "EXEC.FLUSH")]
     90  [StorableClass]
    4991  public class ExecFlushExpression : FlushExpression<Expression> {
    50     public override bool Eval(IInternalPushInterpreter interpreter) {
    51       return Eval(interpreter.ExecStack);
     92    public ExecFlushExpression() { }
     93    [StorableConstructor]
     94    protected ExecFlushExpression(bool deserializing) : base(deserializing) { }
     95
     96    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     97      return interpreter.ExecStack.IsEmpty;
     98    }
     99
     100    public override void Eval(IInternalPushInterpreter interpreter) {
     101      Eval(interpreter.ExecStack);
    52102    }
    53103  }
    54104
    55105  [PushExpression(StackTypes.Code, "CODE.FLUSH")]
     106  [StorableClass]
    56107  public class CodeFlushExpression : FlushExpression<Expression> {
    57     public override bool Eval(IInternalPushInterpreter interpreter) {
    58       return Eval(interpreter.CodeStack);
     108    public CodeFlushExpression() { }
     109    [StorableConstructor]
     110    protected CodeFlushExpression(bool deserializing) : base(deserializing) { }
     111
     112    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     113      return interpreter.CodeStack.IsEmpty;
     114    }
     115
     116    public override void Eval(IInternalPushInterpreter interpreter) {
     117      Eval(interpreter.CodeStack);
    59118    }
    60119  }
    61120
    62121  [PushExpression(StackTypes.Char, "CHAR.FLUSH")]
     122  [StorableClass]
    63123  public class CharFlushExpression : FlushExpression<char> {
    64     public override bool Eval(IInternalPushInterpreter interpreter) {
    65       return Eval(interpreter.CharStack);
     124    public CharFlushExpression() { }
     125    [StorableConstructor]
     126    protected CharFlushExpression(bool deserializing) : base(deserializing) { }
     127
     128    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     129      return interpreter.CharStack.IsEmpty;
     130    }
     131
     132    public override void Eval(IInternalPushInterpreter interpreter) {
     133      Eval(interpreter.CharStack);
    66134    }
    67135  }
    68136
    69137  [PushExpression(StackTypes.String, "STRING.FLUSH")]
     138  [StorableClass]
    70139  public class StringFlushExpression : FlushExpression<string> {
    71     public override bool Eval(IInternalPushInterpreter interpreter) {
    72       return Eval(interpreter.StringStack);
     140    public StringFlushExpression() { }
     141    [StorableConstructor]
     142    protected StringFlushExpression(bool deserializing) : base(deserializing) { }
     143
     144    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     145      return interpreter.StringStack.IsEmpty;
     146    }
     147
     148    public override void Eval(IInternalPushInterpreter interpreter) {
     149      Eval(interpreter.StringStack);
    73150    }
    74151  }
    75152
    76153  [PushExpression(StackTypes.IntegerVector, "INTEGER[].FLUSH")]
     154  [StorableClass]
    77155  public class IntegerVectorFlushExpression : FlushExpression<List<long>> {
    78     public override bool Eval(IInternalPushInterpreter interpreter) {
    79       return Eval(interpreter.IntegerVectorStack);
     156    public IntegerVectorFlushExpression() { }
     157    [StorableConstructor]
     158    protected IntegerVectorFlushExpression(bool deserializing) : base(deserializing) { }
     159
     160    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     161      return interpreter.IntegerVectorStack.IsEmpty;
     162    }
     163
     164    public override void Eval(IInternalPushInterpreter interpreter) {
     165      Eval(interpreter.IntegerVectorStack);
    80166    }
    81167  }
    82168
    83169  [PushExpression(StackTypes.FloatVector, "FLOAT[].FLUSH")]
     170  [StorableClass]
    84171  public class FloatVectorFlushExpression : FlushExpression<List<double>> {
    85     public override bool Eval(IInternalPushInterpreter interpreter) {
    86       return Eval(interpreter.FloatVectorStack);
     172    public FloatVectorFlushExpression() { }
     173    [StorableConstructor]
     174    protected FloatVectorFlushExpression(bool deserializing) : base(deserializing) { }
     175
     176    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     177      return interpreter.FloatVectorStack.IsEmpty;
     178    }
     179
     180    public override void Eval(IInternalPushInterpreter interpreter) {
     181      Eval(interpreter.FloatVectorStack);
    87182    }
    88183  }
    89184
    90185  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].FLUSH")]
     186  [StorableClass]
    91187  public class BooleanVectorFlushExpression : FlushExpression<List<bool>> {
    92     public override bool Eval(IInternalPushInterpreter interpreter) {
    93       return Eval(interpreter.BooleanVectorStack);
     188    public BooleanVectorFlushExpression() { }
     189    [StorableConstructor]
     190    protected BooleanVectorFlushExpression(bool deserializing) : base(deserializing) { }
     191
     192    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     193      return interpreter.BooleanVectorStack.IsEmpty;
     194    }
     195
     196    public override void Eval(IInternalPushInterpreter interpreter) {
     197      Eval(interpreter.BooleanVectorStack);
    94198    }
    95199  }
    96200
    97201  [PushExpression(StackTypes.StringVector, "STRING[].FLUSH")]
     202  [StorableClass]
    98203  public class StringVectorFlushExpression : FlushExpression<List<string>> {
    99     public override bool Eval(IInternalPushInterpreter interpreter) {
    100       return Eval(interpreter.StringVectorStack);
     204    public StringVectorFlushExpression() { }
     205    [StorableConstructor]
     206    protected StringVectorFlushExpression(bool deserializing) : base(deserializing) { }
     207
     208    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     209      return interpreter.StringVectorStack.IsEmpty;
     210    }
     211
     212    public override void Eval(IInternalPushInterpreter interpreter) {
     213      Eval(interpreter.StringVectorStack);
    101214    }
    102215  }
Note: See TracChangeset for help on using the changeset viewer.