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/type.h>
13 #include <hilti/ast/types/function.h>
20 const auto& id()
const {
return _id; }
21 auto type()
const {
return child<QualifiedType>(0); }
22 auto ftype()
const {
return child<QualifiedType>(0)->type()->as<
type::Function>(); }
23 auto body()
const {
return child<Statement>(1); }
24 auto attributes()
const {
return child<AttributeSet>(2); }
25 auto isStatic()
const {
return attributes()->find(hilti::attribute::kind::Static) !=
nullptr; }
28 void setID(
ID id) { _id = std::move(
id); }
32 auto p = node::Properties{{
"id", _id}};
39 attrs = AttributeSet::create(ctx);
46 Function(ASTContext* ctx, Nodes
children, ID
id, Meta
meta = {})
47 :
Node(ctx, NodeTags, std::move(
children), std::move(
meta)), _id(std::move(
id)) {}
49 std::string
_dump()
const override;
51 HILTI_NODE_0(Function,
final);
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: attribute.h:200
Definition: function.h:18
node::Properties properties() const override
Definition: function.h:31
std::string _dump() const override
Definition: function.cc:8
void setChild(ASTContext *ctx, size_t idx, Node *n)
Definition: node.h:602
const auto & children() const
Definition: node.h:364
const auto & meta() const
Definition: node.h:306
Node(ASTContext *ctx, node::Tags node_tags, Nodes children, Meta meta)
Definition: node.h:922
virtual node::Properties properties() const
Definition: node.h:891
static auto create(ASTContext *ctx, UnqualifiedType *t, Constness const_, Meta m=Meta())
Definition: type.h:427
Definition: statement.h:15
Definition: function.h:72