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[] = {
28 {Linkage::Struct,
"struct"}, {Linkage::Public,
"public"}, {Linkage::Private,
"private"},
29 {Linkage::Init,
"init"}, {Linkage::PreInit,
"preinit"},
34 constexpr
auto to_string(Linkage f) {
return util::enum_::to_string(f, detail::Linkages); }
42 constexpr
auto from_string(std::string_view s) {
return util::enum_::from_string<Linkage>(s, detail::Linkages); }
52 const auto&
id()
const {
return _id; }
85 _fqid = {}, _canonical_id = {};
116 auto p = node::Properties{{
"id", _id},
117 {
"linkage", declaration::to_string(_linkage)},
118 {
"declaration", to_string(_declaration_index)},
120 {
"canonical-id", _canonical_id}};
127 _linkage = other._linkage;
131 Declaration(Declaration&& other) =
default;
133 Declaration& operator=(
const Declaration& other) =
delete;
134 Declaration& operator=(Declaration&& other) =
delete;
137 friend class ASTContext;
139 Declaration(ASTContext* ctx, node::Tags node_tags, Nodes
children, ID
id, declaration::Linkage
linkage,
144 void setDeclarationIndex(ast::DeclarationIndex index) {
146 _declaration_index = index;
149 std::string
_dump()
const override;
151 HILTI_NODE_0(Declaration,
override);
155 declaration::Linkage _linkage;
157 ast::DeclarationIndex _declaration_index;
Definition: declaration.h:47
void setLinkage(declaration::Linkage linkage)
Definition: declaration.h:89
const auto & canonicalID() const
Definition: declaration.h:71
void setCanonicalID(ID id)
Definition: declaration.h:105
auto declarationIndex() const
Definition: declaration.h:77
node::Properties properties() const override
Definition: declaration.h:115
void setID(const ID &id)
Definition: declaration.h:83
void setFullyQualifiedID(ID id)
Definition: declaration.h:97
const auto & fullyQualifiedID() const
Definition: declaration.h:62
const auto & id() const
Definition: declaration.h:52
std::string _dump() const override
Definition: declaration.cc:10
virtual std::string_view displayName() const =0
auto linkage() const
Definition: declaration.h:55
const auto & children() const
Definition: node.h:363
const auto & meta() const
Definition: node.h:305
Node(ASTContext *ctx, node::Tags node_tags, Nodes children, Meta meta)
Definition: node.h:897
virtual node::Properties properties() const
Definition: node.h:866