@@ -287,6 +287,272 @@ class CoreMod : public EvaluableExpr {
287287 std::unique_ptr<api::FunctionExpr> expr_;
288288};
289289
290+ // --- Array Expressions ---
291+
292+ class CoreArrayReverse : public EvaluableExpr {
293+ public:
294+ explicit CoreArrayReverse (const api::FunctionExpr& expr)
295+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
296+ }
297+ EvaluateResult Evaluate (
298+ const api::EvaluateContext& context,
299+ const model::PipelineInputOutput& document) const override ;
300+
301+ private:
302+ std::unique_ptr<api::FunctionExpr> expr_;
303+ };
304+
305+ class CoreArrayContains : public EvaluableExpr {
306+ public:
307+ explicit CoreArrayContains (const api::FunctionExpr& expr)
308+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
309+ }
310+ EvaluateResult Evaluate (
311+ const api::EvaluateContext& context,
312+ const model::PipelineInputOutput& document) const override ;
313+
314+ private:
315+ std::unique_ptr<api::FunctionExpr> expr_;
316+ };
317+
318+ class CoreArrayContainsAll : public EvaluableExpr {
319+ public:
320+ explicit CoreArrayContainsAll (const api::FunctionExpr& expr)
321+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
322+ }
323+ EvaluateResult Evaluate (
324+ const api::EvaluateContext& context,
325+ const model::PipelineInputOutput& document) const override ;
326+
327+ private:
328+ std::unique_ptr<api::FunctionExpr> expr_;
329+ };
330+
331+ class CoreArrayContainsAny : public EvaluableExpr {
332+ public:
333+ explicit CoreArrayContainsAny (const api::FunctionExpr& expr)
334+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
335+ }
336+ EvaluateResult Evaluate (
337+ const api::EvaluateContext& context,
338+ const model::PipelineInputOutput& document) const override ;
339+
340+ private:
341+ std::unique_ptr<api::FunctionExpr> expr_;
342+ };
343+
344+ class CoreArrayLength : public EvaluableExpr {
345+ public:
346+ explicit CoreArrayLength (const api::FunctionExpr& expr)
347+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
348+ }
349+ EvaluateResult Evaluate (
350+ const api::EvaluateContext& context,
351+ const model::PipelineInputOutput& document) const override ;
352+
353+ private:
354+ std::unique_ptr<api::FunctionExpr> expr_;
355+ };
356+
357+ // --- Logical Expressions ---
358+
359+ class CoreAnd : public EvaluableExpr {
360+ public:
361+ explicit CoreAnd (const api::FunctionExpr& expr)
362+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
363+ }
364+ EvaluateResult Evaluate (
365+ const api::EvaluateContext& context,
366+ const model::PipelineInputOutput& document) const override ;
367+
368+ private:
369+ std::unique_ptr<api::FunctionExpr> expr_;
370+ };
371+
372+ class CoreOr : public EvaluableExpr {
373+ public:
374+ explicit CoreOr (const api::FunctionExpr& expr)
375+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
376+ }
377+ EvaluateResult Evaluate (
378+ const api::EvaluateContext& context,
379+ const model::PipelineInputOutput& document) const override ;
380+
381+ private:
382+ std::unique_ptr<api::FunctionExpr> expr_;
383+ };
384+
385+ class CoreXor : public EvaluableExpr {
386+ public:
387+ explicit CoreXor (const api::FunctionExpr& expr)
388+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
389+ }
390+ EvaluateResult Evaluate (
391+ const api::EvaluateContext& context,
392+ const model::PipelineInputOutput& document) const override ;
393+
394+ private:
395+ std::unique_ptr<api::FunctionExpr> expr_;
396+ };
397+
398+ class CoreCond : public EvaluableExpr {
399+ public:
400+ explicit CoreCond (const api::FunctionExpr& expr)
401+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
402+ }
403+ EvaluateResult Evaluate (
404+ const api::EvaluateContext& context,
405+ const model::PipelineInputOutput& document) const override ;
406+
407+ private:
408+ std::unique_ptr<api::FunctionExpr> expr_;
409+ };
410+
411+ class CoreEqAny : public EvaluableExpr {
412+ public:
413+ explicit CoreEqAny (const api::FunctionExpr& expr)
414+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
415+ }
416+ EvaluateResult Evaluate (
417+ const api::EvaluateContext& context,
418+ const model::PipelineInputOutput& document) const override ;
419+
420+ private:
421+ std::unique_ptr<api::FunctionExpr> expr_;
422+ };
423+
424+ class CoreNotEqAny : public EvaluableExpr {
425+ public:
426+ explicit CoreNotEqAny (const api::FunctionExpr& expr)
427+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
428+ }
429+ EvaluateResult Evaluate (
430+ const api::EvaluateContext& context,
431+ const model::PipelineInputOutput& document) const override ;
432+
433+ private:
434+ std::unique_ptr<api::FunctionExpr> expr_;
435+ };
436+
437+ class CoreIsNan : public EvaluableExpr {
438+ public:
439+ explicit CoreIsNan (const api::FunctionExpr& expr)
440+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
441+ }
442+ EvaluateResult Evaluate (
443+ const api::EvaluateContext& context,
444+ const model::PipelineInputOutput& document) const override ;
445+
446+ private:
447+ std::unique_ptr<api::FunctionExpr> expr_;
448+ };
449+
450+ class CoreIsNotNan : public EvaluableExpr {
451+ public:
452+ explicit CoreIsNotNan (const api::FunctionExpr& expr)
453+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
454+ }
455+ EvaluateResult Evaluate (
456+ const api::EvaluateContext& context,
457+ const model::PipelineInputOutput& document) const override ;
458+
459+ private:
460+ std::unique_ptr<api::FunctionExpr> expr_;
461+ };
462+
463+ class CoreIsNull : public EvaluableExpr {
464+ public:
465+ explicit CoreIsNull (const api::FunctionExpr& expr)
466+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
467+ }
468+ EvaluateResult Evaluate (
469+ const api::EvaluateContext& context,
470+ const model::PipelineInputOutput& document) const override ;
471+
472+ private:
473+ std::unique_ptr<api::FunctionExpr> expr_;
474+ };
475+
476+ class CoreIsNotNull : public EvaluableExpr {
477+ public:
478+ explicit CoreIsNotNull (const api::FunctionExpr& expr)
479+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
480+ }
481+ EvaluateResult Evaluate (
482+ const api::EvaluateContext& context,
483+ const model::PipelineInputOutput& document) const override ;
484+
485+ private:
486+ std::unique_ptr<api::FunctionExpr> expr_;
487+ };
488+
489+ class CoreIsError : public EvaluableExpr {
490+ public:
491+ explicit CoreIsError (const api::FunctionExpr& expr)
492+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
493+ }
494+ EvaluateResult Evaluate (
495+ const api::EvaluateContext& context,
496+ const model::PipelineInputOutput& document) const override ;
497+
498+ private:
499+ std::unique_ptr<api::FunctionExpr> expr_;
500+ };
501+
502+ class CoreLogicalMaximum : public EvaluableExpr {
503+ public:
504+ explicit CoreLogicalMaximum (const api::FunctionExpr& expr)
505+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
506+ }
507+ EvaluateResult Evaluate (
508+ const api::EvaluateContext& context,
509+ const model::PipelineInputOutput& document) const override ;
510+
511+ private:
512+ std::unique_ptr<api::FunctionExpr> expr_;
513+ };
514+
515+ class CoreLogicalMinimum : public EvaluableExpr {
516+ public:
517+ explicit CoreLogicalMinimum (const api::FunctionExpr& expr)
518+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
519+ }
520+ EvaluateResult Evaluate (
521+ const api::EvaluateContext& context,
522+ const model::PipelineInputOutput& document) const override ;
523+
524+ private:
525+ std::unique_ptr<api::FunctionExpr> expr_;
526+ };
527+
528+ // --- Debugging Expressions ---
529+
530+ class CoreExists : public EvaluableExpr {
531+ public:
532+ explicit CoreExists (const api::FunctionExpr& expr)
533+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
534+ }
535+ EvaluateResult Evaluate (
536+ const api::EvaluateContext& context,
537+ const model::PipelineInputOutput& document) const override ;
538+
539+ private:
540+ std::unique_ptr<api::FunctionExpr> expr_;
541+ };
542+
543+ class CoreNot : public EvaluableExpr {
544+ public:
545+ explicit CoreNot (const api::FunctionExpr& expr)
546+ : expr_(std::make_unique<api::FunctionExpr>(expr)) {
547+ }
548+ EvaluateResult Evaluate (
549+ const api::EvaluateContext& context,
550+ const model::PipelineInputOutput& document) const override ;
551+
552+ private:
553+ std::unique_ptr<api::FunctionExpr> expr_;
554+ };
555+
290556/* *
291557 * Converts a high-level expression representation into an evaluable one.
292558 */
0 commit comments