7 #include <hilti/ast/id.h> 8 #include <hilti/ast/node.h> 9 #include <hilti/base/type_erase.h> 18 namespace declaration {
31 {Linkage::Struct,
"struct"}, {Linkage::Public,
"public"}, {Linkage::Private,
"private"},
32 {Linkage::Init,
"init"}, {Linkage::PreInit,
"preinit"},
37 constexpr
auto to_string(Linkage f) {
return util::enum_::to_string(f, detail::linkages); }
45 constexpr
auto from_string(
const std::string_view& s) {
return util::enum_::from_string<Linkage>(s, detail::linkages); }
49 #include <hilti/autogen/__declaration.h> 55 using declaration::detail::Declaration::Declaration;
62 inline std::ostream& operator<<(std::ostream& out,
Declaration d) {
return out << to_node(std::move(d)); }
68 assert(x.isEqual(y) == y.isEqual(x));
74 namespace declaration {
76 template<typename T, typename std::enable_if_t<std::is_base_of<trait::isDeclaration, T>::value>* =
nullptr>
77 inline Node to_node(T t) {
89 using NodeBase::NodeBase;
Definition: declaration.h:53
const ID & canonicalID() const
Definition: declaration.h:92
Definition: declaration.h:87
void setCanonicalID(ID id)
Definition: declaration.h:94
Definition: declaration.h:15