[coco] Use as a friend class of Object (#1523)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 17 Sep 2018 07:35:44 +0000 (16:35 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 17 Sep 2018 07:35:44 +0000 (16:35 +0900)
This commit declares Use as a friend class of Object, and simplifies the
internal implementation of Use.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/coco/core/include/coco/IR/Object.h
contrib/coco/core/include/coco/IR/Use.h
contrib/coco/core/src/IR/Use.cpp

index d73421c..92e1e36 100644 (file)
@@ -23,6 +23,7 @@ class Object
 {
 public:
   friend class Def;
+  friend class Use;
 
 public:
   struct Producer : public Bag::Updater
index c587cf1..3060ee6 100644 (file)
@@ -12,8 +12,9 @@ namespace coco
 class Use final
 {
 public:
-  Use(const PtrLink<Object, ObjectInfo> *obj_link, Object::Consumer *use)
-      : _link{obj_link}, _value{nullptr}, _consumer{use}
+  // NOTE Object-to-ObjectInfo link is no longer used
+  // TODO Do NOT take Object-to-ObjectInfo link as an arugment
+  Use(const PtrLink<Object, ObjectInfo> *, Object::Consumer *use) : _value{nullptr}, _consumer{use}
   {
     // DO NOTHING
   }
@@ -25,9 +26,6 @@ public:
   void value(Object *value);
 
 private:
-  const PtrLink<Object, ObjectInfo> *_link = nullptr;
-
-private:
   Object *_value;
   Object::Consumer *_consumer = nullptr;
 };
index 969705d..997985b 100644 (file)
@@ -10,9 +10,9 @@ void Use::value(Object *value)
 {
   if (_value)
   {
-    if (_link)
+    // TODO Remove unnecessary indentation
     {
-      auto info = _link->find(_value);
+      auto info = _value->info();
       assert(info != nullptr);
       info->user()->erase(_consumer);
     }
@@ -24,9 +24,9 @@ void Use::value(Object *value)
   if (value)
   {
     _value = value;
-    if (_link)
+    // TODO Remove unnecessary indentation
     {
-      auto info = _link->find(_value);
+      auto info = _value->info();
       assert(info != nullptr);
       info->user()->insert(_consumer);
     }