Changeset 14952 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorRestExpressions.cs
- Timestamp:
- 05/10/17 11:23:05 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorRestExpressions.cs
r14834 r14952 2 2 using System.Collections.Generic; 3 3 4 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 5 using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes; 5 6 using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter; … … 10 11 /// </summary> 11 12 /// <typeparam name="T"></typeparam> 13 [StorableClass] 12 14 public abstract class VectorRestExpression<T> : StatelessExpression { 13 protected bool Eval(IPushStack<List<T>> vectorStack) {14 if (vectorStack.IsEmpty || vectorStack.Top.Count < 2)15 return false;15 protected VectorRestExpression() { } 16 [StorableConstructor] 17 protected VectorRestExpression(bool deserializing) : base(deserializing) { } 16 18 19 protected bool IsNoop(IPushStack<List<T>> vectorStack) { 20 return vectorStack.IsEmpty || vectorStack.Top.Count < 2; 21 } 22 23 protected void Eval(IPushStack<List<T>> vectorStack) { 17 24 var result = vectorStack.Top.GetRange(1, vectorStack.Top.Count - 1); 18 25 vectorStack.SetTop(result); 19 return true;20 26 } 21 27 } 22 28 29 [StorableClass] 23 30 [PushExpression(StackTypes.IntegerVector, "INTEGER[].REST")] 24 31 public class IntegerVectorRestExpression : VectorRestExpression<long> { 25 public override bool Eval(IInternalPushInterpreter interpreter) { 26 return Eval(interpreter.IntegerVectorStack); 32 public IntegerVectorRestExpression() { } 33 [StorableConstructor] 34 protected IntegerVectorRestExpression(bool deserializing) : base(deserializing) { } 35 36 public override bool IsNoop(IInternalPushInterpreter interpreter) { 37 return IsNoop(interpreter.IntegerVectorStack); 38 } 39 40 public override void Eval(IInternalPushInterpreter interpreter) { 41 Eval(interpreter.IntegerVectorStack); 27 42 } 28 43 } 29 44 45 [StorableClass] 30 46 [PushExpression(StackTypes.FloatVector, "FLOAT[].REST")] 31 47 public class FloatVectorRestExpression : VectorRestExpression<double> { 32 public override bool Eval(IInternalPushInterpreter interpreter) { 33 return Eval(interpreter.FloatVectorStack); 48 public FloatVectorRestExpression() { } 49 [StorableConstructor] 50 protected FloatVectorRestExpression(bool deserializing) : base(deserializing) { } 51 52 public override bool IsNoop(IInternalPushInterpreter interpreter) { 53 return IsNoop(interpreter.FloatVectorStack); 54 } 55 56 public override void Eval(IInternalPushInterpreter interpreter) { 57 Eval(interpreter.FloatVectorStack); 34 58 } 35 59 } 36 60 61 [StorableClass] 37 62 [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].REST")] 38 63 public class BooleanVectorRestExpression : VectorRestExpression<bool> { 39 public override bool Eval(IInternalPushInterpreter interpreter) { 40 return Eval(interpreter.BooleanVectorStack); 64 public BooleanVectorRestExpression() { } 65 [StorableConstructor] 66 protected BooleanVectorRestExpression(bool deserializing) : base(deserializing) { } 67 68 public override bool IsNoop(IInternalPushInterpreter interpreter) { 69 return IsNoop(interpreter.BooleanVectorStack); 70 } 71 72 public override void Eval(IInternalPushInterpreter interpreter) { 73 Eval(interpreter.BooleanVectorStack); 41 74 } 42 75 } 43 76 77 [StorableClass] 44 78 [PushExpression(StackTypes.StringVector, "STRING[].REST")] 45 79 public class StringVectorRestExpression : VectorRestExpression<string> { 46 public override bool Eval(IInternalPushInterpreter interpreter) { 47 return Eval(interpreter.StringVectorStack); 80 public StringVectorRestExpression() { } 81 [StorableConstructor] 82 protected StringVectorRestExpression(bool deserializing) : base(deserializing) { } 83 84 public override bool IsNoop(IInternalPushInterpreter interpreter) { 85 return IsNoop(interpreter.StringVectorStack); 86 } 87 88 public override void Eval(IInternalPushInterpreter interpreter) { 89 Eval(interpreter.StringVectorStack); 48 90 } 49 91 }
Note: See TracChangeset
for help on using the changeset viewer.