#ifndef wg_MOD_HPP #define wg_MOD_HPP #include #include #include "SymTable.hpp" #include "commons.hpp" namespace wg { class Mod { public: explicit Mod(std::string const& name); virtual ~Mod(); llvm::LLVMContext& context() { return *m_context; } llvm::Module& mod() { return *m_module; } SymTable& sym() { return *m_sym; } private: std::string m_name; std::unique_ptr m_context = std::make_unique(); std::unique_ptr m_module = std::make_unique(m_name, *m_context); std::unique_ptr m_sym = std::make_unique(); }; } #endif