8 #include <hilti/ast/attribute.h> 9 #include <hilti/ast/expression.h> 10 #include <hilti/ast/id.h> 11 #include <hilti/ast/type.h> 13 #include <spicy/ast/hook.h> 26 #include <spicy/autogen/__unit-item.h> 29 inline Node to_node(Item i) {
return Node(std::move(i)); }
32 inline std::ostream& operator<<(std::ostream& out, Item d) {
return out << to_node(std::move(d)); }
36 using Item = detail::Item;
37 using detail::to_node;
41 template<typename T, typename std::enable_if_t<std::is_base_of<trait::isUnitItem, T>::value>* =
nullptr>
42 inline Node to_node(T t) {
43 return Node(Item(std::move(t)));
51 inline bool operator==(
const spicy::type::unit::Item& x,
const spicy::type::unit::Item& y) {
55 assert(x.isEqual(y) == y.isEqual(x));
61 inline bool operator==(
const std::vector<spicy::type::unit::Item>& t1,
const std::vector<spicy::type::unit::Item>& t2) {
65 if ( t1.size() != t2.size() )
68 for (
auto i = std::make_pair(t1.cbegin(), t2.cbegin()); i.first != t1.end() && i.second != t2.end();
69 ++i.first, ++i.second )
70 if ( ! (*i.first == *i.second) )
76 inline bool operator!=(
const spicy::type::unit::Item& d1,
const spicy::type::unit::Item& d2) {
return ! (d1 == d2); }
78 inline bool operator!=(
const std::vector<spicy::type::unit::Item>& t1,
const std::vector<spicy::type::unit::Item>& t2) {
Definition: unit-item.h:19