public NumberConst GetResult(IVariableLinker vl) { switch (OP) { case Operator.Plus: return(A.GetResult(vl) + B.GetResult(vl)); case Operator.Minus: return(A.GetResult(vl) - B.GetResult(vl)); case Operator.Multiply: return(A.GetResult(vl) * B.GetResult(vl)); case Operator.Divide: return(A.GetResult(vl) / B.GetResult(vl)); case Operator.ExactlyDivide: return(B.GetResult(vl).ReverseExactlyDivide(A.GetResult(vl))); case Operator.Remainder: return(A.GetResult(vl) % B.GetResult(vl)); case Operator.PlusOne: return(A.GetResult(vl) + new LongConst(1)); case Operator.MinusOne: return(A.GetResult(vl) - new LongConst(1)); default: throw new ArithmeticException(); } }
public BooleanConst GetResult(IVariableLinker vl) { switch (OP) { case Operator.EqualTo: return(A.GetObject(vl) == B.GetObject(vl)); case Operator.NotEqualTo: return(A.GetObject(vl) != B.GetObject(vl)); case Operator.GreaterThan: return(A.GetObject(vl) > B.GetObject(vl)); case Operator.GreaterThanOrEqualTo: return(A.GetObject(vl) >= B.GetObject(vl)); case Operator.LessThan: return(A.GetObject(vl) < B.GetObject(vl)); case Operator.LessThanOrEqualTo: return(A.GetObject(vl) <= B.GetObject(vl)); default: throw new ArithmeticException(); } }
public override List <ObjectConst> Random(IVariableLinker vl) { List <ObjectConst> result = new List <ObjectConst>(); for (int i = 0; i < Units.Count; i++) { result.Add(Units[i].Random(vl)); } return(result); }
public StringConst GetResult(IVariableLinker vl) { switch (OP) { case Operator.Concat: return(A.GetResult(vl) + B.GetResult(vl)); default: throw new ArithmeticException(); } }
public override int Validate(List <ObjectConst> thing, int startIndex, IVariableLinker vl) { if (startIndex + Units.Count > thing.Count) { return(-1); } for (int i = 0; i < Units.Count; i++) { if (!Units[i].Compare(thing[startIndex + i], vl)) { return(-1); } } return(startIndex + Units.Count); }
public BooleanConst GetResult(IVariableLinker vl) { switch (OP) { case Operator.Or: return(A.GetResult(vl) || B.GetResult(vl)); case Operator.And: return(A.GetResult(vl) && B.GetResult(vl)); case Operator.Not: return(!A.GetResult(vl)); default: throw new ArithmeticException(); } }
public override ObjectConst GetObject(IVariableLinker vl) => GetResult(vl);
public abstract ObjectConst Random(IVariableLinker vl = null);
public abstract bool Compare(ObjectConst b, IVariableLinker vl = null);
public override NumberConst GetResult(IVariableLinker vl) => vl.GetValue(this) as NumberConst;
public abstract ObjectConst GetObject(IVariableLinker vl);
public abstract List <ObjectConst> Random(IVariableLinker vl = null);
public abstract int Validate(List <ObjectConst> thing, int startIndex = 0, IVariableLinker vl = null);
public abstract NumberConst GetResult(IVariableLinker vl);
public StringConst GetResult(IVariableLinker vl) => vl.GetValue(this) as StringConst;
public BooleanConst GetResult(IVariableLinker vl) => vl.GetValue(this) as BooleanConst;