9 #include <hilti/ast/declaration.h>
10 #include <hilti/ast/declarations/expression.h>
11 #include <hilti/ast/expression.h>
12 #include <hilti/ast/type.h>
14 namespace hilti::declaration {
19 auto type()
const {
return child<QualifiedType>(0); }
20 auto init()
const {
return child<hilti::Expression>(1); }
21 auto typeArguments()
const {
return children<hilti::Expression>(2, {}); }
26 void setTypeArguments(
ASTContext* ctx, Expressions args) {
31 std::string_view
displayName() const final {
return "global variable"; }
38 declaration::Linkage
linkage = Linkage::Private,
40 return ctx->
make<GlobalVariable>(ctx,
41 node::flatten(type->
recreateAsLhs(ctx), init, std::move(args)),
47 static auto create(ASTContext* ctx,
51 declaration::Linkage
linkage = Linkage::Private,
53 return create(ctx, std::move(
id), type->recreateAsLhs(ctx), {}, init,
linkage, std::move(
meta));
56 static auto create(ASTContext* ctx,
59 declaration::Linkage
linkage = Linkage::Private,
61 return create(ctx, std::move(
id), type->recreateAsLhs(ctx), {},
nullptr,
linkage, std::move(
meta));
64 static auto create(ASTContext* ctx,
67 declaration::Linkage
linkage = Linkage::Private,
68 const Meta&
meta = {}) {
72 static auto create(ASTContext* ctx, ID
id, declaration::Linkage
linkage = Linkage::Private,
const Meta&
meta = {}) {
77 GlobalVariable(ASTContext* ctx, Nodes
children, ID
id, declaration::Linkage
linkage, Meta
meta)
80 HILTI_NODE_1(declaration::GlobalVariable, Declaration,
final);
Definition: ast-context.h:128
T * make(Args &&... args)
Definition: ast-context.h:382
Definition: declaration.h:53
const auto & id() const
Definition: declaration.h:58
auto linkage() const
Definition: declaration.h:61
Definition: expression.h:15
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
void removeChildren(int begin, std::optional< int > end)
Definition: node.h:604
void addChildren(ASTContext *ctx, const Nodes &children)
Definition: node.h:574
auto recreateAsLhs(ASTContext *ctx) const
Definition: type.h:508
static QualifiedType * createAuto(ASTContext *ctx, const Meta &m=Meta())
Definition: type.cc:134
Definition: global-variable.h:17
std::string_view displayName() const final
Definition: global-variable.h:31
void init()
Definition: init.cc:21