75 const auto object_getter = [] (
auto &&port_ref) {
return port_ref.get (); };
76 const auto src_output_ports =
77 src_refs | std::views::transform (object_getter);
78 const auto dest_input_ports =
79 dest_refs | std::views::transform (object_getter);
81 using utils::views::qobject_cast_and_filter;
82 auto src_midi_out_ports =
83 src_output_ports | qobject_cast_and_filter<dsp::MidiPort>;
84 auto dest_midi_in_ports =
85 dest_input_ports | qobject_cast_and_filter<dsp::MidiPort>;
86 auto src_audio_out_ports =
87 src_output_ports | qobject_cast_and_filter<dsp::AudioPort>;
88 auto dest_audio_in_ports =
89 dest_input_ports | qobject_cast_and_filter<dsp::AudioPort>;
90 auto src_cv_out_ports =
91 src_output_ports | qobject_cast_and_filter<dsp::CVPort>;
92 auto dest_cv_in_ports =
93 dest_input_ports | qobject_cast_and_filter<dsp::CVPort>;
95 bool connections_made{};
96 const auto make_conns = [&connections_made, &graph] (
const auto &ports) {
97 const auto &[src_port, dest_port] = ports;
99 connections_made =
true;
102 std::ranges::for_each (
103 std::views::zip (src_midi_out_ports, dest_midi_in_ports), make_conns);
104 std::ranges::for_each (
105 std::views::zip (src_audio_out_ports, dest_audio_in_ports), make_conns);
106 std::ranges::for_each (
107 std::views::zip (src_cv_out_ports, dest_cv_in_ports), make_conns);
109 return connections_made;