From 5a64a1755a72b1281c940f49554d0241ad1b19bb Mon Sep 17 00:00:00 2001 From: nojhan Date: Wed, 22 Apr 2020 07:55:56 +0200 Subject: [PATCH] feat: encoding accessor in foundry & less constrained forge setup Allow forge setup to be called on nullptr and have an empty constructor setup. Useful to build up forge vectors in one pass instead of add/setup loops. --- eo/src/eoAlgoFoundry.h | 5 +++++ eo/src/eoForge.h | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/eo/src/eoAlgoFoundry.h b/eo/src/eoAlgoFoundry.h index 19a3a4692..b9e4eb638 100644 --- a/eo/src/eoAlgoFoundry.h +++ b/eo/src/eoAlgoFoundry.h @@ -62,6 +62,11 @@ class eoAlgoFoundry : public eoAlgo return _size; } + std::vector encoding() const + { + return _encoding; + } + protected: const size_t _size; std::vector _encoding; diff --git a/eo/src/eoForge.h b/eo/src/eoForge.h index ac4c6123e..f56666991 100644 --- a/eo/src/eoForge.h +++ b/eo/src/eoForge.h @@ -265,12 +265,23 @@ class eoForgeVector : public std::vector*> template void setup(size_t index, Args... args) { - assert(this->at(index) != nullptr); - delete this->at(index); + assert(index < this->size()); + delete this->at(index); // Silent on nullptr. auto pfo = new eoForgeOperator(args...); this->at(index) = pfo; } + /** Specialization for empty constructors. + */ + template + void setup(size_t index) + { + assert(index < this->size()); + delete this->at(index); + auto pfo = new eoForgeOperator; + this->at(index) = pfo; + } + /** Instanciate the operator managed at the given index. */ Itf& instanciate(size_t index)