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

    r14908 r14952  
    22  using System;
    33
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
     
    78
    89  [Serializable]
     10  [StorableClass]
    911  public abstract class DoCountExpression : LoopExpression {
    1012
    1113    protected DoCountExpression() { }
    1214    protected DoCountExpression(LoopState state) : base(state) { }
     15    [StorableConstructor]
     16    protected DoCountExpression(bool deserializing) : base(deserializing) { }
    1317    protected override bool HasInsufficientArguments(IInternalPushInterpreter interpreter, IPushStack<Expression> sourceStack) {
    1418      return interpreter.IntegerStack.Count < 1 ||
     
    4448  /// </summary>
    4549  [Serializable]
     50  [StorableClass]
    4651  [PushExpression(StackTypes.Code, "CODE.DO*COUNT", StackTypes.Integer)]
    4752  public class CodeDoCountExpression : DoCountExpression {
    4853
    4954    public CodeDoCountExpression() { }
     55    public CodeDoCountExpression(LoopState state) : base(state) { }
     56    [StorableConstructor]
     57    protected CodeDoCountExpression(bool deserializing) : base(deserializing) { }
     58    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     59      return State.Body == null && HasInsufficientArguments(interpreter, interpreter.CodeStack);
     60    }
    5061
    51     public CodeDoCountExpression(LoopState state) : base(state) { }
    52 
    53     public override bool Eval(IInternalPushInterpreter interpreter) {
    54       return Eval(interpreter, interpreter.CodeStack);
     62    public override void Eval(IInternalPushInterpreter interpreter) {
     63      Eval(interpreter, interpreter.CodeStack);
    5564    }
    5665
     
    7887  /// </summary>
    7988  [Serializable]
     89  [StorableClass]
    8090  [PushExpression(StackTypes.Exec, "EXEC.DO*COUNT", StackTypes.Integer)]
    8191  public class ExecDoCountExpression : DoCountExpression {
    8292    public ExecDoCountExpression() { }
    8393    public ExecDoCountExpression(LoopState state) : base(state) { }
     94    [StorableConstructor]
     95    protected ExecDoCountExpression(bool deserializing) : base(deserializing) { }
    8496
    85     public override bool Eval(IInternalPushInterpreter interpreter) {
    86       return Eval(interpreter, interpreter.ExecStack);
     97    public override void Eval(IInternalPushInterpreter interpreter) {
     98      Eval(interpreter, interpreter.ExecStack);
     99    }
     100
     101    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     102      return State.Body == null && HasInsufficientArguments(interpreter, interpreter.ExecStack);
    87103    }
    88104
Note: See TracChangeset for help on using the changeset viewer.