private void DoOr(Stack <Datum> stack) { BooleanDatum b = stack.Pop() as BooleanDatum; BooleanDatum a = stack.Pop() as BooleanDatum; BooleanDatum result; if (a == null) { if (b == null) { result = new BooleanDatum(false); } else { result = new BooleanDatum(b.value); } } else if (b == null) { result = new BooleanDatum(a.value); } else { result = new BooleanDatum(a.value || b.value); } stack.Push(result); }
private void DoNotEqual(Stack <Datum> stack) { Datum a = stack.Pop(); Datum b = stack.Pop(); BooleanDatum result = new BooleanDatum(!a.Equals(b)); stack.Push(result); }
public override bool Equals(object obj) { BooleanDatum other = obj as BooleanDatum; if (other == null) { return(false); } return(value == other.value); }
private void DoLessThanOrEquals(Stack <Datum> stack) { NumericDatum b = stack.Pop() as NumericDatum; NumericDatum a = stack.Pop() as NumericDatum; BooleanDatum result; if (a == null) { result = new BooleanDatum(true); } else if (b == null) { result = new BooleanDatum(false); } else { result = new BooleanDatum(a.number <= b.number); } stack.Push(result); }