From 030f9d259425c33106166921de84e73b7adf6f51 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Tue, 17 Jul 2018 14:31:22 +0900 Subject: [PATCH] [nest] Add 'Module' class (#683) 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 --- contrib/nest/include/nest/Module.h | 28 ++++++++++++++++++++++++++++ contrib/nest/src/Module.test.cpp | 21 +++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 contrib/nest/include/nest/Module.h create mode 100644 contrib/nest/src/Module.test.cpp diff --git a/contrib/nest/include/nest/Module.h b/contrib/nest/include/nest/Module.h new file mode 100644 index 0000000..fc5a6f9 --- /dev/null +++ b/contrib/nest/include/nest/Module.h @@ -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 index 0000000..cdc30f8 --- /dev/null +++ b/contrib/nest/src/Module.test.cpp @@ -0,0 +1,21 @@ +#include "nest/Module.h" + +#include + +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); +} -- 2.7.4