Lines Matching defs:TupleKindPtr
72 TupleKindPtr TupleKind::apply(const Substitution &subs,
73 const TupleKindPtr &self) const
82 static TupleKindPtr apply(const TupleKindPtr tuple, const Substitution &subs)
91 TupleKindPtr TupleKind::left() const
93 return TupleKindPtr();
100 TupleKindPtr TupleKind::right() const
102 return TupleKindPtr();
116 TupleKindPtr::TupleKindPtr(Fixed) : Base(std::make_shared<TupleKind>(""))
122 static TupleKindPtr Ctx{Fixed()};
123 static TupleKindPtr Integer{Fixed()};
124 static TupleKindPtr Str{Fixed()};
125 static TupleKindPtr Res{Fixed()};
133 static TupleKindPtr Anonymous("Anonymous");
134 static TupleKindPtr Leaf("Leaf");
138 static TupleKindPtr Domain("Domain");
139 static TupleKindPtr Domain2("Domain2");
140 static TupleKindPtr Domain3("Domain3");
141 static TupleKindPtr Range("Range");
142 static TupleKindPtr Range2("Range2");
143 static TupleKindPtr Range3("Range3");
169 TupleKindPtr::TupleKindPtr(const std::string &name) :
177 Pair(const TupleKindPtr &tuple1, const TupleKindPtr &tuple2) :
182 virtual TupleKindPtr apply(const Substitution &match,
183 const TupleKindPtr &self) const override;
184 virtual TupleKindPtr left() const override;
185 virtual TupleKindPtr right() const override;
187 const TupleKindPtr tuple1;
188 const TupleKindPtr tuple2;
235 TupleKindPtr Pair::apply(const Substitution &subs, const TupleKindPtr &self)
238 return TupleKindPtr(::apply(tuple1, subs), ::apply(tuple2, subs));
243 TupleKindPtr Pair::left() const
250 TupleKindPtr Pair::right() const
258 TupleKindPtr::TupleKindPtr(const TupleKindPtr &left, const TupleKindPtr &right)
364 auto arg = TupleKindPtr(arg_name);
1202 * In case of a TupleKindPtr, it's a template argument.
1204 static void print_template_arg(std::ostream &os, const TupleKindPtr &kind)
1210 * arguments (TupleKindPtr) "args", without the enclosing angle brackets.
1223 * arguments (TupleKindPtr) "args".
2010 static bool update_sub_base(Substitution &sub, const TupleKindPtr &general,
2011 const TupleKindPtr &specific)
2035 static bool update_sub(Substitution &sub, const TupleKindPtr &general,
2036 const TupleKindPtr &specific)
2194 static bool assignable(const TupleKindPtr &kind)
2206 static Substitution assign(const TupleKindPtr &kind1, const TupleKindPtr &kind2)
2230 static Substitution compute_unifier(const TupleKindPtr &kind1,
2231 const TupleKindPtr &kind2);
2241 static Substitution combine_unifiers(const TupleKindPtr &kind1,
2242 const TupleKindPtr &kind2, const Substitution &unifier)
2262 static Substitution compute_pair_unifier(const TupleKindPtr &kind1,
2263 const TupleKindPtr &kind2)
2286 static Substitution compute_unifier(const TupleKindPtr &kind1,
2287 const TupleKindPtr &kind2)