8 #include <hilti/ast/attribute.h>
9 #include <hilti/ast/forward.h>
10 #include <hilti/ast/node.h>
11 #include <hilti/ast/statement.h>
12 #include <hilti/ast/statements/block.h>
13 #include <hilti/ast/type.h>
14 #include <hilti/ast/types/function.h>
21 const auto& id()
const {
return _id; }
22 auto type()
const {
return child<QualifiedType>(0); }
23 auto ftype()
const {
return child<QualifiedType>(0)->type()->as<
type::Function>(); }
24 auto body()
const {
return child<statement::Block>(1); }
25 auto attributes()
const {
return child<AttributeSet>(2); }
26 auto isStatic()
const {
return attributes()->find(hilti::attribute::kind::Static) !=
nullptr; }
29 void setID(
ID id) { _id = std::move(
id); }
33 auto p = node::Properties{{
"id", _id}};
44 attrs = AttributeSet::create(ctx);
46 return ctx->
make<Function>(ctx,
53 Function(ASTContext* ctx, Nodes
children, ID
id, Meta
meta = {})
54 :
Node(ctx, NodeTags, std::move(
children), std::move(
meta)), _id(std::move(
id)) {}
56 std::string
_dump()
const override;
58 HILTI_NODE_0(Function,
final);
Definition: ast-context.h:128
T * make(Args &&... args)
Definition: ast-context.h:382
Definition: attribute.h:200
Definition: function.h:19
node::Properties properties() const override
Definition: function.h:32
std::string _dump() const override
Definition: function.cc:8
void setChild(ASTContext *ctx, size_t idx, Node *n)
Definition: node.h:631
const auto & children() const
Definition: node.h:382
const auto & meta() const
Definition: node.h:324
Node(ASTContext *ctx, node::Tags node_tags, Nodes children, Meta meta)
Definition: node.h:984
virtual node::Properties properties() const
Definition: node.h:953
static auto create(ASTContext *ctx, UnqualifiedType *t, Constness const_, Meta m=Meta())
Definition: type.h:436
Definition: function.h:72