From 52e9888b2ab9cfd5e09dd0bfc8f963cdb172eec9 Mon Sep 17 00:00:00 2001 From: parker Date: Fri, 11 Jul 2025 13:53:32 +0100 Subject: [PATCH] refactor: improve opDef type passing --- src/Engine/Network/NetworkManager.cpp | 2 +- src/Engine/Operator/GOP_test.h | 4 ++++ src/Engine/Operator/GeometryOperator.cpp | 4 ++-- src/Engine/Operator/GeometryOperator.h | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Engine/Network/NetworkManager.cpp b/src/Engine/Network/NetworkManager.cpp index 345aa40..ac36091 100644 --- a/src/Engine/Network/NetworkManager.cpp +++ b/src/Engine/Network/NetworkManager.cpp @@ -15,7 +15,7 @@ enzo::nt::OpId enzo::nt::NetworkManager::addOperator() { maxOpId_++; - gopStore_.emplace(maxOpId_, std::make_unique(maxOpId_, std::make_unique(maxOpId_))); + gopStore_.emplace(maxOpId_, std::make_unique(maxOpId_, &GOP_test::ctor)); std::cout << "adding operator " << maxOpId_ << "\n"; return maxOpId_; diff --git a/src/Engine/Operator/GOP_test.h b/src/Engine/Operator/GOP_test.h index 17e4ca2..db8e8ac 100644 --- a/src/Engine/Operator/GOP_test.h +++ b/src/Engine/Operator/GOP_test.h @@ -7,5 +7,9 @@ class GOP_test public: GOP_test(enzo::nt::OpId opId); virtual void cookOp(); + static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId) + { + return new GOP_test(opId); + } }; diff --git a/src/Engine/Operator/GeometryOperator.cpp b/src/Engine/Operator/GeometryOperator.cpp index 4f45d54..350eb5d 100644 --- a/src/Engine/Operator/GeometryOperator.cpp +++ b/src/Engine/Operator/GeometryOperator.cpp @@ -21,8 +21,8 @@ void enzo::nt::connectOperators(enzo::nt::OpId inputOpId, unsigned int inputInde outputOp.addInputConnection(newConnection); } -nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, std::unique_ptr opDef) -: opId_{opId}, opDef_(std::move(opDef)) +nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId)) +: opId_{opId}, opDef_(ctorFunc(opId)) { // TODO: drive by geometry definition maxInputs_=4; diff --git a/src/Engine/Operator/GeometryOperator.h b/src/Engine/Operator/GeometryOperator.h index c605a24..64ee13c 100644 --- a/src/Engine/Operator/GeometryOperator.h +++ b/src/Engine/Operator/GeometryOperator.h @@ -11,7 +11,7 @@ void connectOperators(enzo::nt::OpId inputOpId, unsigned int inputIndex, enzo::n class GeometryOperator { public: - GeometryOperator(enzo::nt::OpId opId, std::unique_ptr opDef); + GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId)); // disable copying GeometryOperator(const GeometryOperator&) = delete;