[coco] Remove Bag-to-BagInfo link (#1519)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 17 Sep 2018 05:50:37 +0000 (14:50 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 17 Sep 2018 05:50:37 +0000 (14:50 +0900)
This commit removes all the use of Bag-to-BagInfo link from coco IR
codebase.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
40 files changed:
contrib/coco/core/include/coco/IR/BagManager.h
contrib/coco/core/include/coco/IR/FeatureObject.h
contrib/coco/core/include/coco/IR/Input.h
contrib/coco/core/include/coco/IR/InputManager.h
contrib/coco/core/include/coco/IR/InstrManager.h
contrib/coco/core/include/coco/IR/KernelObject.h
contrib/coco/core/include/coco/IR/ObjectManager.h
contrib/coco/core/include/coco/IR/Output.h
contrib/coco/core/include/coco/IR/OutputManager.h
contrib/coco/core/include/coco/IR/Read.h
contrib/coco/core/include/coco/IR/Shuffle.h
contrib/coco/core/include/coco/IR/Update.h
contrib/coco/core/src/IR/BagManager.cpp
contrib/coco/core/src/IR/BagManager.test.cpp
contrib/coco/core/src/IR/Conv2D.test.cpp
contrib/coco/core/src/IR/Def.test.cpp
contrib/coco/core/src/IR/Dep.test.cpp
contrib/coco/core/src/IR/FeatureObject.cpp
contrib/coco/core/src/IR/FeatureObject.test.cpp
contrib/coco/core/src/IR/Input.cpp
contrib/coco/core/src/IR/Input.test.cpp
contrib/coco/core/src/IR/InputManager.cpp
contrib/coco/core/src/IR/InputManager.test.cpp
contrib/coco/core/src/IR/Instr.test.cpp
contrib/coco/core/src/IR/InstrManager.cpp
contrib/coco/core/src/IR/InstrManager.test.cpp
contrib/coco/core/src/IR/KernelObject.cpp
contrib/coco/core/src/IR/KernelObject.test.cpp
contrib/coco/core/src/IR/Module.cpp
contrib/coco/core/src/IR/Object.test.cpp
contrib/coco/core/src/IR/ObjectManager.cpp
contrib/coco/core/src/IR/ObjectManager.test.cpp
contrib/coco/core/src/IR/Output.cpp
contrib/coco/core/src/IR/Output.test.cpp
contrib/coco/core/src/IR/OutputManager.cpp
contrib/coco/core/src/IR/OutputManager.test.cpp
contrib/coco/core/src/IR/Read.test.cpp
contrib/coco/core/src/IR/Shuffle.test.cpp
contrib/coco/core/src/IR/Update.test.cpp
contrib/coco/core/src/IR/Use.test.cpp

index 81851bd..f6bf9a6 100644 (file)
@@ -12,10 +12,7 @@ namespace coco
 class BagManager : public PtrManager<Bag>
 {
 public:
-  BagManager(PtrLink<Bag, BagInfo> *link) : _link{link}
-  {
-    // DO NOTHING
-  }
+  BagManager() = default;
 
 public:
   Bag *create(uint32_t size);
@@ -25,9 +22,6 @@ public:
   //
   // NOTE A Bag SHOULD BE detached from IR before destruction
   void destroy(Bag *b);
-
-private:
-  PtrLink<Bag, BagInfo> *const _link;
 };
 
 } // namespace coco
index 0beba33..911a002 100644 (file)
@@ -19,8 +19,7 @@ namespace coco
 class FeatureObject final : public Object
 {
 public:
-  explicit FeatureObject(std::unique_ptr<FeatureObjectInfo> &&info,
-                         const PtrLink<Bag, BagInfo> *link);
+  explicit FeatureObject(std::unique_ptr<FeatureObjectInfo> &&info);
 
 public:
   ~FeatureObject();
index 9c9a740..f134f2a 100644 (file)
@@ -17,9 +17,7 @@ namespace coco
 class Input final : public Arg
 {
 public:
-  // NOTE bag_link is no longer used
-  // TODO Do NOT take bag_link as an argument
-  Input(const PtrLink<Bag, BagInfo> *bag_link, const nncc::core::ADT::tensor::Shape &shape);
+  Input(const nncc::core::ADT::tensor::Shape &shape);
 
 private:
   void onTake(Bag *) override;
index 4f44420..3506f8a 100644 (file)
@@ -12,16 +12,10 @@ namespace coco
 struct InputManager final : public PtrManager<Input>
 {
 public:
-  InputManager(const PtrLink<Bag, BagInfo> *bag_link) : _bag_link{bag_link}
-  {
-    // DO NOTHING
-  }
+  InputManager() = default;
 
 public:
   Input *create(const nncc::core::ADT::tensor::Shape &);
-
-private:
-  const PtrLink<Bag, BagInfo> *const _bag_link;
 };
 
 } // namespace coco
index 5dbe54d..902fbcf 100644 (file)
@@ -23,8 +23,8 @@ class InstrManager final : public PtrManager<Instr>
 {
 public:
   InstrManager(PtrLink<Op, Instr> *op_link, const PtrLink<Instr, Block> *instr_link,
-               const PtrLink<Object, ObjectInfo> *obj_link, const PtrLink<Bag, BagInfo> *bag_link)
-      : _op_link{op_link}, _instr_link{instr_link}, _obj_link{obj_link}, _bag_link{bag_link}
+               const PtrLink<Object, ObjectInfo> *obj_link)
+      : _op_link{op_link}, _instr_link{instr_link}, _obj_link{obj_link}
   {
     // DO NOTHING
   }
@@ -44,7 +44,6 @@ private:
   PtrLink<Op, Instr> *const _op_link;
   const PtrLink<Instr, Block> *const _instr_link;
   const PtrLink<Object, ObjectInfo> *const _obj_link;
-  const PtrLink<Bag, BagInfo> *const _bag_link;
 };
 
 } // namespace coco
index 88c9f2a..6de7c59 100644 (file)
@@ -19,8 +19,7 @@ namespace coco
 class KernelObject final : public Object
 {
 public:
-  explicit KernelObject(std::unique_ptr<KernelObjectInfo> &&info,
-                        const PtrLink<Bag, BagInfo> *link);
+  explicit KernelObject(std::unique_ptr<KernelObjectInfo> &&info);
 
 public:
   virtual ~KernelObject();
index ccf4bba..e02c2ca 100644 (file)
@@ -18,8 +18,7 @@ namespace coco
 class ObjectManager : public PtrManager<Object>
 {
 public:
-  ObjectManager(PtrLink<Object, ObjectInfo> *obj_link, const PtrLink<Bag, BagInfo> *link)
-      : _obj_link{obj_link}, _link{link}
+  ObjectManager(PtrLink<Object, ObjectInfo> *obj_link) : _obj_link{obj_link}
   {
     // DO NOTHING
   }
@@ -30,7 +29,6 @@ public:
 
 private:
   PtrLink<Object, ObjectInfo> *const _obj_link;
-  const PtrLink<Bag, BagInfo> *const _link;
 };
 
 } // namespace coco
index 336a439..a2e1e16 100644 (file)
@@ -17,9 +17,7 @@ namespace coco
 class Output final : public Arg
 {
 public:
-  // NOTE bag_link is no longer used
-  // TODO Do NOT take bag_link as an argument
-  Output(const PtrLink<Bag, BagInfo> *bag_link, const nncc::core::ADT::tensor::Shape &shape);
+  Output(const nncc::core::ADT::tensor::Shape &shape);
 
 private:
   void onTake(Bag *) override;
index bf5743e..89c2ef4 100644 (file)
@@ -12,16 +12,10 @@ namespace coco
 struct OutputManager final : public PtrManager<Output>
 {
 public:
-  OutputManager(const PtrLink<Bag, BagInfo> *bag_link) : _bag_link{bag_link}
-  {
-    // DO NOTHING
-  }
+  OutputManager() = default;
 
 public:
   Output *create(const nncc::core::ADT::tensor::Shape &);
-
-private:
-  const PtrLink<Bag, BagInfo> *const _bag_link;
 };
 
 } // namespace coco
index f7bc24c..01df36a 100644 (file)
@@ -15,9 +15,7 @@ namespace coco
 class Read final
 {
 public:
-  // NOTE bag_link is unnecessary
-  // TODO Rewrite constructor
-  Read(const PtrLink<Bag, BagInfo> *, Bag::Reader *r)
+  Read(Bag::Reader *r)
   {
     // Initialize link and reader
     reader(r);
index e6a5b9b..fe5eeb4 100644 (file)
@@ -19,8 +19,7 @@ class Shuffle final : public Instr, public Bag::Reader, public Bag::Updater
 {
 public:
   // TODO Update constructor interface
-  Shuffle(const PtrLink<Instr, Block> *, const PtrLink<Bag, BagInfo> *bag_link)
-      : _from{bag_link, this}, _into{bag_link, this}
+  Shuffle(const PtrLink<Instr, Block> *) : _from{this}, _into{this}
   {
     // DO NOTHING
   }
index c91560e..6870ae5 100644 (file)
@@ -15,9 +15,7 @@ namespace coco
 class Update final
 {
 public:
-  // NOTE Bag-to-BagInfo link is no longer necessary
-  // TODO Rewrite constructor
-  Update(const PtrLink<Bag, BagInfo> *, Bag::Updater *u) { updater(u); }
+  Update(Bag::Updater *u) { updater(u); }
 
 public:
   ~Update();
index fce9344..9999a50 100644 (file)
@@ -14,8 +14,6 @@ Bag *BagManager::create(uint32_t size)
   auto bag = nncc::foundation::make_unique<Bag>(std::move(info));
   auto bag_ptr = bag.get();
 
-  _link->set(bag_ptr, info_ptr);
-
   return take(std::move(bag));
 }
 
index 43fa616..4294ff0 100644 (file)
@@ -5,25 +5,16 @@
 
 TEST(IR_BAG_MANAGER, create)
 {
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::BagManager mgr{&bag_link};
+  coco::BagManager mgr;
 
   auto bag = mgr.create(3);
 
   ASSERT_EQ(bag->size(), 3);
-
-  // BagManager SHOULD update Bag->BagInfo link properly
-  ASSERT_NE(bag_link.find(bag), nullptr);
-
-  auto info = bag_link.find(bag);
-
-  ASSERT_EQ(info->size(), 3);
 }
 
 TEST(IR_BAG_MANAGER, destruct)
 {
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::BagManager mgr{&bag_link};
+  coco::BagManager mgr;
 
   auto b = mgr.create(3);
   mgr.destroy(b);
index feacb2d..86d81c9 100644 (file)
@@ -25,12 +25,11 @@ protected:
   }
 
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
   const coco::PtrLink<coco::Op, coco::Instr> op_link;
 
 protected:
-  coco::ObjectManager obj_mgr{&obj_link, &bag_link};
+  coco::ObjectManager obj_mgr{&obj_link};
 
 private:
   std::vector<std::unique_ptr<coco::Conv2D>> _allocated;
index ac821ce..7abce04 100644 (file)
@@ -17,10 +17,9 @@ namespace
 class DefTest : public ::testing::Test
 {
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
 
-  coco::ObjectManager obj_mgr{&obj_link, &bag_link};
+  coco::ObjectManager obj_mgr{&obj_link};
 };
 } // namespace
 
index ce9097f..95d39a7 100644 (file)
@@ -16,11 +16,10 @@ namespace
 class DepTest : public ::testing::Test
 {
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
 
-  coco::BagManager bag_mgr{&bag_link};
-  coco::ObjectManager obj_mgr{&obj_link, &bag_link};
+  coco::BagManager bag_mgr;
+  coco::ObjectManager obj_mgr{&obj_link};
 };
 } // namespace
 
index f097858..22445a3 100644 (file)
@@ -13,9 +13,7 @@ static nncc::core::ADT::feature::CHWLayout l{};
 namespace coco
 {
 
-FeatureObject::FeatureObject(std::unique_ptr<FeatureObjectInfo> &&info,
-                             const PtrLink<Bag, BagInfo> *link)
-    : _info(std::move(info))
+FeatureObject::FeatureObject(std::unique_ptr<FeatureObjectInfo> &&info) : _info(std::move(info))
 {
   _map.resize(nncc::core::ADT::feature::num_elements(shape()));
 }
index 2139f19..885244f 100644 (file)
@@ -19,15 +19,12 @@ protected:
   coco::FeatureObject *allocate(const feature::Shape &shape)
   {
     auto info = make_unique<coco::FeatureObjectInfo>(shape);
-    auto o = new coco::FeatureObject{std::move(info), &_bag_link};
+    auto o = new coco::FeatureObject{std::move(info)};
     _allocated.emplace_back(o);
     return o;
   }
 
 private:
-  coco::PtrLink<coco::Bag, coco::BagInfo> _bag_link;
-
-private:
   std::vector<std::unique_ptr<coco::FeatureObject>> _allocated;
 };
 } // namespace
index adf0feb..dff6962 100644 (file)
@@ -6,8 +6,7 @@
 namespace coco
 {
 
-Input::Input(const PtrLink<Bag, BagInfo> *, const nncc::core::ADT::tensor::Shape &shape)
-    : Arg{shape}
+Input::Input(const nncc::core::ADT::tensor::Shape &shape) : Arg{shape}
 {
   // DO NOT?HING
 }
index bce5e22..3f64404 100644 (file)
@@ -11,10 +11,8 @@ using nncc::core::ADT::tensor::IndexEnumerator;
 
 TEST(IR_INPUT, ctor_should_set_shape)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Input input{&bag_link, shape};
+  coco::Input input{shape};
 
   ASSERT_EQ(input.shape(), shape);
   ASSERT_TRUE(input.name().empty());
@@ -23,16 +21,12 @@ TEST(IR_INPUT, ctor_should_set_shape)
 TEST(IR_INPUT, bag_update)
 {
   // Create a bag
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::BagManager bag_mgr{&bag_link};
+  coco::BagManager bag_mgr;
 
   auto bag = bag_mgr.create(9);
-  auto bag_info = bag_link.find(bag);
-
-  ASSERT_NE(bag_info, nullptr);
 
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Input input{&bag_link, shape};
+  coco::Input input{shape};
 
   input.bag(bag);
   ASSERT_EQ(input.bag(), bag);
@@ -43,10 +37,8 @@ TEST(IR_INPUT, bag_update)
 
 TEST(IR_INPUT, name_update)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Input input{&bag_link, shape};
+  coco::Input input{shape};
 
   input.name("data");
   ASSERT_EQ(input.name(), "data");
@@ -54,10 +46,8 @@ TEST(IR_INPUT, name_update)
 
 TEST(IR_INPUT, at)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const Shape shape{1, 3, 3, 1};
-  coco::Input input{&bag_link, shape};
+  coco::Input input{shape};
 
   coco::Input *mutable_ptr = &input;
   const coco::Input *immutable_ptr = &input;
index f71e014..1047f3c 100644 (file)
@@ -7,7 +7,7 @@ namespace coco
 
 Input *InputManager::create(const nncc::core::ADT::tensor::Shape &shape)
 {
-  return take(nncc::foundation::make_unique<Input>(_bag_link, shape));
+  return take(nncc::foundation::make_unique<Input>(shape));
 }
 
 } // namespace coco
index 1b41939..99a7059 100644 (file)
@@ -4,8 +4,7 @@
 
 TEST(IR_INPUT_MANAGER, make)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::InputManager mgr{&bag_link};
+  coco::InputManager mgr;
 
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
   auto input = mgr.create(shape);
index 83a8f1d..9528bd7 100644 (file)
@@ -13,13 +13,12 @@ public:
 
 protected:
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
 
   coco::PtrLink<coco::Op, coco::Instr> op_link;
   // TODO Rename link as instr_link
   coco::PtrLink<coco::Instr, coco::Block> link;
 
-  coco::ObjectManager obj_mgr{&obj_link, &bag_link};
+  coco::ObjectManager obj_mgr{&obj_link};
   coco::OpManager op_mgr{&op_link, &obj_link};
 };
 } // namespace
index 74480ed..cf3a8a9 100644 (file)
@@ -16,7 +16,7 @@ template <> UnitF *InstrManager::create(void)
 
 template <> Shuffle *InstrManager::create(void)
 {
-  return take(nncc::foundation::make_unique<Shuffle>(_instr_link, _bag_link));
+  return take(nncc::foundation::make_unique<Shuffle>(_instr_link));
 }
 
 void InstrManager::destroy(Instr *ins)
index 5461386..61183d7 100644 (file)
@@ -14,8 +14,7 @@ protected:
   coco::PtrLink<coco::Op, coco::Instr> op_link;
   coco::PtrLink<coco::Instr, coco::Block> ins_link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::InstrManager mgr{&op_link, &ins_link, &obj_link, &bag_link};
+  coco::InstrManager mgr{&op_link, &ins_link, &obj_link};
 };
 } // namespace
 
@@ -24,8 +23,7 @@ TEST(IR_INSTR_MANAGER, create_UnitF)
   coco::PtrLink<coco::Op, coco::Instr> op_link;
   coco::PtrLink<coco::Instr, coco::Block> link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::InstrManager mgr{&op_link, &link, &obj_link, &bag_link};
+  coco::InstrManager mgr{&op_link, &link, &obj_link};
 
   // Conv2D
   {
index f2d656b..2f5d961 100644 (file)
@@ -13,9 +13,7 @@ static nncc::core::ADT::kernel::NCHWLayout l{};
 namespace coco
 {
 
-KernelObject::KernelObject(std::unique_ptr<KernelObjectInfo> &&info,
-                           const PtrLink<Bag, BagInfo> *link)
-    : _info{std::move(info)}
+KernelObject::KernelObject(std::unique_ptr<KernelObjectInfo> &&info) : _info{std::move(info)}
 {
   _map.resize(nncc::core::ADT::kernel::num_elements(shape()));
 }
index c35559d..2f0595e 100644 (file)
@@ -19,15 +19,12 @@ protected:
   coco::KernelObject *allocate(const kernel::Shape &shape)
   {
     auto info = make_unique<coco::KernelObjectInfo>(shape);
-    auto o = new coco::KernelObject{std::move(info), &_bag_link};
+    auto o = new coco::KernelObject{std::move(info)};
     _allocated.emplace_back(o);
     return o;
   }
 
 private:
-  coco::PtrLink<coco::Bag, coco::BagInfo> _bag_link;
-
-private:
   std::vector<std::unique_ptr<coco::KernelObject>> _allocated;
 };
 } // namespace
index d5c76e4..2a10a58 100644 (file)
@@ -67,7 +67,6 @@ namespace
 class ModuleImpl final : public coco::Module
 {
 public:
-  std::unique_ptr<coco::PtrLink<coco::Bag, coco::BagInfo>> _bag_link;
   std::unique_ptr<coco::PtrLink<coco::Object, coco::ObjectInfo>> _obj_link;
   std::unique_ptr<coco::PtrLink<coco::Op, coco::Instr>> _op_link;
   std::unique_ptr<coco::PtrLink<coco::Instr, coco::Block>> _instr_link;
@@ -113,7 +112,6 @@ namespace coco
 
 std::unique_ptr<Module> Module::create(void)
 {
-  auto bag_link = make_unique<coco::PtrLink<Bag, BagInfo>>();
   auto obj_link = make_unique<coco::PtrLink<Object, ObjectInfo>>();
   auto op_link = make_unique<coco::PtrLink<Op, Instr>>();
   auto ins_link = make_unique<coco::PtrLink<Instr, Block>>();
@@ -123,14 +121,13 @@ std::unique_ptr<Module> Module::create(void)
 
   auto mgr = make_unique<::EntityManagerImpl>();
   {
-    mgr->_bag = make_unique<coco::BagManager>(bag_link.get());
-    mgr->_object = make_unique<coco::ObjectManager>(obj_link.get(), bag_link.get());
+    mgr->_bag = make_unique<coco::BagManager>();
+    mgr->_object = make_unique<coco::ObjectManager>(obj_link.get());
     mgr->_op = make_unique<coco::OpManager>(op_link.get(), obj_link.get());
-    mgr->_instr = make_unique<coco::InstrManager>(op_link.get(), ins_link.get(), obj_link.get(),
-                                                  bag_link.get());
+    mgr->_instr = make_unique<coco::InstrManager>(op_link.get(), ins_link.get(), obj_link.get());
     mgr->_block = make_unique<coco::BlockManager>(blk_link.get(), ins_link.get());
-    mgr->_input = make_unique<coco::InputManager>(bag_link.get());
-    mgr->_output = make_unique<coco::OutputManager>(bag_link.get());
+    mgr->_input = make_unique<coco::InputManager>();
+    mgr->_output = make_unique<coco::OutputManager>();
   }
   m->_entity = std::move(mgr);
 
@@ -139,7 +136,6 @@ std::unique_ptr<Module> Module::create(void)
   m->_input = make_unique<coco::InputList>();
   m->_output = make_unique<coco::OutputList>();
 
-  m->_bag_link = std::move(bag_link);
   m->_obj_link = std::move(obj_link);
   m->_op_link = std::move(op_link);
   m->_instr_link = std::move(ins_link);
index c1a042e..0910ede 100644 (file)
@@ -16,10 +16,7 @@ namespace
 class ObjectTest : public ::testing::Test
 {
 protected:
-  // TODO Rename as bag_link
-  coco::PtrLink<coco::Bag, coco::BagInfo> link;
-
-  coco::BagManager bag_mgr{&link};
+  coco::BagManager bag_mgr;
 };
 } // namespace
 
index 345223c..7a19778 100644 (file)
@@ -17,7 +17,7 @@ FeatureObject *ObjectManager::create(const nncc::core::ADT::feature::Shape &shap
   auto info = make_unique<FeatureObjectInfo>(shape);
   auto info_ptr = info.get();
 
-  auto feature = make_unique<FeatureObject>(std::move(info), _link);
+  auto feature = make_unique<FeatureObject>(std::move(info));
   auto feature_ptr = feature.get();
 
   _obj_link->set(feature_ptr, info_ptr);
@@ -30,7 +30,7 @@ KernelObject *ObjectManager::create(const nncc::core::ADT::kernel::Shape &shape)
   auto info = make_unique<KernelObjectInfo>(shape);
   auto info_ptr = info.get();
 
-  auto kernel = make_unique<KernelObject>(std::move(info), _link);
+  auto kernel = make_unique<KernelObject>(std::move(info));
   auto kernel_ptr = kernel.get();
 
   _obj_link->set(kernel_ptr, info_ptr);
index 031ee92..256ea06 100644 (file)
@@ -12,8 +12,7 @@ TEST(IR_OBJECT_MANAGER, create_feature)
   const Shape shape{1, 3, 3};
 
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::ObjectManager mgr{&obj_link, &bag_link};
+  coco::ObjectManager mgr{&obj_link};
 
   auto o = mgr.create(shape);
 
@@ -28,8 +27,7 @@ TEST(IR_OBJECT_MANAGER, create_kernel)
   const Shape shape{1, 1, 3, 3};
 
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::ObjectManager mgr{&obj_link, &bag_link};
+  coco::ObjectManager mgr{&obj_link};
 
   auto o = mgr.create(shape);
 
index 9317653..44fd187 100644 (file)
@@ -4,8 +4,7 @@
 namespace coco
 {
 
-Output::Output(const PtrLink<Bag, BagInfo> *, const nncc::core::ADT::tensor::Shape &shape)
-    : Arg{shape}
+Output::Output(const nncc::core::ADT::tensor::Shape &shape) : Arg{shape}
 {
   // DO NOTHING
 }
index 5f1f417..db8ce80 100644 (file)
@@ -11,10 +11,8 @@ using nncc::core::ADT::tensor::IndexEnumerator;
 
 TEST(IR_OUTPUT, ctor_should_set_shape)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Output output{&bag_link, shape};
+  coco::Output output{shape};
 
   ASSERT_EQ(output.shape(), shape);
 }
@@ -22,14 +20,12 @@ TEST(IR_OUTPUT, ctor_should_set_shape)
 TEST(IR_OUTPUT, bag_update)
 {
   // Create a bag for test
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::BagManager bag_mgr{&bag_link};
+  coco::BagManager bag_mgr;
 
   auto bag = bag_mgr.create(9);
-  auto bag_info = bag_link.find(bag);
 
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Output output{&bag_link, shape};
+  coco::Output output{shape};
 
   output.bag(bag);
   ASSERT_EQ(output.bag(), bag);
@@ -45,10 +41,8 @@ TEST(IR_OUTPUT, bag_update)
 
 TEST(IR_OUTPUT, name_update)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
-  coco::Output output{&bag_link, shape};
+  coco::Output output{shape};
 
   output.name("softmax");
   ASSERT_EQ(output.name(), "softmax");
@@ -56,10 +50,8 @@ TEST(IR_OUTPUT, name_update)
 
 TEST(IR_OUTPUT, at)
 {
-  const coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
   const Shape shape{1, 3, 3, 1};
-  coco::Output input{&bag_link, shape};
+  coco::Output input{shape};
 
   coco::Output *mutable_ptr = &input;
   const coco::Output *immutable_ptr = &input;
index 5d9bc83..83ad8e4 100644 (file)
@@ -7,7 +7,7 @@ namespace coco
 
 Output *OutputManager::create(const nncc::core::ADT::tensor::Shape &shape)
 {
-  return take(nncc::foundation::make_unique<Output>(_bag_link, shape));
+  return take(nncc::foundation::make_unique<Output>(shape));
 }
 
 } // namespace coco
index f59f359..149f7f8 100644 (file)
@@ -4,8 +4,7 @@
 
 TEST(IR_OUTPUT_MANAGER, make)
 {
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-  coco::OutputManager mgr{&bag_link};
+  coco::OutputManager mgr;
 
   const nncc::core::ADT::tensor::Shape shape{1, 3, 3, 1};
   auto output = mgr.create(shape);
index 79d4e0f..2020abd 100644 (file)
@@ -11,9 +11,7 @@ namespace
 class ReadTest : public ::testing::Test
 {
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
-  coco::BagManager bag_mgr{&bag_link};
+  coco::BagManager bag_mgr;
 };
 } // namespace
 
@@ -23,7 +21,7 @@ TEST_F(ReadTest, constructor)
   ::mock::Reader read;
 
   // TODO Rename 'slot'
-  coco::Read slot{&bag_link, &read};
+  coco::Read slot{&read};
 
   ASSERT_EQ(slot.bag(), nullptr);
 }
@@ -34,7 +32,7 @@ TEST_F(ReadTest, value)
   ::mock::Reader read;
 
   // TODO Rename 'slot'
-  coco::Read slot{&bag_link, &read};
+  coco::Read slot{&read};
 
   auto bag = bag_mgr.create(16);
 
@@ -60,7 +58,7 @@ TEST_F(ReadTest, unlink_on_destruction)
   auto bag = bag_mgr.create(1);
 
   {
-    coco::Read read{&bag_link, &reader};
+    coco::Read read{&reader};
     read.bag(bag);
   }
 
index a3aa79b..3145e26 100644 (file)
@@ -14,7 +14,7 @@ public:
 protected:
   coco::Shuffle *allocate(void)
   {
-    auto ins = new coco::Shuffle{&instr_link, &bag_link};
+    auto ins = new coco::Shuffle{&instr_link};
     _allocated.emplace_back(ins);
     return ins;
   }
index 21c5c6c..06c6ebf 100644 (file)
@@ -11,9 +11,7 @@ namespace
 class UpdateTest : public ::testing::Test
 {
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
-
-  coco::BagManager bag_mgr{&bag_link};
+  coco::BagManager bag_mgr;
 };
 } // namespace
 
@@ -22,7 +20,7 @@ TEST_F(UpdateTest, constructor)
   ::mock::Update update;
 
   // TODO Rename 'slot'
-  coco::Update slot{&bag_link, &update};
+  coco::Update slot{&update};
 
   ASSERT_EQ(slot.bag(), nullptr);
 }
@@ -32,7 +30,7 @@ TEST_F(UpdateTest, value)
   ::mock::Update update;
 
   // TODO Rename 'slot'
-  coco::Update slot{&bag_link, &update};
+  coco::Update slot{&update};
 
   auto bag = bag_mgr.create(16);
 
@@ -57,7 +55,7 @@ TEST_F(UpdateTest, unlink_on_destruction)
   auto bag = bag_mgr.create(1);
 
   {
-    coco::Update update{&bag_link, &updater};
+    coco::Update update{&updater};
     update.bag(bag);
     ASSERT_EQ(bag->updates()->size(), 1);
   }
index 13d0fb8..af5eb0b 100644 (file)
@@ -13,10 +13,9 @@ namespace
 class UseTest : public ::testing::Test
 {
 protected:
-  coco::PtrLink<coco::Bag, coco::BagInfo> bag_link;
   coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
 
-  coco::ObjectManager obj_mgr{&obj_link, &bag_link};
+  coco::ObjectManager obj_mgr{&obj_link};
 };
 } // namespace