Changeset 14513 for branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/EqualsExpressions.cs
- Timestamp:
- 12/20/16 22:57:11 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/EqualsExpressions.cs
r14398 r14513 1 using HeuristicLab.Algorithms.PushGP.Interpreter; 2 using HeuristicLab.Algorithms.PushGP.Stack; 1 namespace HeuristicLab.Algorithms.PushGP.Expressions 2 { 3 using HeuristicLab.Algorithms.PushGP.Interpreter; 4 using HeuristicLab.Algorithms.PushGP.Stack; 3 5 4 namespace HeuristicLab.Algorithms.PushGP.Expressions 5 { 6 /// <summary>7 /// Pushes TRUE onto the BOOLEAN stack if the top two items are equal, or FALSE otherwise8 /// </summary>9 /// <typeparam name="T">Stacktype</typeparam>10 public abstract class EqualsExpression<T> : StatelessExpression6 /// <summary> 7 /// Pushes TRUE onto the BOOLEAN stack if the top two items are equal, or FALSE otherwise 8 /// </summary> 9 /// <typeparam name="T">Stacktype</typeparam> 10 public abstract class EqualsExpression<T> : StatelessExpression 11 { 12 public void Eval(IStack<T> stack, IStack<bool> booleanStack) 11 13 { 12 public void Eval(IStack<T> stack, IStack<bool> booleanStack) 13 { 14 if (stack.Count < 2) 15 return; 14 if (stack.Count < 2) return; 16 15 17 16 var items = stack.Pop(2); 18 17 19 booleanStack.Push(items[0].Equals(items[1])); 20 } 18 booleanStack.Push(items[0].Equals(items[1])); 19 } 20 } 21 22 public class IntegerEqualsExpression : EqualsExpression<long> 23 { 24 protected override string InitStringRepresentation() 25 { 26 return "INTEGER.="; 21 27 } 22 28 23 public class IntegerEqualsExpression : EqualsExpression<long>29 public override void Eval(IPushGpInterpreter interpreter) 24 30 { 25 protected override string InitStringRepresentation() { return "INTEGER.="; } 31 this.Eval(interpreter.IntegerStack, interpreter.BooleanStack); 32 } 33 } 26 34 27 public override void Eval(IInterpreter interpreter) 28 { 29 Eval(interpreter.IntegerStack, interpreter.BooleanStack); 30 } 35 public class FloatEqualsExpression : EqualsExpression<double> 36 { 37 protected override string InitStringRepresentation() 38 { 39 return "FLOAT.="; 31 40 } 32 41 33 public class FloatEqualsExpression : EqualsExpression<double>42 public override void Eval(IPushGpInterpreter interpreter) 34 43 { 35 protected override string InitStringRepresentation() { return "FLOAT.="; } 44 this.Eval(interpreter.FloatStack, interpreter.BooleanStack); 45 } 46 } 36 47 37 public override void Eval(IInterpreter interpreter) 38 { 39 Eval(interpreter.FloatStack, interpreter.BooleanStack); 40 } 48 public class BooleanEqualsExpression : EqualsExpression<bool> 49 { 50 protected override string InitStringRepresentation() 51 { 52 return "BOOLEAN.="; 41 53 } 42 54 43 public class BooleanEqualsExpression : EqualsExpression<bool>55 public override void Eval(IPushGpInterpreter interpreter) 44 56 { 45 protected override string InitStringRepresentation() { return "BOOLEAN.="; } 57 this.Eval(interpreter.BooleanStack, interpreter.BooleanStack); 58 } 59 } 46 60 47 public override void Eval(IInterpreter interpreter) 48 { 49 Eval(interpreter.BooleanStack, interpreter.BooleanStack); 50 } 61 public class NameEqualsExpression : EqualsExpression<string> 62 { 63 protected override string InitStringRepresentation() 64 { 65 return "NAME.="; 51 66 } 52 67 53 public class NameEqualsExpression : EqualsExpression<string>68 public override void Eval(IPushGpInterpreter interpreter) 54 69 { 55 protected override string InitStringRepresentation() { return "NAME.="; } 70 this.Eval(interpreter.NameStack, interpreter.BooleanStack); 71 } 72 } 56 73 57 public override void Eval(IInterpreter interpreter) 58 { 59 Eval(interpreter.NameStack, interpreter.BooleanStack); 60 } 74 public class ExecEqualsExpression : EqualsExpression<Expression> 75 { 76 protected override string InitStringRepresentation() 77 { 78 return "EXEC.="; 61 79 } 62 80 63 public class ExecEqualsExpression : EqualsExpression<Expression>81 public override void Eval(IPushGpInterpreter interpreter) 64 82 { 65 protected override string InitStringRepresentation() { return "EXEC.="; } 83 this.Eval(interpreter.ExecStack, interpreter.BooleanStack); 84 } 85 } 66 86 67 public override void Eval(IInterpreter interpreter) 68 { 69 Eval(interpreter.ExecStack, interpreter.BooleanStack); 70 } 87 public class CodeEqualsExpression : EqualsExpression<Expression> 88 { 89 protected override string InitStringRepresentation() 90 { 91 return "CODE.="; 71 92 } 72 93 73 public class CodeEqualsExpression : EqualsExpression<Expression>94 public override void Eval(IPushGpInterpreter interpreter) 74 95 { 75 protected override string InitStringRepresentation() { return "CODE.="; } 76 77 public override void Eval(IInterpreter interpreter) 78 { 79 Eval(interpreter.CodeStack, interpreter.BooleanStack); 80 } 96 this.Eval(interpreter.CodeStack, interpreter.BooleanStack); 81 97 } 98 } 82 99 }
Note: See TracChangeset
for help on using the changeset viewer.