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_++; 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"; std::cout << "adding operator " << maxOpId_ << "\n";
return maxOpId_; return maxOpId_;

View File

@@ -7,5 +7,9 @@ class GOP_test
public: public:
GOP_test(enzo::nt::OpId opId); GOP_test(enzo::nt::OpId opId);
virtual void cookOp(); 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); outputOp.addInputConnection(newConnection);
} }
nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, std::unique_ptr<enzo::nt::GeometryOpDef> opDef) nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId))
: opId_{opId}, opDef_(std::move(opDef)) : opId_{opId}, opDef_(ctorFunc(opId))
{ {
// TODO: drive by geometry definition // TODO: drive by geometry definition
maxInputs_=4; maxInputs_=4;

View File

@@ -11,7 +11,7 @@ void connectOperators(enzo::nt::OpId inputOpId, unsigned int inputIndex, enzo::n
class GeometryOperator class GeometryOperator
{ {
public: 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 // disable copying
GeometryOperator(const GeometryOperator&) = delete; GeometryOperator(const GeometryOperator&) = delete;