Changeset 14952 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReverseExpressions.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/VectorReverseExpressions.cs
r14834 r14952 2 2 3 3 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions { 4 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 5 using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes; 5 6 using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter; … … 11 12 /// <param name="vectorStack"></param> 12 13 /// <returns></returns> 14 [StorableClass] 13 15 public abstract class VectorReverseExpression<T> : StatelessExpression { 14 protected bool Eval(IPushStack<List<T>> vectorStack) {15 if (vectorStack.IsEmpty)16 return false;16 protected VectorReverseExpression() { } 17 [StorableConstructor] 18 protected VectorReverseExpression(bool deserializing) : base(deserializing) { } 17 19 20 protected bool IsNoop(IPushStack<List<T>> vectorStack) { 21 return vectorStack.IsEmpty; 22 } 23 24 protected void Eval(IPushStack<List<T>> vectorStack) { 18 25 vectorStack.Top.Reverse(); 19 return true;20 26 } 21 27 } 22 28 29 [StorableClass] 23 30 [PushExpression(StackTypes.IntegerVector, "INTEGER[].REVERSE")] 24 31 public class IntegerVectorReverseExpression : VectorReverseExpression<long> { 25 public override bool Eval(IInternalPushInterpreter interpreter) { 26 return Eval(interpreter.IntegerVectorStack); 32 public IntegerVectorReverseExpression() { } 33 [StorableConstructor] 34 protected IntegerVectorReverseExpression(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[].REVERSE")] 31 47 public class FloatVectorReverseExpression : VectorReverseExpression<double> { 32 public override bool Eval(IInternalPushInterpreter interpreter) { 33 return Eval(interpreter.FloatVectorStack); 48 public FloatVectorReverseExpression() { } 49 [StorableConstructor] 50 protected FloatVectorReverseExpression(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[].REVERSE")] 38 63 public class BooleanVectorReverseExpression : VectorReverseExpression<bool> { 39 public override bool Eval(IInternalPushInterpreter interpreter) { 40 return Eval(interpreter.BooleanVectorStack); 64 public BooleanVectorReverseExpression() { } 65 [StorableConstructor] 66 protected BooleanVectorReverseExpression(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[].REVERSE")] 45 79 public class StringVectorReverseExpression : VectorReverseExpression<string> { 46 public override bool Eval(IInternalPushInterpreter interpreter) { 47 return Eval(interpreter.StringVectorStack); 80 public StringVectorReverseExpression() { } 81 [StorableConstructor] 82 protected StringVectorReverseExpression(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.