Skip to content

Commit 3febebc

Browse files
committed
Remove EvaluateSingleInputSlot. Now every node have to call EvaluateInputSlot and it will return a normal or a list value based on the output slot evaluation.
1 parent 79facca commit 3febebc

20 files changed

+78
-91
lines changed

Sources/BuiltInNodes/BI_ArithmeticUINodes.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ void BinaryOperationNode::Initialize ()
3838

3939
NE::ValueConstPtr BinaryOperationNode::Calculate (NE::EvaluationEnv& env) const
4040
{
41-
NE::ValueConstPtr aValue = EvaluateSingleInputSlot (NE::SlotId ("a"), env);
42-
NE::ValueConstPtr bValue = EvaluateSingleInputSlot (NE::SlotId ("b"), env);
41+
NE::ValueConstPtr aValue = EvaluateInputSlot (NE::SlotId ("a"), env);
42+
NE::ValueConstPtr bValue = EvaluateInputSlot (NE::SlotId ("b"), env);
4343
if (!NE::IsComplexType<NE::NumberValue> (aValue) || !NE::IsComplexType<NE::NumberValue> (bValue)) {
4444
return nullptr;
4545
}

Sources/BuiltInNodes/BI_InputUINodes.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -527,9 +527,9 @@ void IntegerRangeNode::Initialize ()
527527

528528
NE::ValueConstPtr IntegerRangeNode::Calculate (NE::EvaluationEnv& env) const
529529
{
530-
NE::ValueConstPtr start = EvaluateSingleInputSlot (NE::SlotId ("start"), env);
531-
NE::ValueConstPtr step = EvaluateSingleInputSlot (NE::SlotId ("step"), env);
532-
NE::ValueConstPtr count = EvaluateSingleInputSlot (NE::SlotId ("count"), env);
530+
NE::ValueConstPtr start = EvaluateInputSlot (NE::SlotId ("start"), env);
531+
NE::ValueConstPtr step = EvaluateInputSlot (NE::SlotId ("step"), env);
532+
NE::ValueConstPtr count = EvaluateInputSlot (NE::SlotId ("count"), env);
533533
if (!NE::IsSingleType<NE::NumberValue> (start) || !NE::IsSingleType<NE::NumberValue> (step) || !NE::IsSingleType<NE::NumberValue> (count)) {
534534
return nullptr;
535535
}
@@ -609,9 +609,9 @@ void DoubleRangeNode::Initialize ()
609609

610610
NE::ValueConstPtr DoubleRangeNode::Calculate (NE::EvaluationEnv& env) const
611611
{
612-
NE::ValueConstPtr start = EvaluateSingleInputSlot (NE::SlotId ("start"), env);
613-
NE::ValueConstPtr step = EvaluateSingleInputSlot (NE::SlotId ("step"), env);
614-
NE::ValueConstPtr count = EvaluateSingleInputSlot (NE::SlotId ("count"), env);
612+
NE::ValueConstPtr start = EvaluateInputSlot (NE::SlotId ("start"), env);
613+
NE::ValueConstPtr step = EvaluateInputSlot (NE::SlotId ("step"), env);
614+
NE::ValueConstPtr count = EvaluateInputSlot (NE::SlotId ("count"), env);
615615
if (!NE::IsSingleType<NE::NumberValue> (start) || !NE::IsSingleType<NE::NumberValue> (step) || !NE::IsSingleType<NE::NumberValue> (count)) {
616616
return nullptr;
617617
}

Sources/BuiltInNodes/BI_ViewerUINodes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void MultiLineViewerNode::Initialize ()
3838

3939
NE::ValueConstPtr MultiLineViewerNode::Calculate (NE::EvaluationEnv& env) const
4040
{
41-
return EvaluateSingleInputSlot (NE::SlotId ("in"), env);
41+
return EvaluateInputSlot (NE::SlotId ("in"), env);
4242
}
4343

4444
void MultiLineViewerNode::RegisterParameters (NUIE::NodeParameterList& parameterList) const

Sources/NodeEngine/NE_Node.cpp

+20-31
Original file line numberDiff line numberDiff line change
@@ -275,31 +275,7 @@ bool Node::RegisterOutputSlot (const OutputSlotPtr& newOutputSlot)
275275
return true;
276276
}
277277

278-
ValueConstPtr Node::EvaluateSingleInputSlot (const SlotId& slotId, EvaluationEnv& env) const
279-
{
280-
if (DBGERROR (!HasInputSlot (slotId))) {
281-
return nullptr;
282-
}
283-
284-
InputSlotConstPtr inputSlot = GetInputSlot (slotId);
285-
if (DBGERROR (inputSlot == nullptr)) {
286-
return nullptr;
287-
}
288-
289-
OutputSlotConnectionMode outputSlotConnectionMode = inputSlot->GetOutputSlotConnectionMode ();
290-
if (DBGERROR (outputSlotConnectionMode == OutputSlotConnectionMode::Multiple)) {
291-
return nullptr;
292-
}
293-
294-
ListValueConstPtr result = EvaluateInputSlot (inputSlot, env);
295-
if (DBGERROR (result->GetSize () != 1)) {
296-
return nullptr;
297-
}
298-
299-
return result->GetValue (0);
300-
}
301-
302-
ListValueConstPtr Node::EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env) const
278+
ValueConstPtr Node::EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env) const
303279
{
304280
if (DBGERROR (!HasInputSlot (slotId))) {
305281
return nullptr;
@@ -323,22 +299,35 @@ void Node::ProcessValue (const ValueConstPtr&, EvaluationEnv&) const
323299

324300
}
325301

326-
ListValueConstPtr Node::EvaluateInputSlot (const InputSlotConstPtr& inputSlot, EvaluationEnv& env) const
302+
ValueConstPtr Node::EvaluateInputSlot (const InputSlotConstPtr& inputSlot, EvaluationEnv& env) const
327303
{
328304
if (DBGERROR (nodeEvaluator == nullptr)) {
329305
return nullptr;
330306
}
331307

332-
ListValuePtr result (new ListValue ());
333308
if (!nodeEvaluator->HasConnectedOutputSlots (inputSlot)) {
334-
result->Push (inputSlot->GetDefaultValue ());
335-
return result;
309+
return inputSlot->GetDefaultValue ();
336310
}
337311

312+
std::vector<OutputSlotConstPtr> connectedOutputSlots;
338313
nodeEvaluator->EnumerateConnectedOutputSlots (inputSlot, [&] (const OutputSlotConstPtr& outputSlot) {
339-
result->Push (outputSlot->Evaluate (env));
314+
connectedOutputSlots.push_back (outputSlot);
340315
});
341-
return result;
316+
317+
OutputSlotConnectionMode outputSlotConnectionMode = inputSlot->GetOutputSlotConnectionMode ();
318+
if (outputSlotConnectionMode == OutputSlotConnectionMode::Single) {
319+
DBGASSERT (connectedOutputSlots.size () == 1);
320+
return connectedOutputSlots[0]->Evaluate (env);
321+
} else if (inputSlot->GetOutputSlotConnectionMode () == OutputSlotConnectionMode::Multiple) {
322+
ListValuePtr result (new ListValue ());
323+
for (const OutputSlotConstPtr& outputSlot : connectedOutputSlots) {
324+
result->Push (outputSlot->Evaluate (env));
325+
}
326+
return result;
327+
}
328+
329+
DBGBREAK ();
330+
return nullptr;
342331
}
343332

344333
NodePtr Node::Clone (const NodeConstPtr& node)

Sources/NodeEngine/NE_Node.hpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,7 @@ class Node : public DynamicSerializable
129129
protected:
130130
virtual bool RegisterInputSlot (const InputSlotPtr& newInputSlot);
131131
virtual bool RegisterOutputSlot (const OutputSlotPtr& newOutputSlot);
132-
133-
ValueConstPtr EvaluateSingleInputSlot (const SlotId& slotId, EvaluationEnv& env) const;
134-
ListValueConstPtr EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env) const;
132+
ValueConstPtr EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env) const;
135133

136134
private:
137135
virtual void Initialize () = 0;
@@ -140,7 +138,7 @@ class Node : public DynamicSerializable
140138
virtual bool IsForceCalculated () const;
141139
virtual void ProcessValue (const ValueConstPtr& value, EvaluationEnv& env) const;
142140

143-
ListValueConstPtr EvaluateInputSlot (const InputSlotConstPtr& inputSlot, EvaluationEnv& env) const;
141+
ValueConstPtr EvaluateInputSlot (const InputSlotConstPtr& inputSlot, EvaluationEnv& env) const;
144142

145143
NodeId nodeId;
146144
NodeEvaluatorConstPtr nodeEvaluator;

Sources/NodeEngineTest/EnableDisableFeatureTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ class TestNode : public SerializableTestUINode
8282

8383
virtual ValueConstPtr Calculate (EvaluationEnv& env) const override
8484
{
85-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("in1"), env);
86-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("in2"), env);
85+
ValueConstPtr a = EvaluateInputSlot (SlotId ("in1"), env);
86+
ValueConstPtr b = EvaluateInputSlot (SlotId ("in2"), env);
8787
int result = IntValue::Get (a) + IntValue::Get (b);
8888
return ValuePtr (new IntValue (result));
8989
}

Sources/NodeEngineTest/ListValueNodeTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class ListSummer : public SerializableTestNode
7272

7373
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
7474
{
75-
NE::ValueConstPtr val = EvaluateSingleInputSlot (SlotId ("in"), env);
75+
NE::ValueConstPtr val = EvaluateInputSlot (SlotId ("in"), env);
7676
int result = 0;
7777
if (IsComplexType<NumberValue> (val)) {
7878
NE::FlatEnumerate (val, [&] (const NE::ValueConstPtr& value) {
@@ -94,7 +94,7 @@ TEST (ListValueNodeTest_Node)
9494

9595
{
9696
ValueConstPtr result = listMakerNode->Evaluate (NE::EmptyEvaluationEnv);
97-
ASSERT (Value::IsType<ListValue> (result));
97+
ASSERT (result == nullptr);
9898
}
9999

100100
{

Sources/NodeEngineTest/MultiInputSlotTest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class FlattenerNode : public SerializableTestNode
7777

7878
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
7979
{
80-
ListValueConstPtr val = EvaluateInputSlot (SlotId ("in"), env);
80+
ValueConstPtr val = EvaluateInputSlot (SlotId ("in"), env);
8181
ListValuePtr result (new ListValue ());
8282
FlatEnumerate (val, [&] (const ValueConstPtr& flatVal) {
8383
result->Push (flatVal->Clone ());

Sources/NodeEngineTest/NodeConnectionTest.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ class AdditionNode : public SerializableTestNode
143143

144144
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
145145
{
146-
ValueConstPtr firstResult = EvaluateSingleInputSlot (SlotId ("first"), env);
147-
ValueConstPtr secondResult = EvaluateSingleInputSlot (SlotId ("second"), env);
146+
ValueConstPtr firstResult = EvaluateInputSlot (SlotId ("first"), env);
147+
ValueConstPtr secondResult = EvaluateInputSlot (SlotId ("second"), env);
148148
return ValuePtr (new IntValue (IntValue::Get (firstResult) + IntValue::Get (secondResult)));
149149
}
150150
};
@@ -166,9 +166,9 @@ class MultiAdditionNode : public SerializableTestNode
166166

167167
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
168168
{
169-
ListValueConstPtr result = EvaluateInputSlot (SlotId ("in"), env);
169+
ValueConstPtr result = EvaluateInputSlot (SlotId ("in"), env);
170170
int sum = 0;
171-
result->Enumerate ([&] (const ValueConstPtr& val) {
171+
FlatEnumerate (result, [&] (const ValueConstPtr& val) {
172172
sum += IntValue::Get (val);
173173
});
174174
return ValuePtr (new IntValue (sum));
@@ -193,8 +193,8 @@ class DisabledAdditionNode : public SerializableTestNode
193193

194194
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
195195
{
196-
ValueConstPtr firstResult = EvaluateSingleInputSlot (SlotId ("first"), env);
197-
ValueConstPtr secondResult = EvaluateSingleInputSlot (SlotId ("second"), env);
196+
ValueConstPtr firstResult = EvaluateInputSlot (SlotId ("first"), env);
197+
ValueConstPtr secondResult = EvaluateInputSlot (SlotId ("second"), env);
198198
return ValuePtr (new IntValue (IntValue::Get (firstResult) + IntValue::Get (secondResult)));
199199
}
200200
};
@@ -217,7 +217,7 @@ class AdderInputOutputNode : public SerializableTestNode
217217

218218
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
219219
{
220-
ValueConstPtr inputVal = EvaluateSingleInputSlot (SlotId ("in"), env);
220+
ValueConstPtr inputVal = EvaluateInputSlot (SlotId ("in"), env);
221221
return ValuePtr (new IntValue (IntValue::Get (inputVal) + toAdd));
222222
}
223223

Sources/NodeEngineTest/NodeManagerManualUpdateTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class IncreaseNode : public SerializableTestNode
6262

6363
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
6464
{
65-
ValueConstPtr in = EvaluateSingleInputSlot (SlotId ("in"), env);
65+
ValueConstPtr in = EvaluateInputSlot (SlotId ("in"), env);
6666
return ValuePtr (new IntValue (IntValue::Get (in) + 1));
6767
}
6868
};
@@ -85,7 +85,7 @@ class IncreaseForceCalculatedNode : public SerializableTestNode
8585

8686
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
8787
{
88-
ValueConstPtr in = EvaluateSingleInputSlot (SlotId ("in"), env);
88+
ValueConstPtr in = EvaluateInputSlot (SlotId ("in"), env);
8989
if (in == nullptr) {
9090
return nullptr;
9191
}

Sources/NodeEngineTest/NodeManagerMergeTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class TestNode : public Node
4949

5050
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
5151
{
52-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("a"), env);
53-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("b"), env);
52+
ValueConstPtr a = EvaluateInputSlot (SlotId ("a"), env);
53+
ValueConstPtr b = EvaluateInputSlot (SlotId ("b"), env);
5454
int result = IntValue::Get (a) + IntValue::Get (b);
5555
return ValuePtr (new IntValue (result));
5656
}

Sources/NodeEngineTest/NodeManagerSerializationTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ class TestNode : public Node
4343

4444
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
4545
{
46-
ValueConstPtr firstResult = EvaluateSingleInputSlot (SlotId ("a"), env);
47-
ValueConstPtr secondResult = EvaluateSingleInputSlot (SlotId ("b"), env);
46+
ValueConstPtr firstResult = EvaluateInputSlot (SlotId ("a"), env);
47+
ValueConstPtr secondResult = EvaluateInputSlot (SlotId ("b"), env);
4848
return ValueConstPtr (new IntValue (val + IntValue::Get (firstResult) + IntValue::Get (secondResult)));
4949
}
5050

Sources/NodeEngineTest/NodeRecalculationTest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class TestNode : public SerializableTestNode
2929
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
3030
{
3131
calculationCounter++;
32-
ValueConstPtr in = EvaluateSingleInputSlot (SlotId ("in"), env);
32+
ValueConstPtr in = EvaluateInputSlot (SlotId ("in"), env);
3333
return ValuePtr (new IntValue (IntValue::Get (in) + 1));
3434
}
3535

Sources/NodeEngineTest/NodeValueCacheTest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class InputOutputNode : public SerializableTestNode
5151
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
5252
{
5353
calculationCount++;
54-
ValueConstPtr in = EvaluateSingleInputSlot (SlotId ("in"), env);
54+
ValueConstPtr in = EvaluateInputSlot (SlotId ("in"), env);
5555
return ValuePtr (new IntValue (IntValue::Get (in) + 1));
5656
}
5757

Sources/NodeEngineTest/NodeValueCombinationTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class TestNode : public SerializableTestNode
3333

3434
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
3535
{
36-
NE::ValueConstPtr a = EvaluateSingleInputSlot (NE::SlotId ("a"), env);
37-
NE::ValueConstPtr b = EvaluateSingleInputSlot (NE::SlotId ("b"), env);
36+
NE::ValueConstPtr a = EvaluateInputSlot (NE::SlotId ("a"), env);
37+
NE::ValueConstPtr b = EvaluateInputSlot (NE::SlotId ("b"), env);
3838
if (!NE::IsComplexType<NE::IntValue> (a) || !NE::IsComplexType<NE::IntValue> (b)) {
3939
return nullptr;
4040
}

Sources/NodeEngineTest/NumberTypeNodeTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ class NumberAdderNode : public SerializableTestNode
7878

7979
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
8080
{
81-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("first"), env);
82-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("second"), env);
81+
ValueConstPtr a = EvaluateInputSlot (SlotId ("first"), env);
82+
ValueConstPtr b = EvaluateInputSlot (SlotId ("second"), env);
8383
double result = NumberValue::ToDouble (a) + NumberValue::ToDouble (b);
8484
return ValuePtr (new DoubleValue (result));
8585
}

Sources/NodeEngineTest/TypeHandlingTest.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ class OutputNodeA : public SerializableTestNode
204204

205205
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
206206
{
207-
return EvaluateSingleInputSlot (SlotId ("inA"), env);
207+
return EvaluateInputSlot (SlotId ("inA"), env);
208208
}
209209
};
210210

@@ -234,7 +234,7 @@ class OutputNodeB : public SerializableTestNode
234234

235235
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
236236
{
237-
return EvaluateSingleInputSlot (SlotId ("inB"), env);
237+
return EvaluateInputSlot (SlotId ("inB"), env);
238238
}
239239
};
240240

Sources/NodeEngineTest/UINodeTest.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ class TestNode : public SerializableTestUINode
3434

3535
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
3636
{
37-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("in1"), env);
38-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("in2"), env);
37+
ValueConstPtr a = EvaluateInputSlot (SlotId ("in1"), env);
38+
ValueConstPtr b = EvaluateInputSlot (SlotId ("in2"), env);
3939
int result = IntValue::Get (a) + IntValue::Get (b);
4040
return ValuePtr (new IntValue (result));
4141
}
@@ -80,8 +80,8 @@ class TestNode2 : public SerializableTestUINode
8080

8181
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
8282
{
83-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("in1"), env);
84-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("in2"), env);
83+
ValueConstPtr a = EvaluateInputSlot (SlotId ("in1"), env);
84+
ValueConstPtr b = EvaluateInputSlot (SlotId ("in2"), env);
8585
int result = IntValue::Get (a) + IntValue::Get (b);
8686
return ValuePtr (new IntValue (result));
8787
}
@@ -134,8 +134,8 @@ class EnumerationParamTestNode : public SerializableTestUINode
134134

135135
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
136136
{
137-
ValueConstPtr a = EvaluateSingleInputSlot (SlotId ("in1"), env);
138-
ValueConstPtr b = EvaluateSingleInputSlot (SlotId ("in2"), env);
137+
ValueConstPtr a = EvaluateInputSlot (SlotId ("in1"), env);
138+
ValueConstPtr b = EvaluateInputSlot (SlotId ("in2"), env);
139139
int result = IntValue::Get (a) + IntValue::Get (b);
140140
return ValuePtr (new IntValue (result));
141141
}

Sources/NodeEngineTest/VisualTestFramework.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class IncreaseNode : public BI::BasicUINode
3737

3838
NE::ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
3939
{
40-
NE::ValueConstPtr inValue = EvaluateSingleInputSlot (NE::SlotId ("in"), env);
40+
NE::ValueConstPtr inValue = EvaluateInputSlot (NE::SlotId ("in"), env);
4141
if (!IsSingleType<NE::IntValue> (inValue)) {
4242
return nullptr;
4343
}

0 commit comments

Comments
 (0)