9 #include <hilti/ast/declaration.h> 10 #include <hilti/ast/expression.h> 11 #include <hilti/ast/id.h> 12 #include <hilti/ast/type.h> 13 #include <hilti/ast/types/auto.h> 16 namespace declaration {
23 :
DeclarationBase(nodes(std::move(
id), std::move(type), std::move(init)), std::move(m)), _linkage(linkage) {}
32 std::optional<hilti::Expression> init = {}, Linkage linkage = Linkage::Private,
Meta m =
Meta())
33 :
DeclarationBase(nodes(std::move(
id), std::move(type), std::move(init), std::move(args)), std::move(m)),
36 auto init()
const {
return childs()[2].tryAs<hilti::Expression>(); }
38 const auto& type()
const {
39 if (
auto t =
childs()[1].tryAs<hilti::Type>() )
43 return init()->type();
47 auto typeArguments()
const {
return childs<hilti::Expression>(3, -1); }
49 void setInit(hilti::Expression i) {
childs()[2] = std::move(i); }
50 void setTypeArguments(std::vector<hilti::Expression> args) {
52 c.erase(c.begin() + 3, c.end());
53 for (
auto&& a : args )
54 c.emplace_back(std::move(a));
58 return id() == other.
id() && type() == other.type() && init() == other.init();
64 const ID&
id()
const {
return child<ID>(0); }
66 Linkage
linkage()
const {
return _linkage; }
68 std::string
displayName()
const {
return "global variable"; };
Definition: declaration.h:53
const Node none
Definition: node.cc:14
auto properties() const
Definition: global-variable.h:73
std::string displayName() const
Definition: global-variable.h:68
bool isConstant() const
Definition: global-variable.h:62
auto isEqual(const Declaration &other) const
Definition: global-variable.h:70
Definition: declaration.h:87
const ID & id() const
Definition: global-variable.h:64
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:99
const auto & childs() const
Definition: node.h:470
Linkage linkage() const
Definition: global-variable.h:66
Definition: global-variable.h:19