@@ -156,226 +156,87 @@ std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::IsNull(
156156 return IsNull<BoundReference>(Ref (std::move (name)));
157157}
158158
159- template <typename B>
160- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::IsNull (
161- std::shared_ptr<UnboundTerm<B>> expr) {
162- ICEBERG_ASSIGN_OR_THROW (
163- auto pred,
164- UnboundPredicateImpl<B>::Make (Expression::Operation::kIsNull , std::move (expr)));
165- return pred;
166- }
167-
168159std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotNull (
169160 std::string name) {
170161 return NotNull<BoundReference>(Ref (std::move (name)));
171162}
172163
173- template <typename B>
174- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotNull (
175- std::shared_ptr<UnboundTerm<B>> expr) {
176- ICEBERG_ASSIGN_OR_THROW (
177- auto pred,
178- UnboundPredicateImpl<B>::Make (Expression::Operation::kNotNull , std::move (expr)));
179- return pred;
180- }
181-
182164std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::IsNaN (
183165 std::string name) {
184166 return IsNaN<BoundReference>(Ref (std::move (name)));
185167}
186168
187- template <typename B>
188- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::IsNaN (
189- std::shared_ptr<UnboundTerm<B>> expr) {
190- ICEBERG_ASSIGN_OR_THROW (auto pred, UnboundPredicateImpl<B>::Make (
191- Expression::Operation::kIsNan , std::move (expr)));
192- return pred;
193- }
194-
195169std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotNaN (
196170 std::string name) {
197171 return NotNaN<BoundReference>(Ref (std::move (name)));
198172}
199173
200- template <typename B>
201- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotNaN (
202- std::shared_ptr<UnboundTerm<B>> expr) {
203- ICEBERG_ASSIGN_OR_THROW (
204- auto pred,
205- UnboundPredicateImpl<B>::Make (Expression::Operation::kNotNan , std::move (expr)));
206- return pred;
207- }
208-
209174// Template implementations for comparison predicates
210175
211176std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::LessThan (
212177 std::string name, Literal value) {
213178 return LessThan<BoundReference>(Ref (std::move (name)), std::move (value));
214179}
215180
216- template <typename B>
217- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::LessThan (
218- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
219- ICEBERG_ASSIGN_OR_THROW (
220- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kLt ,
221- std::move (expr), std::move (value)));
222- return pred;
223- }
224-
225181std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::LessThanOrEqual (
226182 std::string name, Literal value) {
227183 return LessThanOrEqual<BoundReference>(Ref (std::move (name)), std::move (value));
228184}
229185
230- template <typename B>
231- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::LessThanOrEqual (
232- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
233- ICEBERG_ASSIGN_OR_THROW (
234- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kLtEq ,
235- std::move (expr), std::move (value)));
236- return pred;
237- }
238-
239186std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::GreaterThan (
240187 std::string name, Literal value) {
241188 return GreaterThan<BoundReference>(Ref (std::move (name)), std::move (value));
242189}
243190
244- template <typename B>
245- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::GreaterThan (
246- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
247- ICEBERG_ASSIGN_OR_THROW (
248- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kGt ,
249- std::move (expr), std::move (value)));
250- return pred;
251- }
252-
253191std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::GreaterThanOrEqual (
254192 std::string name, Literal value) {
255193 return GreaterThanOrEqual<BoundReference>(Ref (std::move (name)), std::move (value));
256194}
257195
258- template <typename B>
259- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::GreaterThanOrEqual (
260- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
261- ICEBERG_ASSIGN_OR_THROW (
262- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kGtEq ,
263- std::move (expr), std::move (value)));
264- return pred;
265- }
266-
267196std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::Equal (std::string name,
268197 Literal value) {
269198 return Equal<BoundReference>(Ref (std::move (name)), std::move (value));
270199}
271200
272- template <typename B>
273- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::Equal (
274- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
275- ICEBERG_ASSIGN_OR_THROW (
276- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kEq ,
277- std::move (expr), std::move (value)));
278- return pred;
279- }
280-
281201std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotEqual (
282202 std::string name, Literal value) {
283203 return NotEqual<BoundReference>(Ref (std::move (name)), std::move (value));
284204}
285205
286- template <typename B>
287- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotEqual (
288- std::shared_ptr<UnboundTerm<B>> expr, Literal value) {
289- ICEBERG_ASSIGN_OR_THROW (
290- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kNotEq ,
291- std::move (expr), std::move (value)));
292- return pred;
293- }
294-
295206// String predicates
296207
297208std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::StartsWith (
298209 std::string name, std::string value) {
299210 return StartsWith<BoundReference>(Ref (std::move (name)), std::move (value));
300211}
301212
302- template <typename B>
303- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::StartsWith (
304- std::shared_ptr<UnboundTerm<B>> expr, std::string value) {
305- ICEBERG_ASSIGN_OR_THROW (
306- auto pred,
307- UnboundPredicateImpl<B>::Make (Expression::Operation::kStartsWith , std::move (expr),
308- Literal::String (std::move (value))));
309- return pred;
310- }
311-
312213std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotStartsWith (
313214 std::string name, std::string value) {
314215 return NotStartsWith<BoundReference>(Ref (std::move (name)), std::move (value));
315216}
316217
317- template <typename B>
318- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotStartsWith (
319- std::shared_ptr<UnboundTerm<B>> expr, std::string value) {
320- ICEBERG_ASSIGN_OR_THROW (
321- auto pred,
322- UnboundPredicateImpl<B>::Make (Expression::Operation::kNotStartsWith ,
323- std::move (expr), Literal::String (std::move (value))));
324- return pred;
325- }
326-
327218// Template implementations for set predicates
328219
329220std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::In (
330221 std::string name, std::vector<Literal> values) {
331222 return In<BoundReference>(Ref (std::move (name)), std::move (values));
332223}
333224
334- template <typename B>
335- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::In (
336- std::shared_ptr<UnboundTerm<B>> expr, std::vector<Literal> values) {
337- ICEBERG_ASSIGN_OR_THROW (
338- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kIn ,
339- std::move (expr), std::move (values)));
340- return pred;
341- }
342-
343225std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::In (
344226 std::string name, std::initializer_list<Literal> values) {
345227 return In<BoundReference>(Ref (std::move (name)), std::vector<Literal>(values));
346228}
347229
348- template <typename B>
349- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::In (
350- std::shared_ptr<UnboundTerm<B>> expr, std::initializer_list<Literal> values) {
351- return In<B>(std::move (expr), std::vector<Literal>(values));
352- }
353-
354230std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotIn (
355231 std::string name, std::vector<Literal> values) {
356232 return NotIn<BoundReference>(Ref (std::move (name)), std::move (values));
357233}
358234
359- template <typename B>
360- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotIn (
361- std::shared_ptr<UnboundTerm<B>> expr, std::vector<Literal> values) {
362- ICEBERG_ASSIGN_OR_THROW (
363- auto pred, UnboundPredicateImpl<B>::Make (Expression::Operation::kNotIn ,
364- std::move (expr), std::move (values)));
365- return pred;
366- }
367-
368235std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::NotIn (
369236 std::string name, std::initializer_list<Literal> values) {
370237 return NotIn<BoundReference>(Ref (std::move (name)), std::vector<Literal>(values));
371238}
372239
373- template <typename B>
374- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::NotIn (
375- std::shared_ptr<UnboundTerm<B>> expr, std::initializer_list<Literal> values) {
376- return NotIn<B>(expr, std::vector<Literal>(values));
377- }
378-
379240// Template implementations for generic predicate factory
380241
381242std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::Predicate (
@@ -404,29 +265,6 @@ std::shared_ptr<UnboundPredicateImpl<BoundReference>> Expressions::Predicate(
404265 return pred;
405266}
406267
407- template <typename B>
408- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::Predicate (
409- Expression::Operation op, std::shared_ptr<UnboundTerm<B>> expr,
410- std::vector<Literal> values) {
411- ICEBERG_ASSIGN_OR_THROW (
412- auto pred, UnboundPredicateImpl<B>::Make (op, std::move (expr), std::move (values)));
413- return pred;
414- }
415-
416- template <typename B>
417- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::Predicate (
418- Expression::Operation op, std::shared_ptr<UnboundTerm<B>> expr,
419- std::initializer_list<Literal> values) {
420- return Predicate<B>(op, std::move (expr), std::vector<Literal>(values));
421- }
422-
423- template <typename B>
424- std::shared_ptr<UnboundPredicateImpl<B>> Expressions::Predicate (
425- Expression::Operation op, std::shared_ptr<UnboundTerm<B>> expr) {
426- ICEBERG_ASSIGN_OR_THROW (auto pred, UnboundPredicateImpl<B>::Make (op, std::move (expr)));
427- return pred;
428- }
429-
430268// Constants
431269
432270std::shared_ptr<True> Expressions::AlwaysTrue () { return True::Instance (); }
0 commit comments