616{
617 using sequence_diagram::model::method;
618 using sequence_diagram::model::participant;
619
621 return {};
622
623 const auto &sequence_model =
624 dynamic_cast<const sequence_diagram::model::diagram &>(d);
626 [&sequence_model, &p](const auto &el) {
627
628 if (el.type != config::element_filter_t::filtered_type::any &&
629 config::to_string(el.type) != p.type_name()) {
630 return false;
631 }
632
633 if (p.type_name() == "method") {
634 const auto &m = dynamic_cast<const method &>(p);
635 const auto class_id = m.class_id();
636 const auto &class_participant =
637 sequence_model.get_participant<participant>(class_id)
638 .value();
639
640 return (el.name == p.name_and_ns()) ||
641 (el.name == p.full_name(false)) ||
642 (el.name == class_participant.full_name(false));
643 }
644
645 if (p.type_name() == "objc_method") {
646 const auto &m =
647 dynamic_cast<const sequence_diagram::model::objc_method &>(
648 p);
649 const auto class_id = m.class_id();
650 const auto &class_participant =
651 sequence_model.get_participant<participant>(class_id)
652 .value();
653
654 return (el.name == p.name_and_ns()) ||
655 (el.name == p.full_name(false)) ||
656 (el.name == class_participant.full_name(false));
657 }
658
659 return el.name == p.full_name(false);
660 });
661
665 "Participant {} rejected by element_filter", p.full_name(false));
666 }
667
668 return res;
669}