13 #include <hilti/rt/3rdparty/ArticleEnumClass-v2/EnumClass.h>
15 #include <hilti/ast/ctor.h>
16 #include <hilti/ast/node.h>
17 #include <hilti/ast/type.h>
18 #include <hilti/base/logger.h>
19 #include <hilti/base/result.h>
20 #include <hilti/base/util.h>
21 #include <hilti/compiler/coercer.h>
22 #include <hilti/compiler/context.h>
30 namespace type_unifier {
54 template<
typename Result,
typename... Args>
234 const std::vector<Plugin>&
plugins()
const {
return _plugins; }
257 template<
typename PluginMember>
259 for (
const auto& p : plugin::registry().
plugins() ) {
277 return util::transform(_plugins, [](
auto& p) {
return p.extension; });
291 std::vector<Plugin> _plugins;
296 Plugin createHiltiPlugin();
Definition: context.h:108
Result< std::reference_wrapper< const Plugin > > pluginForExtension(const hilti::rt::filesystem::path &ext) const
Definition: plugin.cc:21
const Plugin & hiltiPlugin() const
Definition: plugin.cc:30
void register_(const Plugin &p)
Definition: plugin.cc:49
bool hasHookFor(PluginMember hook)
Definition: plugin.h:258
bool supportsExtension(const hilti::rt::filesystem::path &ext) const
Definition: plugin.h:273
const std::vector< Plugin > & plugins() const
Definition: plugin.h:234
auto supportedExtensions() const
Definition: plugin.h:276
std::string component
Definition: plugin.h:58
Hook< QualifiedType *, Builder *, QualifiedType *, QualifiedType *, bitmask< CoercionStyle > > coerce_type
Definition: plugin.h:135
Hook< bool, Node *, printer::Stream & > ast_print
Definition: plugin.h:191
Hook< bool, Builder *, ASTRoot * > ast_transform
Definition: plugin.h:212
Result(*)(Args...) Hook
Definition: plugin.h:55
Hook< bool, Builder *, ASTRoot * > ast_validate_pre
Definition: plugin.h:171
std::vector< hilti::rt::filesystem::path > cxx_includes
Definition: plugin.h:73
int order
Definition: plugin.h:64
Hook< bool, Builder *, Node * > ast_resolve
Definition: plugin.h:161
Hook< bool, type_unifier::Unifier *, UnqualifiedType * > unify_type
Definition: plugin.h:93
Hook< bool, Builder *, ASTRoot * > ast_build_scopes
Definition: plugin.h:152
hilti::rt::filesystem::path extension
Definition: plugin.h:67
Hook< void, Builder *, ASTRoot * > ast_init
Definition: plugin.h:143
Hook< bool, const ID &, printer::Stream & > ast_print_id
Definition: plugin.h:202
Hook< Ctor *, Builder *, Ctor *, QualifiedType *, bitmask< CoercionStyle > > coerce_ctor
Definition: plugin.h:118
Hook< bool, Builder *, ASTRoot * > ast_validate_post
Definition: plugin.h:180
Hook< std::vector< hilti::rt::filesystem::path >, Context * > library_paths
Definition: plugin.h:82
Hook< Result< declaration::Module * >, hilti::Builder *, std::istream &, const hilti::rt::filesystem::path & > parse
Definition: plugin.h:103