From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Mon, 10 Sep 2018 01:43:42 +0000 (+0900) Subject: [coco] Introduce Bag::deps (#1411) X-Git-Tag: nncc_backup~1881 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78e78cc78860f3370fb440314fc65e599f80e4c4;p=platform%2Fcore%2Fml%2Fnnfw.git [coco] Introduce Bag::deps (#1411) This commit introduces Bag::deps which replaces existing 'object' method. New 'deps' method returns a snapshot of dependent object set similarly as 'reads' and 'updates'. Signed-off-by: Jonghyun Park --- diff --git a/contrib/coco/core/include/coco/IR/Bag.h b/contrib/coco/core/include/coco/IR/Bag.h index dcd30fe..29f085f 100644 --- a/contrib/coco/core/include/coco/IR/Bag.h +++ b/contrib/coco/core/include/coco/IR/Bag.h @@ -51,6 +51,7 @@ public: uint32_t size(void) const; public: + // NOTE This method is deprecated. Use 'deps' instead const ObjectSet *object(void) const; public: @@ -58,6 +59,8 @@ public: bool isOutput(void) const; public: + // @brief Return the set of objects that depends on this bag + ObjectSet deps(void) const; // TODO Rename as readers ReaderSet reads(void) const; // TODO Rename as updaters diff --git a/contrib/coco/core/src/IR/Bag.cpp b/contrib/coco/core/src/IR/Bag.cpp index 8927d61..ba8a9fd 100644 --- a/contrib/coco/core/src/IR/Bag.cpp +++ b/contrib/coco/core/src/IR/Bag.cpp @@ -25,11 +25,13 @@ const ObjectSet *Bag::object(void) const { return _info->object(); } bool Bag::isInput(void) const { return _info->mask()->masked(BagMask::Input); } bool Bag::isOutput(void) const { return _info->mask()->masked(BagMask::Output); } +ObjectSet Bag::deps(void) const { return *_info->object(); } + Bag::ReaderSet Bag::reads(void) const { Bag::ReaderSet res; - for (auto obj : *object()) + for (auto obj : deps()) { for (auto use : *obj->user()) { @@ -49,7 +51,7 @@ Bag::UpdaterSet Bag::updates(void) const { Bag::UpdaterSet res; - for (auto obj : *object()) + for (auto obj : deps()) { if (obj->def()) { diff --git a/contrib/coco/core/src/IR/Dep.test.cpp b/contrib/coco/core/src/IR/Dep.test.cpp index 2f892be..083b032 100644 --- a/contrib/coco/core/src/IR/Dep.test.cpp +++ b/contrib/coco/core/src/IR/Dep.test.cpp @@ -56,7 +56,7 @@ TEST_F(DepTest, bag_update_with_link_and_object) dep.bag(bag); - auto deps = *(bag->object()); + auto deps = bag->deps(); ASSERT_EQ(deps.size(), 1); ASSERT_NE(deps.count(obj), 0); diff --git a/contrib/coco/core/src/IR/Object.test.cpp b/contrib/coco/core/src/IR/Object.test.cpp index 6a236c8..dde0216 100644 --- a/contrib/coco/core/src/IR/Object.test.cpp +++ b/contrib/coco/core/src/IR/Object.test.cpp @@ -81,15 +81,21 @@ TEST_F(ObjectTest, bag_update) ASSERT_EQ(bag_info->object()->count(&obj), 1); // User SHOULD be able to access dependent objects through 'bag' - ASSERT_EQ(bag->object()->size(), 1); - ASSERT_EQ(bag->object()->count(&obj), 1); + { + auto deps = bag->deps(); + ASSERT_EQ(deps.size(), 1); + ASSERT_EQ(deps.count(&obj), 1); + } // Unlink Object-Bag relation obj.bag(nullptr); ASSERT_EQ(obj.bag(), nullptr); - ASSERT_EQ(bag->object()->size(), 0); + { + auto deps = bag->deps(); + ASSERT_EQ(deps.size(), 0); + } } TEST_F(ObjectTest, destructor) @@ -107,5 +113,8 @@ TEST_F(ObjectTest, destructor) } // Object SHOULD be unlinked from Bag on destruction - ASSERT_EQ(bag->object()->size(), 0); + { + auto deps = bag->deps(); + ASSERT_EQ(deps.size(), 0); + } }