Changeset 14952 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.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/IntegerExpressions.cs
r14875 r14952 2 2 using System; 3 3 4 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 5 using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes; 5 6 using HeuristicLab.Problems.ProgramSynthesis.Push.Stack; … … 11 12 /// </summary> 12 13 [PushExpression(StackTypes.Integer, "INTEGER.+")] 14 [StorableClass] 13 15 public class IntegerAddExpression : StatelessExpression { 14 public override bool Eval(IInternalPushInterpreter interpreter) { 15 if (interpreter.IntegerStack.Count < 2) 16 return false; 17 16 public IntegerAddExpression() { } 17 [StorableConstructor] 18 protected IntegerAddExpression(bool deserializing) : base(deserializing) { } 19 20 public override bool IsNoop(IInternalPushInterpreter interpreter) { 21 return interpreter.IntegerStack.Count < 2; 22 } 23 24 public override void Eval(IInternalPushInterpreter interpreter) { 18 25 var first = interpreter.IntegerStack.Pop(); 19 26 var second = interpreter.IntegerStack.Top; … … 21 28 22 29 interpreter.IntegerStack.SetTop(result); 23 return true;24 30 } 25 31 } … … 29 35 /// </summary> 30 36 [PushExpression(StackTypes.Integer, "INTEGER.-")] 37 [StorableClass] 31 38 public class IntegerSubtractExpression : StatelessExpression { 32 public override bool Eval(IInternalPushInterpreter interpreter) { 33 if (interpreter.IntegerStack.Count < 2) 34 return false; 35 39 public IntegerSubtractExpression() { } 40 [StorableConstructor] 41 protected IntegerSubtractExpression(bool deserializing) : base(deserializing) { } 42 43 public override bool IsNoop(IInternalPushInterpreter interpreter) { 44 return interpreter.IntegerStack.Count < 2; 45 } 46 47 public override void Eval(IInternalPushInterpreter interpreter) { 36 48 var first = interpreter.IntegerStack.Pop(); 37 49 var second = interpreter.IntegerStack.Top; … … 39 51 40 52 interpreter.IntegerStack.SetTop(result); 41 return true;42 53 } 43 54 } … … 47 58 /// </summary> 48 59 [PushExpression(StackTypes.Integer, "INTEGER.*")] 60 [StorableClass] 49 61 public class IntegerMultiplyExpression : StatelessExpression { 50 public override bool Eval(IInternalPushInterpreter interpreter) { 51 if (interpreter.IntegerStack.Count < 2) 52 return false; 53 62 public IntegerMultiplyExpression() { } 63 [StorableConstructor] 64 protected IntegerMultiplyExpression(bool deserializing) : base(deserializing) { } 65 66 public override bool IsNoop(IInternalPushInterpreter interpreter) { 67 return interpreter.IntegerStack.Count < 2; 68 } 69 70 public override void Eval(IInternalPushInterpreter interpreter) { 54 71 var first = interpreter.IntegerStack.Pop(); 55 72 var second = interpreter.IntegerStack.Top; … … 57 74 58 75 interpreter.IntegerStack.SetTop(result); 59 return true;60 76 } 61 77 } … … 66 82 /// </summary> 67 83 [PushExpression(StackTypes.Integer, "INTEGER./")] 84 [StorableClass] 68 85 public class IntegerDivideExpression : StatelessExpression { 69 public override bool Eval(IInternalPushInterpreter interpreter) { 70 if (interpreter.IntegerStack.Count < 2 || 71 interpreter.IntegerStack.Top == 0) 72 return false; 73 86 public IntegerDivideExpression() { } 87 [StorableConstructor] 88 protected IntegerDivideExpression(bool deserializing) : base(deserializing) { } 89 90 public override bool IsNoop(IInternalPushInterpreter interpreter) { 91 return interpreter.IntegerStack.Count < 2 || interpreter.IntegerStack.Top == 0; 92 } 93 94 public override void Eval(IInternalPushInterpreter interpreter) { 74 95 var first = interpreter.IntegerStack.Pop(); 75 96 var second = interpreter.IntegerStack.Top; … … 77 98 78 99 interpreter.IntegerStack.SetTop(result); 79 return true;80 100 } 81 101 } … … 88 108 /// </summary> 89 109 [PushExpression(StackTypes.Integer, "INTEGER.%")] 110 [StorableClass] 90 111 public class IntegerModuloExpression : StatelessExpression { 91 public override bool Eval(IInternalPushInterpreter interpreter) { 92 if (interpreter.IntegerStack.Count < 2 || 93 interpreter.IntegerStack.Top == 0) 94 return false; 95 112 public IntegerModuloExpression() { } 113 [StorableConstructor] 114 protected IntegerModuloExpression(bool deserializing) : base(deserializing) { } 115 116 public override bool IsNoop(IInternalPushInterpreter interpreter) { 117 return interpreter.IntegerStack.Count < 2 || interpreter.IntegerStack.Top == 0; 118 } 119 120 public override void Eval(IInternalPushInterpreter interpreter) { 96 121 var first = interpreter.IntegerStack.Pop(); 97 122 var second = interpreter.IntegerStack.Top; … … 99 124 100 125 interpreter.IntegerStack.SetTop(result); 101 return true;102 126 } 103 127 } … … 107 131 /// </summary> 108 132 [PushExpression(StackTypes.Integer, "INTEGER.MIN")] 133 [StorableClass] 109 134 public class IntegerMinExpression : StatelessExpression { 110 public override bool Eval(IInternalPushInterpreter interpreter) { 111 if (interpreter.IntegerStack.Count < 2) 112 return false; 113 135 public IntegerMinExpression() { } 136 [StorableConstructor] 137 protected IntegerMinExpression(bool deserializing) : base(deserializing) { } 138 139 public override bool IsNoop(IInternalPushInterpreter interpreter) { 140 return interpreter.IntegerStack.Count < 2; 141 } 142 143 public override void Eval(IInternalPushInterpreter interpreter) { 114 144 var first = interpreter.IntegerStack.Pop(); 115 145 var second = interpreter.IntegerStack.Top; … … 117 147 118 148 interpreter.IntegerStack.SetTop(result); 119 return true;120 149 } 121 150 } … … 125 154 /// </summary> 126 155 [PushExpression(StackTypes.Integer, "INTEGER.MAX")] 156 [StorableClass] 127 157 public class IntegerMaxExpression : StatelessExpression { 128 public override bool Eval(IInternalPushInterpreter interpreter) { 129 if (interpreter.IntegerStack.Count < 2) 130 return false; 131 158 public IntegerMaxExpression() { } 159 [StorableConstructor] 160 protected IntegerMaxExpression(bool deserializing) : base(deserializing) { } 161 162 public override bool IsNoop(IInternalPushInterpreter interpreter) { 163 return interpreter.IntegerStack.Count < 2; 164 } 165 166 public override void Eval(IInternalPushInterpreter interpreter) { 132 167 var first = interpreter.IntegerStack.Pop(); 133 168 var second = interpreter.IntegerStack.Top; … … 135 170 136 171 interpreter.IntegerStack.SetTop(result); 137 return true;138 172 } 139 173 } … … 143 177 /// </summary> 144 178 [PushExpression(StackTypes.Integer, "INTEGER.<", StackTypes.Boolean)] 179 [StorableClass] 145 180 public class IntegerSmallerThanExpression : StatelessExpression { 146 public override bool Eval(IInternalPushInterpreter interpreter) { 147 if (interpreter.IntegerStack.Count < 2) 148 return false; 149 181 public IntegerSmallerThanExpression() { } 182 [StorableConstructor] 183 protected IntegerSmallerThanExpression(bool deserializing) : base(deserializing) { } 184 185 public override bool IsNoop(IInternalPushInterpreter interpreter) { 186 return interpreter.IntegerStack.Count < 2; 187 } 188 189 public override void Eval(IInternalPushInterpreter interpreter) { 150 190 var first = interpreter.IntegerStack.Top; 151 191 var second = interpreter.IntegerStack[1]; … … 154 194 var result = second < first; 155 195 interpreter.BooleanStack.Push(result); 156 return true;157 196 } 158 197 } … … 162 201 /// </summary> 163 202 [PushExpression(StackTypes.Integer, "INTEGER.>", StackTypes.Boolean)] 203 [StorableClass] 164 204 public class IntegerGreaterThanExpression : StatelessExpression { 165 public override bool Eval(IInternalPushInterpreter interpreter) { 166 if (interpreter.IntegerStack.Count < 2) 167 return false; 168 205 public IntegerGreaterThanExpression() { } 206 [StorableConstructor] 207 protected IntegerGreaterThanExpression(bool deserializing) : base(deserializing) { } 208 209 public override bool IsNoop(IInternalPushInterpreter interpreter) { 210 return interpreter.IntegerStack.Count < 2; 211 } 212 213 public override void Eval(IInternalPushInterpreter interpreter) { 169 214 var first = interpreter.IntegerStack.Top; 170 215 var second = interpreter.IntegerStack[1]; … … 173 218 var result = second > first; 174 219 interpreter.BooleanStack.Push(result); 175 return true;176 220 } 177 221 } … … 181 225 /// </summary> 182 226 [PushExpression(StackTypes.Integer, "INTEGER.FROMBOOLEAN", StackTypes.Boolean)] 227 [StorableClass] 183 228 public class IntegerFromBooleanExpression : StatelessExpression { 184 public override bool Eval(IInternalPushInterpreter interpreter) { 185 if (interpreter.BooleanStack.Count == 0) 186 return false; 187 229 public IntegerFromBooleanExpression() { } 230 [StorableConstructor] 231 protected IntegerFromBooleanExpression(bool deserializing) : base(deserializing) { } 232 233 public override bool IsNoop(IInternalPushInterpreter interpreter) { 234 return interpreter.BooleanStack.IsEmpty; 235 } 236 237 public override void Eval(IInternalPushInterpreter interpreter) { 188 238 var condition = interpreter.BooleanStack.Pop(); 189 239 var value = condition ? 1 : 0; 190 240 interpreter.IntegerStack.Push(value); 191 return true;192 241 } 193 242 } … … 197 246 /// </summary> 198 247 [PushExpression(StackTypes.Integer, "INTEGER.FROMFLOAT", StackTypes.Float)] 248 [StorableClass] 199 249 public class IntegerFromFloatExpression : StatelessExpression { 200 public override bool Eval(IInternalPushInterpreter interpreter) { 201 if (interpreter.FloatStack.Count == 0) 202 return false; 203 250 public IntegerFromFloatExpression() { } 251 [StorableConstructor] 252 protected IntegerFromFloatExpression(bool deserializing) : base(deserializing) { } 253 254 public override bool IsNoop(IInternalPushInterpreter interpreter) { 255 return interpreter.FloatStack.IsEmpty; 256 } 257 258 public override void Eval(IInternalPushInterpreter interpreter) { 204 259 var value = (int)interpreter.FloatStack.Pop(); 205 260 interpreter.IntegerStack.Push(value); 206 return true;207 261 } 208 262 }
Note: See TracChangeset
for help on using the changeset viewer.