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,
"method"}, {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); }
50 #include <hilti/autogen/__declaration.h> 53 inline Node to_node(Declaration t) {
return Node(std::move(t)); }
56 inline std::ostream& operator<<(std::ostream& out, Declaration d) {
return out << to_node(std::move(d)); }
58 inline bool operator==(
const Declaration& x,
const Declaration& y) {
62 assert(x.isEqual(y) == y.isEqual(x));
66 inline bool operator!=(
const Declaration& d1,
const Declaration& d2) {
return ! (d1 == d2); }
71 using Declaration = declaration::detail::Declaration;
72 using declaration::detail::to_node;
75 template<typename T, typename std::enable_if_t<std::is_base_of<trait::isDeclaration, T>::value>* =
nullptr>
76 inline Node to_node(T t) {
77 return Node(Declaration(std::move(t)));
Definition: declaration.h:15