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

    r14875 r14952  
    22  using System.Collections.Generic;
    33
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56
     
    78  using Stack;
    89
     10  [StorableClass]
    911  public abstract class PopExpression<T> : StatelessExpression {
    10     public bool Eval(IPushStack<T> stack) {
    11       if (stack.Count == 0) return false;
    12 
     12    protected PopExpression() { }
     13    [StorableConstructor]
     14    protected PopExpression(bool deserializing) : base(deserializing) { }
     15
     16    protected void Eval(IPushStack<T> stack) {
    1317      stack.Pop();
    14       return true;
    15     }
    16   }
    17 
     18    }
     19  }
     20
     21  [StorableClass]
    1822  [PushExpression(StackTypes.Integer, "INTEGER.POP")]
    1923  public class IntegerPopExpression : PopExpression<long> {
    20     public override bool Eval(IInternalPushInterpreter interpreter) {
    21       return Eval(interpreter.IntegerStack);
    22     }
    23   }
    24 
     24    public IntegerPopExpression() { }
     25    [StorableConstructor]
     26    protected IntegerPopExpression(bool deserializing) : base(deserializing) { }
     27
     28    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     29      return interpreter.IntegerStack.IsEmpty;
     30    }
     31
     32    public override void Eval(IInternalPushInterpreter interpreter) {
     33      Eval(interpreter.IntegerStack);
     34    }
     35  }
     36
     37  [StorableClass]
    2538  [PushExpression(StackTypes.Float, "FLOAT.POP")]
    2639  public class FloatPopExpression : PopExpression<double> {
    27     public override bool Eval(IInternalPushInterpreter interpreter) {
    28       return Eval(interpreter.FloatStack);
    29     }
    30   }
    31 
     40    public FloatPopExpression() { }
     41    [StorableConstructor]
     42    protected FloatPopExpression(bool deserializing) : base(deserializing) { }
     43
     44    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     45      return interpreter.FloatStack.IsEmpty;
     46    }
     47
     48    public override void Eval(IInternalPushInterpreter interpreter) {
     49      Eval(interpreter.FloatStack);
     50    }
     51  }
     52
     53  [StorableClass]
    3254  [PushExpression(StackTypes.Boolean, "BOOLEAN.POP")]
    3355  public class BooleanPopExpression : PopExpression<bool> {
    34     public override bool Eval(IInternalPushInterpreter interpreter) {
    35       return Eval(interpreter.BooleanStack);
    36     }
    37   }
    38 
     56    public BooleanPopExpression() { }
     57    [StorableConstructor]
     58    protected BooleanPopExpression(bool deserializing) : base(deserializing) { }
     59
     60    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     61      return interpreter.BooleanStack.IsEmpty;
     62    }
     63
     64    public override void Eval(IInternalPushInterpreter interpreter) {
     65      Eval(interpreter.BooleanStack);
     66    }
     67  }
     68
     69  [StorableClass]
    3970  [PushExpression(StackTypes.Name, "NAME.POP")]
    4071  public class NamePopExpression : PopExpression<string> {
    41     public override bool Eval(IInternalPushInterpreter interpreter) {
    42       return Eval(interpreter.NameStack);
    43     }
    44   }
    45 
     72    public NamePopExpression() { }
     73    [StorableConstructor]
     74    protected NamePopExpression(bool deserializing) : base(deserializing) { }
     75
     76    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     77      return interpreter.NameStack.IsEmpty;
     78    }
     79
     80    public override void Eval(IInternalPushInterpreter interpreter) {
     81      Eval(interpreter.NameStack);
     82    }
     83  }
     84
     85  [StorableClass]
    4686  [PushExpression(StackTypes.Exec, "EXEC.POP")]
    4787  public class ExecPopExpression : PopExpression<Expression> {
    48     public override bool Eval(IInternalPushInterpreter interpreter) {
    49       return Eval(interpreter.ExecStack);
    50     }
    51   }
    52 
     88    public ExecPopExpression() { }
     89    [StorableConstructor]
     90    protected ExecPopExpression(bool deserializing) : base(deserializing) { }
     91
     92    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     93      return interpreter.ExecStack.IsEmpty;
     94    }
     95
     96    public override void Eval(IInternalPushInterpreter interpreter) {
     97      Eval(interpreter.ExecStack);
     98    }
     99  }
     100
     101  [StorableClass]
    53102  [PushExpression(StackTypes.Code, "CODE.POP")]
    54103  public class CodePopExpression : PopExpression<Expression> {
    55     public override bool Eval(IInternalPushInterpreter interpreter) {
    56       return Eval(interpreter.CodeStack);
    57     }
    58   }
    59 
     104    public CodePopExpression() { }
     105    [StorableConstructor]
     106    protected CodePopExpression(bool deserializing) : base(deserializing) { }
     107
     108    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     109      return interpreter.CodeStack.IsEmpty;
     110    }
     111
     112    public override void Eval(IInternalPushInterpreter interpreter) {
     113      Eval(interpreter.CodeStack);
     114    }
     115  }
     116
     117  [StorableClass]
    60118  [PushExpression(StackTypes.Char, "CHAR.POP")]
    61119  public class CharPopExpression : PopExpression<char> {
    62     public override bool Eval(IInternalPushInterpreter interpreter) {
    63       return Eval(interpreter.CharStack);
    64     }
    65   }
    66 
     120    public CharPopExpression() { }
     121    [StorableConstructor]
     122    protected CharPopExpression(bool deserializing) : base(deserializing) { }
     123
     124    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     125      return interpreter.CharStack.IsEmpty;
     126    }
     127
     128    public override void Eval(IInternalPushInterpreter interpreter) {
     129      Eval(interpreter.CharStack);
     130    }
     131  }
     132
     133  [StorableClass]
    67134  [PushExpression(StackTypes.String, "STRING.POP")]
    68135  public class StringPopExpression : PopExpression<string> {
    69     public override bool Eval(IInternalPushInterpreter interpreter) {
    70       return Eval(interpreter.StringStack);
    71     }
    72   }
    73 
     136    public StringPopExpression() { }
     137    [StorableConstructor]
     138    protected StringPopExpression(bool deserializing) : base(deserializing) { }
     139
     140    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     141      return interpreter.StringStack.IsEmpty;
     142    }
     143
     144    public override void Eval(IInternalPushInterpreter interpreter) {
     145      Eval(interpreter.StringStack);
     146    }
     147  }
     148
     149  [StorableClass]
    74150  [PushExpression(StackTypes.IntegerVector, "INTEGER[].POP")]
    75151  public class IntegerVectorPopExpression : PopExpression<List<long>> {
    76     public override bool Eval(IInternalPushInterpreter interpreter) {
    77       return Eval(interpreter.IntegerVectorStack);
    78     }
    79   }
    80 
    81 
     152    public IntegerVectorPopExpression() { }
     153    [StorableConstructor]
     154    protected IntegerVectorPopExpression(bool deserializing) : base(deserializing) { }
     155
     156    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     157      return interpreter.IntegerVectorStack.IsEmpty;
     158    }
     159
     160    public override void Eval(IInternalPushInterpreter interpreter) {
     161      Eval(interpreter.IntegerVectorStack);
     162    }
     163  }
     164
     165  [StorableClass]
    82166  [PushExpression(StackTypes.FloatVector, "FLOAT[].POP")]
    83167  public class FloatVectorPopExpression : PopExpression<List<double>> {
    84     public override bool Eval(IInternalPushInterpreter interpreter) {
    85       return Eval(interpreter.FloatVectorStack);
    86     }
    87   }
    88 
    89 
     168    public FloatVectorPopExpression() { }
     169    [StorableConstructor]
     170    protected FloatVectorPopExpression(bool deserializing) : base(deserializing) { }
     171
     172    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     173      return interpreter.FloatVectorStack.IsEmpty;
     174    }
     175
     176    public override void Eval(IInternalPushInterpreter interpreter) {
     177      Eval(interpreter.FloatVectorStack);
     178    }
     179  }
     180
     181  [StorableClass]
    90182  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].POP")]
    91183  public class BooleanVectorPopExpression : PopExpression<List<bool>> {
    92     public override bool Eval(IInternalPushInterpreter interpreter) {
    93       return Eval(interpreter.BooleanVectorStack);
    94     }
    95   }
    96 
    97 
     184    public BooleanVectorPopExpression() { }
     185    [StorableConstructor]
     186    protected BooleanVectorPopExpression(bool deserializing) : base(deserializing) { }
     187
     188    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     189      return interpreter.BooleanVectorStack.IsEmpty;
     190    }
     191
     192    public override void Eval(IInternalPushInterpreter interpreter) {
     193      Eval(interpreter.BooleanVectorStack);
     194    }
     195  }
     196
     197  [StorableClass]
    98198  [PushExpression(StackTypes.StringVector, "STRING[].POP")]
    99199  public class StringVectorPopExpression : PopExpression<List<string>> {
    100     public override bool Eval(IInternalPushInterpreter interpreter) {
    101       return Eval(interpreter.StringVectorStack);
     200    public StringVectorPopExpression() { }
     201    [StorableConstructor]
     202    protected StringVectorPopExpression(bool deserializing) : base(deserializing) { }
     203
     204    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     205      return interpreter.StringVectorStack.IsEmpty;
     206    }
     207
     208    public override void Eval(IInternalPushInterpreter interpreter) {
     209      Eval(interpreter.StringVectorStack);
    102210    }
    103211  }
Note: See TracChangeset for help on using the changeset viewer.