From b8c9271e0e21a03346b9a3ef669ceba9f73ea2f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 23 Jul 2018 14:33:16 +0900 Subject: [PATCH] [coco] Add 'input' method to EntityManager (#762) This commit adds pure virtual 'input' method (which returns a pointer of InputManager) to EntityManager, and updates the corresponding implementation in Module. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/EntityManager.h | 5 +++++ contrib/coco/core/src/IR/Module.cpp | 15 ++++++++++++--- contrib/coco/core/src/IR/Module.test.cpp | 3 +++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/contrib/coco/core/include/coco/IR/EntityManager.h b/contrib/coco/core/include/coco/IR/EntityManager.h index 82d1417..66ff8c5 100644 --- a/contrib/coco/core/include/coco/IR/EntityManager.h +++ b/contrib/coco/core/include/coco/IR/EntityManager.h @@ -1,6 +1,8 @@ #ifndef __COCO_IR_ENTITY_MANAGER_H__ #define __COCO_IR_ENTITY_MANAGER_H__ +#include "coco/IR/InputManager.h" + namespace coco { @@ -13,6 +15,9 @@ namespace coco struct EntityManager { virtual ~EntityManager() = default; + + virtual InputManager *input(void) = 0; + virtual const InputManager *input(void) const = 0; }; } // namespace coco diff --git a/contrib/coco/core/src/IR/Module.cpp b/contrib/coco/core/src/IR/Module.cpp index 35eb99e..6d21a1e 100644 --- a/contrib/coco/core/src/IR/Module.cpp +++ b/contrib/coco/core/src/IR/Module.cpp @@ -7,7 +7,12 @@ namespace struct EntityManagerImpl final : public coco::EntityManager { - // TO BE FILLED +public: + std::unique_ptr _input; + +public: + coco::InputManager *input(void) override { return _input.get(); } + const coco::InputManager *input(void) const override { return _input.get(); } }; } // namespace @@ -33,8 +38,12 @@ namespace coco std::unique_ptr Module::create(void) { auto m = nncc::foundation::make_unique<::ModuleImpl>(); - - m->_entity = nncc::foundation::make_unique<::EntityManagerImpl>(); + + auto mgr = nncc::foundation::make_unique<::EntityManagerImpl>(); + { + mgr->_input = nncc::foundation::make_unique(); + } + m->_entity = std::move(mgr); return std::move(m); } diff --git a/contrib/coco/core/src/IR/Module.test.cpp b/contrib/coco/core/src/IR/Module.test.cpp index e1edace..c104eca 100644 --- a/contrib/coco/core/src/IR/Module.test.cpp +++ b/contrib/coco/core/src/IR/Module.test.cpp @@ -13,4 +13,7 @@ TEST(IR_MODULE, create) ASSERT_NE(mutable_m->entity(), nullptr); ASSERT_NE(immutable_m->entity(), nullptr); + + ASSERT_NE(mutable_m->entity()->input(), nullptr); + ASSERT_EQ(immutable_m->entity()->input(), mutable_m->entity()->input()); } -- 2.7.4