Spicy
unit-hook.h
1 // Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <utility>
6 
7 #include <hilti/ast/declaration.h>
8 
9 #include <spicy/ast/declarations/hook.h>
10 
11 namespace spicy::declaration {
12 
14 class UnitHook : public Declaration {
15 public:
16  auto hook() const { return child<declaration::Hook>(0); }
17 
18  std::string_view displayName() const final { return "unit hook"; }
19 
20  static auto create(ASTContext* ctx, const ID& id, declaration::Hook* hook, Meta meta = {}) {
21  auto* h = ctx->make<UnitHook>(ctx, {hook}, id, std::move(meta));
22  h->hook()->setID(id);
23  return h;
24  }
25 
26 protected:
27  UnitHook(ASTContext* ctx, Nodes children, ID id, Meta meta)
28  : Declaration(ctx, NodeTags, std::move(children), std::move(id), hilti::declaration::Linkage::Private,
29  std::move(meta)) {}
30 
31  SPICY_NODE_1(declaration::UnitHook, Declaration, final);
32 };
33 
34 } // namespace spicy::declaration
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: declaration.h:48
const auto & id() const
Definition: declaration.h:53
Definition: id.h:15
Definition: meta.h:30
const auto & children() const
Definition: node.h:364
const auto & meta() const
Definition: node.h:306
Definition: hook.h:61
Definition: unit-hook.h:14
std::string_view displayName() const final
Definition: unit-hook.h:18