From 87790e12b25009590e4a2d65c994b703f00a0f84 Mon Sep 17 00:00:00 2001
From: NAUD Maxence <maxence.naud@cea.fr>
Date: Thu, 21 Mar 2024 15:03:18 +0000
Subject: [PATCH] Missing includes in Memorize.hpp

---
 include/aidge/operator/Memorize.hpp | 23 ++++++++++++-----------
 src/operator/Memorize.cpp           | 15 ++++++++++++++-
 2 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/include/aidge/operator/Memorize.hpp b/include/aidge/operator/Memorize.hpp
index 73433aaca..5f32102d2 100644
--- a/include/aidge/operator/Memorize.hpp
+++ b/include/aidge/operator/Memorize.hpp
@@ -12,17 +12,16 @@
 #ifndef AIDGE_CORE_OPERATOR_MEMORIZE_H_
 #define AIDGE_CORE_OPERATOR_MEMORIZE_H_
 
-#include <cassert>
 #include <memory>
 #include <vector>
 
-#include "aidge/utils/Registrar.hpp"
-#include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/backend/OperatorImpl.hpp"
 #include "aidge/data/Tensor.hpp"
 #include "aidge/graph/Node.hpp"
-#include "aidge/utils/Types.h"
+#include "aidge/operator/OperatorTensor.hpp"
+#include "aidge/utils/Registrar.hpp"
 #include "aidge/utils/StaticAttributes.hpp"
+#include "aidge/utils/Types.h"
 
 namespace Aidge {
 enum class MemorizeAttr { ScheduleStep, ForwardStep, EndStep };
@@ -47,14 +46,19 @@ public:
     }
 
     /**
-     * @brief Copy-constructor. Copy the operator attributes and its output tensor(s), but not its input tensors (the new operator has no input associated).
+     * @brief Copy-constructor. Copy the operator attributes and its output tensor(s),
+     * but not its input tensors (the new operator has no input associated).
      * @param op Operator to copy.
      */
     Memorize_Op(const Memorize_Op& op)
         : OperatorTensor(op),
           Attributes_(op)
     {
-        mImpl = op.mImpl ? Registrar<Memorize_Op>::create(op.backend())(*this) : nullptr;
+        if (op.mImpl) {
+            SET_IMPL_MACRO(Memorize_Op, *this, op.backend());
+        } else {
+            mImpl = nullptr;
+        }
         mOutputs[1] = mOutputs[0];
     }
 
@@ -66,10 +70,7 @@ public:
         return std::make_shared<Memorize_Op>(*this);
     }
 
-    void setBackend(const std::string& name, DeviceIdx_t device = 0) override {
-        mImpl = Registrar<Memorize_Op>::create({name})(*this);
-        mOutputs[0]->setBackend(name, device);
-    }
+    void setBackend(const std::string& name, DeviceIdx_t device = 0) override final;
 
     void computeOutputDims() override;
     bool outputDimsForwarded() const override;
@@ -98,4 +99,4 @@ const char *const EnumStrings<Aidge::MemorizeAttr>::data[] = {
 };
 }
 
-#endif /* AIDGE_CORE_OPERATOR_MEMORIZE_H_ */
\ No newline at end of file
+#endif /* AIDGE_CORE_OPERATOR_MEMORIZE_H_ */
diff --git a/src/operator/Memorize.cpp b/src/operator/Memorize.cpp
index 6e34c1a20..6e54a234d 100644
--- a/src/operator/Memorize.cpp
+++ b/src/operator/Memorize.cpp
@@ -9,9 +9,17 @@
  *
  ********************************************************************************/
 
-#include "aidge/backend/OperatorImpl.hpp"
 #include "aidge/operator/Memorize.hpp"
 
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
+#include "aidge/utils/ErrorHandling.hpp"
+#include "aidge/utils/Types.h"
+
 const std::string Aidge::Memorize_Op::Type = "Memorize";
 
 void Aidge::Memorize_Op::computeOutputDims() {
@@ -33,6 +41,11 @@ void Aidge::Memorize_Op::computeOutputDims() {
     }
 }
 
+void Aidge::Memorize_Op::setBackend(const std::string& name, Aidge::DeviceIdx_t device) {
+    mImpl = Registrar<Memorize_Op>::create({name})(*this);
+    mOutputs[0]->setBackend(name, device);
+}
+
 bool Aidge::Memorize_Op::outputDimsForwarded() const {
     // Only check the output dims
     bool forwarded = true;
-- 
GitLab