Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/08/16 12:04:25 (8 years ago)
Author:
pkimmesw
Message:

#2665 Set .NET version to 4.5, C# version to 5.0, Added expression templates and factory

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/Exec/ExecDoRangeExpression.cs

    r14320 r14328  
    1 using HeuristicLab.Algorithms.PushGP.Stack;
     1using HeuristicLab.Algorithms.PushGP.Interpreter;
    22
    3 namespace HeuristicLab.Algorithms.PushGP.Expressions
     3namespace HeuristicLab.Algorithms.PushGP.Expressions.Exec
    44{
    55    public class ExecDoRangeExpression : Expression
    66    {
    7         public ExecDoRangeExpression() : base(OpCode.ExecDoXRange)
    8         { }
     7        public override bool IsCodeOp { get { return false; } }
    98
    10         public override void Eval(IInterpreterService interpreterService)
     9        public override void Eval(IInterpreter interpreter)
    1110        {
    1211            // not enough arguments on stack
    13             if (interpreterService.IntegerStack.Count < 2 ||
    14                 interpreterService.ExecStack.Count == 0)
     12            if (interpreter.IntegerStack.Count < 2 ||
     13                interpreter.ExecStack.Count == 0)
    1514                return;
    1615
    17             var destinationIndex = interpreterService.IntegerStack.Pop();
    18             var currentIndex = interpreterService.IntegerStack.Pop();
    19             var loopBody = interpreterService.ExecStack.Pop();
     16            var destinationIndex = interpreter.IntegerStack.Pop();
     17            var currentIndex = interpreter.IntegerStack.Pop();
     18            var loopBody = interpreter.ExecStack.Pop();
    2019
    2120            if (destinationIndex == currentIndex)
    2221            {
    23                 interpreterService.IntegerStack.Push(currentIndex);
    24                 interpreterService.ExecStack.Push(loopBody);
     22                interpreter.IntegerStack.Push(currentIndex);
     23                interpreter.ExecStack.Push(loopBody);
    2524            }
    2625            else
     
    3029                    : currentIndex + 1;
    3130
    32                 interpreterService.IntegerStack.Push(currentIndex);
    33                 interpreterService.IntegerStack.Push(nextIndex);
    34                 interpreterService.IntegerStack.Push(destinationIndex);
     31                interpreter.IntegerStack.Push(currentIndex);
     32                interpreter.IntegerStack.Push(nextIndex);
     33                interpreter.IntegerStack.Push(destinationIndex);
    3534
    3635                var expression = new ExecDoRangeExpression();
    37                 interpreterService.ExecStack.Push(loopBody);
    38                 interpreterService.ExecStack.Push(loopBody);
    39                 interpreterService.ExecStack.Push(expression);
     36                interpreter.ExecStack.Push(loopBody);
     37                interpreter.ExecStack.Push(loopBody);
     38                interpreter.ExecStack.Push(expression);
    4039            }
     40        }
     41
     42        public override string ToString()
     43        {
     44            return Symbols.ExecDoXRange;
    4145        }
    4246    }
Note: See TracChangeset for help on using the changeset viewer.