[nest] Add 'Module' class (#683)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Tue, 17 Jul 2018 05:31:22 +0000 (14:31 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Tue, 17 Jul 2018 05:31:22 +0000 (14:31 +0900)
This commit adds 'Module' class which serves as an user entry point to
nest. The main role of 'Module' class is to allow users to construct IR
from their code.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/nest/include/nest/Module.h [new file with mode: 0644]
contrib/nest/src/Module.test.cpp [new file with mode: 0644]

diff --git a/contrib/nest/include/nest/Module.h b/contrib/nest/include/nest/Module.h
new file mode 100644 (file)
index 0000000..fc5a6f9
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef __NEST_MODULE_H__
+#define __NEST_MODULE_H__
+
+#include "nest/VarContext.h"
+
+namespace nest
+{
+
+class Module
+{
+public:
+  Module() = default;
+
+public:
+  Module(const Module &) = delete;
+  Module(Module &&) = delete;
+
+private:
+  VarContext _var_ctx;
+
+public:
+  VarContext &var(void) { return _var_ctx; }
+  const VarContext &var(void) const { return _var_ctx; }
+};
+
+} // namespace nest
+
+#endif // __NEST_MODULE_H__
diff --git a/contrib/nest/src/Module.test.cpp b/contrib/nest/src/Module.test.cpp
new file mode 100644 (file)
index 0000000..cdc30f8
--- /dev/null
@@ -0,0 +1,21 @@
+#include "nest/Module.h"
+
+#include <gtest/gtest.h>
+
+TEST(MODULE, create_var)
+{
+  nest::Module m;
+
+  auto create = [](nest::Module &m) {
+    // This code will invoke 'VarContext &var(void)' method
+    return m.var().make();
+  };
+
+  auto check = [](const nest::Module &m) {
+    // This code will invoke 'const VarContext &var(void) const' method
+    ASSERT_EQ(m.var().count(), 1);
+  };
+
+  create(m);
+  check(m);
+}