3using System.Threading.Tasks;
60 object x =
Argument1.AssociatedObjectValue;
61 object y =
Argument2.AssociatedObjectValue;
63 if (x is
double xd && y is
double yd)
66 if (x is Complex xz && y is Complex yz)
69 if (x is
bool xb && y is
bool yb)
72 if (x is
string xs && y is
string ys)
82 arg1 = Q1.ToPhysicalQuantity().Magnitude;
92 arg2 = Q2.ToPhysicalQuantity().Magnitude;
106 return Argument2.Encapsulate(Elements,
this);
118 return Argument1.Encapsulate(Elements,
this);
122 ICollection<IElement> Argument1Children =
Argument1.ChildElements;
123 ICollection<IElement> Argument2Children =
Argument2.ChildElements;
125 if (Argument1Children.Count == Argument2Children.Count)
128 IEnumerator<IElement> eArgument1 = Argument1Children.GetEnumerator();
129 IEnumerator<IElement> eArgument2 = Argument2Children.GetEnumerator();
133 while (eArgument1.MoveNext() && eArgument2.MoveNext())
138 eArgument1.Dispose();
139 eArgument2.Dispose();
142 return Argument1.Encapsulate(Elements,
this);
148 foreach (
IElement Argument1Child
in Argument1Children)
152 foreach (
IElement Argument2Child
in Argument2Children)
155 Argument1Result.Add(
Argument2.Encapsulate(Argument2Result,
this));
158 return Argument1.Encapsulate(Argument1Result,
this);
173 object v1 =
Argument1.AssociatedObjectValue;
174 object v2 =
Argument2.AssociatedObjectValue;
265 object x =
Argument1.AssociatedObjectValue;
266 object y =
Argument2.AssociatedObjectValue;
268 if (x is
double xd && y is
double yd)
271 if (x is Complex xz && y is Complex yz)
274 if (x is
bool xb && y is
bool yb)
277 if (x is
string xs && y is
string ys)
287 arg1 = Q1.ToPhysicalQuantity().Magnitude;
297 arg2 = Q2.ToPhysicalQuantity().Magnitude;
311 return Argument2.Encapsulate(Elements,
this);
323 return Argument1.Encapsulate(Elements,
this);
327 ICollection<IElement> Argument1Children =
Argument1.ChildElements;
328 ICollection<IElement> Argument2Children =
Argument2.ChildElements;
330 if (Argument1Children.Count == Argument2Children.Count)
333 IEnumerator<IElement> eArgument1 = Argument1Children.GetEnumerator();
334 IEnumerator<IElement> eArgument2 = Argument2Children.GetEnumerator();
338 while (eArgument1.MoveNext() && eArgument2.MoveNext())
343 eArgument1.Dispose();
344 eArgument2.Dispose();
347 return Argument1.Encapsulate(Elements,
this);
353 foreach (
IElement Argument1Child
in Argument1Children)
357 foreach (
IElement Argument2Child
in Argument2Children)
360 Argument1Result.Add(
Argument2.Encapsulate(Argument2Result,
this));
363 return Argument1.Encapsulate(Argument1Result,
this);
378 object v1 =
Argument1.AssociatedObjectValue;
379 object v2 =
Argument2.AssociatedObjectValue;
A chunked list is a linked list of chunks of objects of type T .
void Add(T Item)
Adds an item to the collection.
Script runtime exception.
Class managing a script expression.
static bool TryConvert(object Value, Type DesiredType, bool AcceptInformationLoss, out object Result)
Tries to convert an object Value to an object of type DesiredType .
static bool UpgradeField(ref IElement E1, ref ISet Set1, ref IElement E2, ref ISet Set2)
Upgrades elements if necessary, to a common field extension, trying to make them compatible....
Base class for funcions of two scalar variables.
virtual Task< IElement > EvaluateScalarAsync(double Argument1, double Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual IElement EvaluateScalar(double Argument1, double Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual IElement EvaluateScalar(Complex Argument1, Complex Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual IElement EvaluateScalar(IElement Argument1, IElement Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual Task< IElement > EvaluateScalarAsync(string Argument1, string Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual Task< IElement > EvaluateScalarAsync(bool Argument1, bool Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual Task< IElement > EvaluateScalarAsync(IElement Argument1, IElement Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
override async Task< IElement > EvaluateAsync(IElement Argument1, IElement Argument2, Variables Variables)
Evaluates the function.
override IElement Evaluate(IElement Argument1, IElement Argument2, Variables Variables)
Evaluates the function.
virtual IElement EvaluateScalar(bool Argument1, bool Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
virtual IElement EvaluateScalar(string Argument1, string Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
abstract bool UpgradeScalarsToSameSet
If scalars should be upgraded to the same set before evaluation.
FunctionTwoScalarVariables(ScriptNode Argument1, ScriptNode Argument2, int Start, int Length, Expression Expression)
Base class for funcions of one scalar variable.
virtual Task< IElement > EvaluateScalarAsync(Complex Argument1, Complex Argument2, Variables Variables)
Evaluates the function on two scalar arguments.
Base class for funcions of one variable.
ScriptNode Argument2
Function argument 2.
ScriptNode Argument1
Function argument 1.
Base class for all nodes in a parsed script tree.
int Length
Length of expression covered by node.
int Start
Start position in script expression.
Basic interface for all types of elements.
Basic interface for all types of sets.
Interface for objects that can be represented as a physical quantity.