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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 20 additions & 31 deletions
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

Lines changed: 2 additions & 4 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 7 additions & 7 deletions
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

Lines changed: 2 additions & 2 deletions
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
}

0 commit comments

Comments
 (0)