Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/10/17 00:27:31 (7 years ago)
Author:
pkimmesw
Message:

#2665 LexicaseSelector, Performance improvements, UI Fixes, Debugger only shows used stacks, fixed Debugger stepping, Added vector expressions, ERCOptions,

File:
1 edited

Legend:

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

    r14777 r14834  
    11namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
     2  using System.Collections.Generic;
     3
    24  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    35  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
     
    1012  /// <typeparam name="T">Stacktype</typeparam>
    1113  public abstract class DuplicateExpression<T> : StatelessExpression {
    12     protected bool Eval(IStack<T> stack) {
     14    protected bool Eval(IPushStack<T> stack) {
    1315      if (stack.Count == 0) return false;
    1416
     
    1719      return true;
    1820    }
    19 
    20     protected bool Eval(IStack<Expression> stack) {
    21       if (stack.Count == 0) return false;
    22 
    23       var top = stack.Top;
    24 
    25       stack.Push(top);
    26       return true;
    27     }
    2821  }
    2922
    3023  [PushExpression(StackTypes.Integer, "INTEGER.DUP")]
    3124  public class IntegerDuplicateExpression : DuplicateExpression<long> {
    32     public override bool Eval(IPushInterpreter interpreter) {
     25    public override bool Eval(IInternalPushInterpreter interpreter) {
    3326      return this.Eval(interpreter.IntegerStack);
    3427    }
     
    3730  [PushExpression(StackTypes.Float, "FLOAT.DUP")]
    3831  public class FloatDuplicateExpression : DuplicateExpression<double> {
    39     public override bool Eval(IPushInterpreter interpreter) {
     32    public override bool Eval(IInternalPushInterpreter interpreter) {
    4033      return this.Eval(interpreter.FloatStack);
    4134    }
     
    4437  [PushExpression(StackTypes.Boolean, "BOOLEAN.DUP")]
    4538  public class BooleanDuplicateExpression : DuplicateExpression<bool> {
    46     public override bool Eval(IPushInterpreter interpreter) {
     39    public override bool Eval(IInternalPushInterpreter interpreter) {
    4740      return this.Eval(interpreter.BooleanStack);
    4841    }
     
    5144  [PushExpression(StackTypes.Name, "NAME.DUP")]
    5245  public class NameDuplicateExpression : DuplicateExpression<string> {
    53     public override bool Eval(IPushInterpreter interpreter) {
     46    public override bool Eval(IInternalPushInterpreter interpreter) {
    5447      return this.Eval(interpreter.NameStack);
    5548    }
     
    5851  [PushExpression(StackTypes.Exec, "EXEC.DUP")]
    5952  public class ExecDuplicateExpression : DuplicateExpression<Expression> {
    60     public override bool Eval(IPushInterpreter interpreter) {
     53    public override bool Eval(IInternalPushInterpreter interpreter) {
    6154      return this.Eval(interpreter.ExecStack);
    6255    }
     
    6558  [PushExpression(StackTypes.Code, "CODE.DUP")]
    6659  public class CodeDuplicateExpression : DuplicateExpression<Expression> {
    67     public override bool Eval(IPushInterpreter interpreter) {
     60    public override bool Eval(IInternalPushInterpreter interpreter) {
    6861      return this.Eval(interpreter.CodeStack);
    6962    }
    7063  }
     64
     65  [PushExpression(StackTypes.IntegerVector, "INTEGER[].DUP")]
     66  public class IntegerVectorDuplicateExpression : DuplicateExpression<List<long>> {
     67    public override bool Eval(IInternalPushInterpreter interpreter) {
     68      return this.Eval(interpreter.IntegerVectorStack);
     69    }
     70  }
    7171}
Note: See TracChangeset for help on using the changeset viewer.