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>
--- /dev/null
+#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__
--- /dev/null
+#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);
+}