aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Workflow/Nodes/NumericNodes.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-06-27 18:27:13 -0700
committerrtk0c <[email protected]>2022-06-27 18:27:13 -0700
commit8f0dda5eab181b0f14f2652b4e984aaaae3f258c (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/src/Model/Workflow/Nodes/NumericNodes.cpp
parentfad6a88a13ab1f888ab25ad0aae19c1d63aa0623 (diff)
Start from a clean slate
Diffstat (limited to 'core/src/Model/Workflow/Nodes/NumericNodes.cpp')
-rw-r--r--core/src/Model/Workflow/Nodes/NumericNodes.cpp94
1 files changed, 0 insertions, 94 deletions
diff --git a/core/src/Model/Workflow/Nodes/NumericNodes.cpp b/core/src/Model/Workflow/Nodes/NumericNodes.cpp
deleted file mode 100644
index 3a81979..0000000
--- a/core/src/Model/Workflow/Nodes/NumericNodes.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "NumericNodes.hpp"
-
-#include "Model/Workflow/Evaluation.hpp"
-#include "Model/Workflow/Values/Basic.hpp"
-#include "Utils/I18n.hpp"
-#include "Utils/Macros.hpp"
-#include "Utils/RTTI.hpp"
-
-#include <cassert>
-#include <utility>
-
-WorkflowNode::Kind NumericOperationNode::OperationTypeToNodeKind(OperationType type)
-{
- switch (type) {
- case Addition: return KD_NumericAddition;
- case Subtraction: return KD_NumericSubtraction;
- case Multiplication: return KD_NumericMultiplication;
- case Division: return KD_NumericDivision;
- default: return InvalidKind;
- }
-}
-
-NumericOperationNode::OperationType NumericOperationNode::NodeKindToOperationType(Kind kind)
-{
- switch (kind) {
- case KD_NumericAddition: return Addition;
- case KD_NumericSubtraction: return Subtraction;
- case KD_NumericMultiplication: return Multiplication;
- case KD_NumericDivision: return Division;
- default: return InvalidType;
- }
-}
-
-bool NumericOperationNode::IsInstance(const WorkflowNode* node)
-{
- return node->GetKind() >= KD_NumericAddition && node->GetKind() <= KD_NumericDivision;
-}
-
-NumericOperationNode::NumericOperationNode(OperationType type)
- : WorkflowNode(OperationTypeToNodeKind(type), false)
- , mType{ type }
-{
- mInputs.resize(2);
- mInputs[0].MatchingType = BaseValue::KD_Numeric;
- mInputs[1].MatchingType = BaseValue::KD_Numeric;
-
- mOutputs.resize(1);
- mOutputs[0].MatchingType = BaseValue::KD_Numeric;
-}
-
-void NumericOperationNode::Evaluate(WorkflowEvaluationContext& ctx)
-{
- auto lhsVal = dyn_cast<NumericValue>(ctx.GetConnectionValue(mInputs[0]));
- if (!lhsVal) return;
- double lhs = lhsVal->GetValue();
-
- auto rhsVal = dyn_cast<NumericValue>(ctx.GetConnectionValue(mInputs[1]));
- if (!rhsVal) return;
- double rhs = rhsVal->GetValue();
-
- double res;
- switch (mType) {
- case Addition: res = lhs + rhs; break;
- case Subtraction: res = lhs - rhs; break;
- case Multiplication: res = lhs * rhs; break;
- case Division: {
- if (rhs == 0.0) {
- ctx.ReportError(I18N_TEXT("Error: division by 0", L10N_WORKFLOW_RTERROR_DIV_BY_0), *this);
- return;
- }
- res = lhs / rhs;
- } break;
-
- default: return;
- }
-
- auto value = std::make_unique<NumericValue>();
- value->SetValue(res);
- ctx.SetConnectionValue(mOutputs[0], std::move(value));
-}
-
-bool NumericExpressionNode::IsInstance(const WorkflowNode* node)
-{
- return node->GetKind() == KD_NumericExpression;
-}
-
-NumericExpressionNode::NumericExpressionNode()
- : WorkflowNode(KD_NumericExpression, false)
-{
-}
-
-void NumericExpressionNode::Evaluate(WorkflowEvaluationContext& ctx)
-{
-}