@@ -27,15 +27,6 @@ namespace Eval {
27
27
// Function visitors -----------------------------------------------------------
28
28
// -----------------------------------------------------------------------------
29
29
30
- auto member_visitor_ = Util::Overload {
31
- [](Util::NAT a, LIB::Interval b) { return b.isMember (a); },
32
- [](auto a, auto b) {
33
- Util::ERROR (" member_visitor_: wrong arguments " , a, " , " , b
34
- , " for isMember\n " );
35
- return false ;
36
- }
37
- };
38
-
39
30
auto min_visitor_ = Util::Overload {
40
31
[](LIB::Interval a) { return Util::MD_NAT (a.begin ()); },
41
32
[](LIB::MultiDimInter a) { return a.minElem (); },
@@ -407,24 +398,6 @@ ExprBaseType EvalExpression::operator()(AST::Call v) const
407
398
}
408
399
break ;
409
400
410
- case Eval::Func::member:
411
- if (eval_args.size () == 2 ) {
412
- arity_ok = true ;
413
-
414
- NatBaseType x = std::visit (EvalNatBT{}, eval_args[0 ]);
415
- Util::MD_NAT aux = std::get<Util::MD_NAT>(x);
416
- if (aux.arity () == 1 ) {
417
- ContainerBaseType container
418
- = std::visit (EvalContainer{}, eval_args[1 ]);
419
- bool result = std::visit (member_visitor_, NatBaseType (aux[0 ])
420
- , container);
421
- return Util::MD_NAT (result);
422
- }
423
-
424
- return Util::MD_NAT (0 );
425
- }
426
- break ;
427
-
428
401
case Eval::Func::min:
429
402
if (eval_args.size () == 1 ) {
430
403
arity_ok = true ;
@@ -754,8 +727,8 @@ ExprBaseType EvalExpression::operator()(AST::MultiDimInter v) const
754
727
{
755
728
SBG::LIB::SetPiece mdi = boost::apply_visitor (EvalMDI (env_), AST::Expr (v));
756
729
757
- Util::ERROR_UNLESS (mdi.arity () == nmbr_dims_
758
- , " EvalExpr: nmbr_dims_: " , nmbr_dims_, " != arity(" , mdi, " )\n " );
730
+ Util::ERROR_UNLESS (mdi.arity () == nmbr_dims_ || mdi. arity () == 0
731
+ , " EvalExpr: nmbr_dims_: " , nmbr_dims_, " != arity(" , mdi, " )\n " );
759
732
760
733
return mdi;
761
734
}
@@ -765,8 +738,8 @@ ExprBaseType EvalExpression::operator()(AST::MDInterUnaryOp v) const
765
738
EvalMDI visit_mdi (env_);
766
739
LIB::MultiDimInter mdi = boost::apply_visitor (visit_mdi, v.e ());
767
740
768
- Util::ERROR_UNLESS (mdi.arity () == nmbr_dims_
769
- , " EvalExpr: nmbr_dims_: " , nmbr_dims_, " != arity(" , mdi, " )\n " );
741
+ Util::ERROR_UNLESS (mdi.arity () == nmbr_dims_ || mdi. arity () == 0
742
+ , " EvalExpr: nmbr_dims_: " , nmbr_dims_, " != arity(" , mdi, " )\n " );
770
743
771
744
switch (v.op ()) {
772
745
case AST::ContainerUOp::card:
@@ -786,9 +759,10 @@ ExprBaseType EvalExpression::operator()(AST::MDInterBinOp v) const
786
759
LIB::MultiDimInter l = boost::apply_visitor (visit_mdi, v.left ());
787
760
LIB::MultiDimInter r = boost::apply_visitor (visit_mdi, v.right ());
788
761
789
- Util::ERROR_UNLESS (l.arity () == nmbr_dims_ && r.arity () == nmbr_dims_
790
- ," EvalExpr: nmbr_dims_: " , nmbr_dims_
791
- , " != arity(" , l, " ) or arity(" , r, " )\n " );
762
+ Util::ERROR_UNLESS ((l.arity () == nmbr_dims_ && r.arity () == nmbr_dims_)
763
+ || l.arity () == 0 || r.arity () == 0
764
+ ," EvalExpr: nmbr_dims_: " , nmbr_dims_, " != arity(" , l, " ) or arity(" , r
765
+ , " )\n " );
792
766
793
767
switch (v.op ()) {
794
768
case AST::ContainerOp::cap:
0 commit comments