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