536 {
537 typename AVariableManager::VarVariant left_eval =
m_left_enode->evaluate(p);
538 typename AVariableManager::VarVariant center_eval =
m_center_enode->evaluate(p);
539 typename AVariableManager::VarVariant right_eval =
m_right_enode->evaluate(p);
540
542 case ComparisonOperator::EQUALEQUAL:
543 if (not std::visit(EqualVisitor {}, left_eval, center_eval)) return false;
544 break;
545 case ComparisonOperator::GREATEREQUAL:
546 if (not std::visit(Visitor<std::greater_equal> {}, left_eval, center_eval)) return false;
547 break;
548 case ComparisonOperator::LESSEQUAL:
549 if (not std::visit(Visitor<std::less_equal> {}, left_eval, center_eval)) return false;
550 break;
551 case ComparisonOperator::GREATER:
552 if (not std::visit(Visitor<std::greater> {}, left_eval, center_eval)) return false;
553 break;
554 case ComparisonOperator::LESS:
555 if (not std::visit(Visitor<std::less> {}, left_eval, center_eval)) return false;
556 break;
557 case ComparisonOperator::NOTEQUAL:
558 if (std::visit(EqualVisitor {}, left_eval, center_eval)) return false;
559 break;
560 default:
561 throw std::runtime_error("TernaryRelational has an invalid m_lc_operator");
562 }
564 case ComparisonOperator::EQUALEQUAL:
565 if (not std::visit(EqualVisitor {}, center_eval, right_eval)) return false;
566 break;
567 case ComparisonOperator::GREATEREQUAL:
568 if (not std::visit(Visitor<std::greater_equal> {}, center_eval, right_eval)) return false;
569 break;
570 case ComparisonOperator::LESSEQUAL:
571 if (not std::visit(Visitor<std::less_equal> {}, center_eval, right_eval)) return false;
572 break;
573 case ComparisonOperator::GREATER:
574 if (not std::visit(Visitor<std::greater> {}, center_eval, right_eval)) return false;
575 break;
576 case ComparisonOperator::LESS:
577 if (not std::visit(Visitor<std::less> {}, center_eval, right_eval)) return false;
578 break;
579 case ComparisonOperator::NOTEQUAL:
580 if (std::visit(EqualVisitor {}, center_eval, right_eval)) return false;
581 break;
582 default:
583 throw std::runtime_error("TernaryRelational has an invalid m_cr_operator");
584 }
585 return true;
586 }