8 #include <hilti/ast/id.h> 9 #include <hilti/ast/type.h> 18 Tuple(std::vector<std::pair<ID, Type>> t,
Meta m =
Meta()) :
TypeBase(nodes(std::move(t)), std::move(m)) {}
21 auto types()
const {
return childsOfType<Type>(); }
22 std::vector<ID> ids()
const;
23 auto elements()
const {
return util::zip2(ids(), types()); }
24 std::optional<std::pair<int, Type>> elementByID(
const ID&
id);
26 bool operator==(
const Tuple& other)
const {
27 if ( _wildcard || other._wildcard )
28 return _wildcard && other._wildcard;
30 return types() == other.types() && ids() == other.ids();
34 auto isEqual(
const Type& other)
const {
return node::isEqual(
this, other); }
44 bool _wildcard =
false;
auto properties() const
Definition: tuple.h:41
auto & childs() const
Definition: node.h:445
std::list< std::pair< A, B > > zip2(const std::list< A > &lhs, const std::list< B > &rhs)
Definition: util.h:475
auto isEqual(const Type &other) const
Definition: tuple.h:34
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
auto typeParameters() const
Definition: tuple.h:36
auto isWildcard() const
Definition: tuple.h:38