8 #include <hilti/ast/ast-context.h>
9 #include <hilti/ast/forward.h>
10 #include <hilti/ast/id.h>
11 #include <hilti/ast/node.h>
15 namespace declaration {
27 constexpr util::enum_::Value<Linkage> Linkages[] = {{.value = Linkage::Struct, .name =
"struct"},
28 {.value = Linkage::Public, .name =
"public"},
29 {.value = Linkage::Private, .name =
"private"},
30 {.value = Linkage::Init, .name =
"init"},
31 {.value = Linkage::PreInit, .name =
"preinit"}};
35 constexpr
auto to_string(Linkage f) {
return util::enum_::to_string(f, detail::Linkages); }
43 constexpr
auto from_string(std::string_view s) {
return util::enum_::from_string<Linkage>(s, detail::Linkages); }
53 const auto&
id()
const {
return _id; }
86 _fqid = {}, _canonical_id = {};
117 auto p = node::Properties{{
"id", _id},
118 {
"linkage", declaration::to_string(_linkage)},
119 {
"declaration", to_string(_declaration_index)},
121 {
"canonical-id", _canonical_id}};
128 _linkage = other._linkage;
132 Declaration(Declaration&& other) =
default;
134 Declaration& operator=(
const Declaration& other) =
delete;
135 Declaration& operator=(Declaration&& other) =
delete;
138 friend class ASTContext;
140 Declaration(ASTContext* ctx, node::Tags node_tags, Nodes
children, ID
id, declaration::Linkage
linkage,
145 void setDeclarationIndex(ast::DeclarationIndex index) {
147 _declaration_index = index;
150 std::string
_dump()
const override;
152 HILTI_NODE_0(Declaration,
override);
156 declaration::Linkage _linkage;
158 ast::DeclarationIndex _declaration_index;
Definition: declaration.h:48
void setLinkage(declaration::Linkage linkage)
Definition: declaration.h:90
const auto & canonicalID() const
Definition: declaration.h:72
void setCanonicalID(ID id)
Definition: declaration.h:106
auto declarationIndex() const
Definition: declaration.h:78
node::Properties properties() const override
Definition: declaration.h:116
void setID(const ID &id)
Definition: declaration.h:84
void setFullyQualifiedID(ID id)
Definition: declaration.h:98
const auto & fullyQualifiedID() const
Definition: declaration.h:63
const auto & id() const
Definition: declaration.h:53
std::string _dump() const override
Definition: declaration.cc:10
virtual std::string_view displayName() const =0
auto linkage() const
Definition: declaration.h:56
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