refactor: improve opDef type passing

This commit is contained in:
parker
2025-07-11 13:53:32 +01:00
parent 952168d875
commit 52e9888b2a
4 changed files with 8 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ enzo::nt::OpId enzo::nt::NetworkManager::addOperator()
{
maxOpId_++;
gopStore_.emplace(maxOpId_, std::make_unique<GeometryOperator>(maxOpId_, std::make_unique<GOP_test>(maxOpId_)));
gopStore_.emplace(maxOpId_, std::make_unique<GeometryOperator>(maxOpId_, &GOP_test::ctor));
std::cout << "adding operator " << maxOpId_ << "\n";
return maxOpId_;

View File

@@ -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);
}
};

View File

@@ -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<enzo::nt::GeometryOpDef> 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;

View File

@@ -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<enzo::nt::GeometryOpDef> opDef);
GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId));
// disable copying
GeometryOperator(const GeometryOperator&) = delete;