10 #include <hilti/ast/ctor.h>
11 #include <hilti/ast/node.h>
12 #include <hilti/ast/type.h>
13 #include <hilti/base/logger.h>
14 #include <hilti/base/result.h>
15 #include <hilti/base/util.h>
16 #include <hilti/compiler/coercer.h>
17 #include <hilti/compiler/context.h>
25 namespace type_unifier {
49 template<
typename Result,
typename... Args>
229 const std::vector<Plugin>&
plugins()
const {
return _plugins; }
252 template<
typename PluginMember>
254 for (
const auto& p : plugin::registry().
plugins() ) {
272 return _plugins | std::views::transform([](
auto& p) {
return p.extension; });
286 std::vector<Plugin> _plugins;
291 Plugin createHiltiPlugin();
Definition: context.h:120
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:253
bool supportsExtension(const hilti::rt::filesystem::path &ext) const
Definition: plugin.h:268
const std::vector< Plugin > & plugins() const
Definition: plugin.h:229
auto supportedExtensions() const
Definition: plugin.h:271
std::string component
Definition: plugin.h:53
Hook< QualifiedType *, Builder *, QualifiedType *, QualifiedType *, bitmask< CoercionStyle > > coerce_type
Definition: plugin.h:130
Hook< bool, Node *, printer::Stream & > ast_print
Definition: plugin.h:186
Hook< bool, Builder *, ASTRoot * > ast_transform
Definition: plugin.h:207
Result(*)(Args...) Hook
Definition: plugin.h:50
Hook< bool, Builder *, ASTRoot * > ast_validate_pre
Definition: plugin.h:166
std::vector< hilti::rt::filesystem::path > cxx_includes
Definition: plugin.h:68
int order
Definition: plugin.h:59
Hook< bool, Builder *, Node * > ast_resolve
Definition: plugin.h:156
Hook< bool, type_unifier::Unifier *, UnqualifiedType * > unify_type
Definition: plugin.h:88
Hook< bool, Builder *, ASTRoot * > ast_build_scopes
Definition: plugin.h:147
hilti::rt::filesystem::path extension
Definition: plugin.h:62
Hook< void, Builder *, ASTRoot * > ast_init
Definition: plugin.h:138
Hook< bool, const ID &, printer::Stream & > ast_print_id
Definition: plugin.h:197
Hook< Ctor *, Builder *, Ctor *, QualifiedType *, bitmask< CoercionStyle > > coerce_ctor
Definition: plugin.h:113
Hook< bool, Builder *, ASTRoot * > ast_validate_post
Definition: plugin.h:175
Hook< std::vector< hilti::rt::filesystem::path >, Context * > library_paths
Definition: plugin.h:77
Hook< Result< declaration::Module * >, hilti::Builder *, std::istream &, const hilti::rt::filesystem::path & > parse
Definition: plugin.h:98