9 #include <unordered_map> 13 #include <hilti/rt/any.h> 14 #include <hilti/rt/filesystem.h> 16 #include <hilti/ast/id.h> 17 #include <hilti/autogen/config.h> 18 #include <hilti/base/logger.h> 19 #include <hilti/base/result.h> 20 #include <hilti/base/util.h> 47 std::vector<hilti::rt::filesystem::path>
63 auto i = _aux_options.find(key);
64 if ( i != _aux_options.end() )
65 return hilti::rt::any_cast<T>(i->second);
80 _aux_options[key] = value;
93 void print(std::ostream& out)
const;
96 std::map<std::string, hilti::rt::any> _aux_options;
109 hilti::rt::filesystem::path
path;
112 CacheIndex(
ID id,
const hilti::rt::filesystem::path& path) : id(
std::move(id)), path(util::normalizePath(path)) {}
113 bool operator<(
const CacheIndex& other)
const {
return id < other.
id; }
126 CacheEntry(std::shared_ptr<Unit> unit) : unit(
std::move(unit)) {}
153 void cacheUnit(
const std::shared_ptr<Unit>& unit);
164 std::optional<context::CacheEntry> lookupUnit(
const ID&
id,
const hilti::rt::filesystem::path& extension);
173 std::optional<context::CacheEntry> lookupUnit(
const hilti::rt::filesystem::path& path,
174 std::optional<hilti::rt::filesystem::path> ast_extension = {});
180 std::vector<std::weak_ptr<Unit>> lookupDependenciesForUnit(
const ID&
id,
181 const hilti::rt::filesystem::path& extension);
193 std::unordered_map<ID, std::shared_ptr<context::CacheEntry>> _unit_cache_by_id;
194 std::unordered_map<std::string, std::shared_ptr<context::CacheEntry>> _unit_cache_by_path;
Definition: context.h:107
bool track_location
Definition: context.h:39
bool keep_tmps
Definition: context.h:49
ID id
Definition: context.h:108
bool optimize
Definition: context.h:42
std::string cxx_namespace_intern
Definition: context.h:46
Definition: optional.h:79
bool debug_flow
Definition: context.h:37
void setAuxOption(const std::string &key, T value)
Definition: context.h:79
Result< Nothing > parseDebugAddl(const std::string &flags)
Definition: context.cc:16
std::vector< hilti::rt::filesystem::path > cxx_include_paths
Definition: context.h:48
std::string cxx_namespace_extern
Definition: context.h:44
std::vector< hilti::rt::filesystem::path > library_paths
Definition: context.h:43
void print(std::ostream &out) const
Definition: context.cc:34
std::shared_ptr< Unit > unit
Definition: context.h:123
Definition: context.h:122
bool debug_trace
Definition: context.h:35
bool debug
Definition: context.h:34
T getAuxOption(const std::string &key, T default_) const
Definition: context.h:62
hilti::rt::filesystem::path path
Definition: context.h:109
const Options & options() const
Definition: context.h:143
Definition: elements.cc:17
bool skip_validation
Definition: context.h:40
Definition: context.h:132