8 #include <hilti/ast/id.h> 9 #include <hilti/ast/node.h> 10 #include <hilti/base/type_erase.h> 19 namespace declaration {
32 {Linkage::Struct,
"struct"}, {Linkage::Public,
"public"}, {Linkage::Private,
"private"},
33 {Linkage::Init,
"init"}, {Linkage::PreInit,
"preinit"},
38 constexpr
auto to_string(Linkage f) {
return util::enum_::to_string(f, detail::linkages); }
46 constexpr
auto from_string(
const std::string_view& s) {
return util::enum_::from_string<Linkage>(s, detail::linkages); }
50 #include <hilti/autogen/__declaration.h> 56 using declaration::detail::Declaration::Declaration;
63 inline std::ostream& operator<<(std::ostream& out,
Declaration d) {
return out << to_node(std::move(d)); }
69 assert(x.isEqual(y) == y.isEqual(x));
75 namespace declaration {
77 template<typename T, typename std::enable_if_t<std::is_base_of<trait::isDeclaration, T>::value>* =
nullptr>
78 inline Node to_node(T t) {
90 using NodeBase::NodeBase;
Definition: declaration.h:54
const ID & canonicalID() const
Definition: declaration.h:93
Definition: declaration.h:88
void setCanonicalID(ID id)
Definition: declaration.h:95
Definition: declaration.h:16