13 #include <hilti/rt/filesystem.h>
15 #include <hilti/ast/declarations/module.h>
16 #include <hilti/ast/id.h>
17 #include <hilti/base/logger.h>
18 #include <hilti/base/result.h>
19 #include <hilti/base/util.h>
20 #include <hilti/compiler/context.h>
21 #include <hilti/compiler/detail/cxx/unit.h>
22 #include <hilti/compiler/jit.h>
37 using MetaData = detail::cxx::linker::MetaData;
59 const auto&
uid()
const {
return _uid; }
106 return _cxx_unit->linkerMetaData();
132 std::shared_ptr<Context>
context()
const {
return _context.lock(); }
146 const hilti::rt::filesystem::path& path);
157 std::shared_ptr<detail::cxx::Unit> cxx,
158 const hilti::rt::filesystem::path& path =
"");
175 const std::vector<linker::MetaData>& mds);
182 Unit(
const std::shared_ptr<Context>&
context, declaration::module::UID
uid,
183 std::shared_ptr<detail::cxx::Unit> cxx_unit)
184 : _context(
context), _uid(std::move(
uid)), _cxx_unit(std::move(cxx_unit)) {}
186 Result<std::shared_ptr<detail::cxx::Unit>> _codegenModule(
const declaration::module::UID&
uid);
188 std::weak_ptr<Context> _context;
189 declaration::module::UID _uid;
190 std::shared_ptr<detail::cxx::Unit> _cxx_unit;
191 bool _requires_compilation =
false;
const Options & options() const
Definition: unit.h:135
declaration::Module * module() const
Definition: unit.cc:48
void setRequiresCompilation()
Definition: unit.h:129
std::shared_ptr< Context > context() const
Definition: unit.h:132
Result< CxxCode > cxxCode() const
Definition: unit.cc:107
const auto & uid() const
Definition: unit.h:59
Result< Nothing > print(std::ostream &out) const
Definition: unit.cc:58
static Result< std::shared_ptr< Unit > > link(const std::shared_ptr< Context > &context, const std::vector< linker::MetaData > &mds)
Definition: unit.cc:143
static Result< std::shared_ptr< Unit > > fromSource(const std::shared_ptr< Context > &context, Builder *builder, const hilti::rt::filesystem::path &path)
Definition: unit.cc:25
~Unit()
Definition: unit.cc:46
Result< Nothing > createPrototypes(std::ostream &out)
Definition: unit.cc:65
void setUID(const declaration::module::UID &uid)
Definition: unit.h:62
Result< linker::MetaData > linkerMetaData() const
Definition: unit.h:104
bool requiresCompilation()
Definition: unit.cc:120
static Result< std::shared_ptr< Unit > > fromCXX(const std::shared_ptr< Context > &context, std::shared_ptr< detail::cxx::Unit > cxx, const hilti::rt::filesystem::path &path="")
Definition: unit.cc:34
bool isCompiledHILTI() const
Definition: unit.cc:50
Result< Nothing > codegen()
Definition: unit.cc:88
Definition: module-uid.h:20