[nest] Add 'DomainContext' field to 'Module' (#711)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 19 Jul 2018 01:05:20 +0000 (10:05 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 19 Jul 2018 01:05:20 +0000 (10:05 +0900)
This commit adds 'DomainContext' field and related methods to 'Module'
in order to allow users to build domains through module instance.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/nest/include/nest/Module.h
contrib/nest/src/Module.test.cpp

index fc5a6f9..59cd634 100644 (file)
@@ -2,6 +2,7 @@
 #define __NEST_MODULE_H__
 
 #include "nest/VarContext.h"
+#include "nest/DomainContext.h"
 
 namespace nest
 {
@@ -21,6 +22,13 @@ private:
 public:
   VarContext &var(void) { return _var_ctx; }
   const VarContext &var(void) const { return _var_ctx; }
+
+private:
+  DomainContext _domain_ctx;
+
+public:
+  DomainContext &domain(void) { return _domain_ctx; }
+  const DomainContext &domain(void) const { return _domain_ctx; }
 };
 
 } // namespace nest
index cdc30f8..119c3f1 100644 (file)
@@ -19,3 +19,21 @@ TEST(MODULE, create_var)
   create(m);
   check(m);
 }
+
+TEST(MODULE, create_domain)
+{
+  nest::Module m;
+
+  auto create = [](nest::Module &m, std::initializer_list<uint32_t> dims) {
+    // This code will invoke 'DomainContext &domain(void)' method
+    return m.domain().make(dims);
+  };
+
+  auto check = [](const nest::Module &m) {
+    // This code will invoke 'const DomainContext &domain(void) const' method
+    ASSERT_EQ(m.domain().count(), 1);
+  };
+
+  create(m, {1, 3, 3});
+  check(m);
+}