Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
SumEvaluator.cs
5
7{
12 {
13 private IElement sum = null;
14 private double doubleSum = 0;
15 private bool isDouble = true;
16
22 : base(Node.Argument)
23 {
24 }
25
29 public override void RestartEvaluator()
30 {
31 this.sum = null;
32 this.doubleSum = 0;
33 this.isDouble = true;
34 }
35
40 public override void AggregateElement(IElement Element)
41 {
42 if (this.isDouble && Element is DoubleNumber D)
43 this.doubleSum += D.Value;
44 else if (this.sum is null)
45 {
46 this.isDouble = false;
47
48 if (this.sum is null)
49 this.sum = Element;
50 else
51 this.sum = Add.EvaluateAddition(new DoubleNumber(this.doubleSum), Element, this.Node);
52 }
53 else
54 this.sum = Add.EvaluateAddition(this.sum, Element, this.Node);
55 }
56
60 public override IElement GetAggregatedResult()
61 {
62 if (this.isDouble)
63 return new DoubleNumber(this.doubleSum);
64 else
65 return this.sum ?? ObjectValue.Null;
66 }
67 }
68}
Base class for all types of elements.
Definition: Element.cs:14
override void RestartEvaluator()
Restarts the evaluator.
Definition: SumEvaluator.cs:29
override void AggregateElement(IElement Element)
Aggregates one new element.
Definition: SumEvaluator.cs:40
override IElement GetAggregatedResult()
Gets the aggregated result.
Definition: SumEvaluator.cs:60
SumEvaluator(Sum Node)
Sum(v) iterative evaluator
Definition: SumEvaluator.cs:21
An interative evaluator of a function or operation defined by a single ScriptNode.
ScriptNode Node
Node being iteratively evaluated.
static readonly ObjectValue Null
Null value.
Definition: ObjectValue.cs:88
static IElement EvaluateAddition(IElement Left, IElement Right, ScriptNode Node)
Adds two operands.
Definition: Add.cs:65
Basic interface for all types of elements.
Definition: IElement.cs:21