Changeset 14952 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.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/PopExpressions.cs
r14875 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 … … 7 8 using Stack; 8 9 10 [StorableClass] 9 11 public abstract class PopExpression<T> : StatelessExpression { 10 public bool Eval(IPushStack<T> stack) { 11 if (stack.Count == 0) return false; 12 12 protected PopExpression() { } 13 [StorableConstructor] 14 protected PopExpression(bool deserializing) : base(deserializing) { } 15 16 protected void Eval(IPushStack<T> stack) { 13 17 stack.Pop(); 14 return true;15 16 } 17 18 } 19 } 20 21 [StorableClass] 18 22 [PushExpression(StackTypes.Integer, "INTEGER.POP")] 19 23 public class IntegerPopExpression : PopExpression<long> { 20 public override bool Eval(IInternalPushInterpreter interpreter) { 21 return Eval(interpreter.IntegerStack); 22 } 23 } 24 24 public IntegerPopExpression() { } 25 [StorableConstructor] 26 protected IntegerPopExpression(bool deserializing) : base(deserializing) { } 27 28 public override bool IsNoop(IInternalPushInterpreter interpreter) { 29 return interpreter.IntegerStack.IsEmpty; 30 } 31 32 public override void Eval(IInternalPushInterpreter interpreter) { 33 Eval(interpreter.IntegerStack); 34 } 35 } 36 37 [StorableClass] 25 38 [PushExpression(StackTypes.Float, "FLOAT.POP")] 26 39 public class FloatPopExpression : PopExpression<double> { 27 public override bool Eval(IInternalPushInterpreter interpreter) { 28 return Eval(interpreter.FloatStack); 29 } 30 } 31 40 public FloatPopExpression() { } 41 [StorableConstructor] 42 protected FloatPopExpression(bool deserializing) : base(deserializing) { } 43 44 public override bool IsNoop(IInternalPushInterpreter interpreter) { 45 return interpreter.FloatStack.IsEmpty; 46 } 47 48 public override void Eval(IInternalPushInterpreter interpreter) { 49 Eval(interpreter.FloatStack); 50 } 51 } 52 53 [StorableClass] 32 54 [PushExpression(StackTypes.Boolean, "BOOLEAN.POP")] 33 55 public class BooleanPopExpression : PopExpression<bool> { 34 public override bool Eval(IInternalPushInterpreter interpreter) { 35 return Eval(interpreter.BooleanStack); 36 } 37 } 38 56 public BooleanPopExpression() { } 57 [StorableConstructor] 58 protected BooleanPopExpression(bool deserializing) : base(deserializing) { } 59 60 public override bool IsNoop(IInternalPushInterpreter interpreter) { 61 return interpreter.BooleanStack.IsEmpty; 62 } 63 64 public override void Eval(IInternalPushInterpreter interpreter) { 65 Eval(interpreter.BooleanStack); 66 } 67 } 68 69 [StorableClass] 39 70 [PushExpression(StackTypes.Name, "NAME.POP")] 40 71 public class NamePopExpression : PopExpression<string> { 41 public override bool Eval(IInternalPushInterpreter interpreter) { 42 return Eval(interpreter.NameStack); 43 } 44 } 45 72 public NamePopExpression() { } 73 [StorableConstructor] 74 protected NamePopExpression(bool deserializing) : base(deserializing) { } 75 76 public override bool IsNoop(IInternalPushInterpreter interpreter) { 77 return interpreter.NameStack.IsEmpty; 78 } 79 80 public override void Eval(IInternalPushInterpreter interpreter) { 81 Eval(interpreter.NameStack); 82 } 83 } 84 85 [StorableClass] 46 86 [PushExpression(StackTypes.Exec, "EXEC.POP")] 47 87 public class ExecPopExpression : PopExpression<Expression> { 48 public override bool Eval(IInternalPushInterpreter interpreter) { 49 return Eval(interpreter.ExecStack); 50 } 51 } 52 88 public ExecPopExpression() { } 89 [StorableConstructor] 90 protected ExecPopExpression(bool deserializing) : base(deserializing) { } 91 92 public override bool IsNoop(IInternalPushInterpreter interpreter) { 93 return interpreter.ExecStack.IsEmpty; 94 } 95 96 public override void Eval(IInternalPushInterpreter interpreter) { 97 Eval(interpreter.ExecStack); 98 } 99 } 100 101 [StorableClass] 53 102 [PushExpression(StackTypes.Code, "CODE.POP")] 54 103 public class CodePopExpression : PopExpression<Expression> { 55 public override bool Eval(IInternalPushInterpreter interpreter) { 56 return Eval(interpreter.CodeStack); 57 } 58 } 59 104 public CodePopExpression() { } 105 [StorableConstructor] 106 protected CodePopExpression(bool deserializing) : base(deserializing) { } 107 108 public override bool IsNoop(IInternalPushInterpreter interpreter) { 109 return interpreter.CodeStack.IsEmpty; 110 } 111 112 public override void Eval(IInternalPushInterpreter interpreter) { 113 Eval(interpreter.CodeStack); 114 } 115 } 116 117 [StorableClass] 60 118 [PushExpression(StackTypes.Char, "CHAR.POP")] 61 119 public class CharPopExpression : PopExpression<char> { 62 public override bool Eval(IInternalPushInterpreter interpreter) { 63 return Eval(interpreter.CharStack); 64 } 65 } 66 120 public CharPopExpression() { } 121 [StorableConstructor] 122 protected CharPopExpression(bool deserializing) : base(deserializing) { } 123 124 public override bool IsNoop(IInternalPushInterpreter interpreter) { 125 return interpreter.CharStack.IsEmpty; 126 } 127 128 public override void Eval(IInternalPushInterpreter interpreter) { 129 Eval(interpreter.CharStack); 130 } 131 } 132 133 [StorableClass] 67 134 [PushExpression(StackTypes.String, "STRING.POP")] 68 135 public class StringPopExpression : PopExpression<string> { 69 public override bool Eval(IInternalPushInterpreter interpreter) { 70 return Eval(interpreter.StringStack); 71 } 72 } 73 136 public StringPopExpression() { } 137 [StorableConstructor] 138 protected StringPopExpression(bool deserializing) : base(deserializing) { } 139 140 public override bool IsNoop(IInternalPushInterpreter interpreter) { 141 return interpreter.StringStack.IsEmpty; 142 } 143 144 public override void Eval(IInternalPushInterpreter interpreter) { 145 Eval(interpreter.StringStack); 146 } 147 } 148 149 [StorableClass] 74 150 [PushExpression(StackTypes.IntegerVector, "INTEGER[].POP")] 75 151 public class IntegerVectorPopExpression : PopExpression<List<long>> { 76 public override bool Eval(IInternalPushInterpreter interpreter) { 77 return Eval(interpreter.IntegerVectorStack); 78 } 79 } 80 81 152 public IntegerVectorPopExpression() { } 153 [StorableConstructor] 154 protected IntegerVectorPopExpression(bool deserializing) : base(deserializing) { } 155 156 public override bool IsNoop(IInternalPushInterpreter interpreter) { 157 return interpreter.IntegerVectorStack.IsEmpty; 158 } 159 160 public override void Eval(IInternalPushInterpreter interpreter) { 161 Eval(interpreter.IntegerVectorStack); 162 } 163 } 164 165 [StorableClass] 82 166 [PushExpression(StackTypes.FloatVector, "FLOAT[].POP")] 83 167 public class FloatVectorPopExpression : PopExpression<List<double>> { 84 public override bool Eval(IInternalPushInterpreter interpreter) { 85 return Eval(interpreter.FloatVectorStack); 86 } 87 } 88 89 168 public FloatVectorPopExpression() { } 169 [StorableConstructor] 170 protected FloatVectorPopExpression(bool deserializing) : base(deserializing) { } 171 172 public override bool IsNoop(IInternalPushInterpreter interpreter) { 173 return interpreter.FloatVectorStack.IsEmpty; 174 } 175 176 public override void Eval(IInternalPushInterpreter interpreter) { 177 Eval(interpreter.FloatVectorStack); 178 } 179 } 180 181 [StorableClass] 90 182 [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].POP")] 91 183 public class BooleanVectorPopExpression : PopExpression<List<bool>> { 92 public override bool Eval(IInternalPushInterpreter interpreter) { 93 return Eval(interpreter.BooleanVectorStack); 94 } 95 } 96 97 184 public BooleanVectorPopExpression() { } 185 [StorableConstructor] 186 protected BooleanVectorPopExpression(bool deserializing) : base(deserializing) { } 187 188 public override bool IsNoop(IInternalPushInterpreter interpreter) { 189 return interpreter.BooleanVectorStack.IsEmpty; 190 } 191 192 public override void Eval(IInternalPushInterpreter interpreter) { 193 Eval(interpreter.BooleanVectorStack); 194 } 195 } 196 197 [StorableClass] 98 198 [PushExpression(StackTypes.StringVector, "STRING[].POP")] 99 199 public class StringVectorPopExpression : PopExpression<List<string>> { 100 public override bool Eval(IInternalPushInterpreter interpreter) { 101 return Eval(interpreter.StringVectorStack); 200 public StringVectorPopExpression() { } 201 [StorableConstructor] 202 protected StringVectorPopExpression(bool deserializing) : base(deserializing) { } 203 204 public override bool IsNoop(IInternalPushInterpreter interpreter) { 205 return interpreter.StringVectorStack.IsEmpty; 206 } 207 208 public override void Eval(IInternalPushInterpreter interpreter) { 209 Eval(interpreter.StringVectorStack); 102 210 } 103 211 }
Note: See TracChangeset
for help on using the changeset viewer.