72 const auto object_getter = [] (
auto &&port_ref) {
73 return port_ref.get_object ();
75 const auto src_output_ports =
76 src_refs | std::views::transform (object_getter);
77 const auto dest_input_ports =
78 dest_refs | std::views::transform (object_getter);
80 auto src_midi_out_ports =
82 | std::views::filter (ObjectView::type_projection<dsp::MidiPort>)
83 | std::views::transform (ObjectView::type_transformation<dsp::MidiPort>);
84 auto dest_midi_in_ports =
86 | std::views::filter (ObjectView::type_projection<dsp::MidiPort>)
87 | std::views::transform (ObjectView::type_transformation<dsp::MidiPort>);
88 auto src_audio_out_ports =
90 | std::views::filter (ObjectView::type_projection<dsp::AudioPort>)
91 | std::views::transform (ObjectView::type_transformation<dsp::AudioPort>);
92 auto dest_audio_in_ports =
94 | std::views::filter (ObjectView::type_projection<dsp::AudioPort>)
95 | std::views::transform (ObjectView::type_transformation<dsp::AudioPort>);
96 auto src_cv_out_ports =
98 | std::views::filter (ObjectView::type_projection<dsp::CVPort>)
99 | std::views::transform (ObjectView::type_transformation<dsp::CVPort>);
100 auto dest_cv_in_ports =
102 | std::views::filter (ObjectView::type_projection<dsp::CVPort>)
103 | std::views::transform (ObjectView::type_transformation<dsp::CVPort>);
105 bool connections_made{};
106 const auto make_conns = [&connections_made, &graph] (
const auto &ports) {
107 const auto &[src_port, dest_port] = ports;
109 connections_made =
true;
112 std::ranges::for_each (
113 std::views::zip (src_midi_out_ports, dest_midi_in_ports), make_conns);
114 std::ranges::for_each (
115 std::views::zip (src_audio_out_ports, dest_audio_in_ports), make_conns);
116 std::ranges::for_each (
117 std::views::zip (src_cv_out_ports, dest_cv_in_ports), make_conns);
119 return connections_made;