[moco/tf] Chainable GraphBuilderRegistry (#4258)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 15 Jul 2019 06:32:13 +0000 (15:32 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 15 Jul 2019 06:32:13 +0000 (15:32 +0900)
This commit allows users to build a GraphBuilderRegistry chain.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/moco-tf/src/GraphBuilderRegistry.h

index 3ab5b16..f902ec2 100644 (file)
@@ -44,6 +44,15 @@ struct GraphBuilderSource
 class GraphBuilderRegistry final : public GraphBuilderSource
 {
 public:
+  GraphBuilderRegistry() = default;
+
+public:
+  GraphBuilderRegistry(const GraphBuilderSource *parent) : _parent{parent}
+  {
+    // DO NOTHING
+  }
+
+public:
   /**
    * @brief Returns registered GraphBuilder pointer for operator or
    *        nullptr if not registered
@@ -51,7 +60,7 @@ public:
   const GraphBuilder *lookup(const std::string &op) const final
   {
     if (_builder_map.find(op) == _builder_map.end())
-      return nullptr;
+      return (_parent == nullptr) ? nullptr : _parent->lookup(op);
 
     return _builder_map.at(op).get();
   }
@@ -69,6 +78,9 @@ public:
   }
 
 private:
+  const GraphBuilderSource *_parent = nullptr;
+
+private:
   std::map<const std::string, std::unique_ptr<GraphBuilder>> _builder_map;
 };