@@ -42,5 +42,39 @@ void Input<T>::connect_fanout(MultiportInput<T>& input) {
4242 }
4343 connect_fanout_ (left_ports, right_ports, reactor::ConnectionProperties{});
4444}
45+
46+ template <typename T>
47+ template <typename ReactorType>
48+ void Input<T>::connect(ReactorBankInputPortOffset<ReactorType, T> &&other_bank_ports) {
49+ std::set<reactor::Port<T>*> left_ports;
50+ std::set<reactor::Port<T>*> right_ports;
51+ bool result = left_ports.insert (this ).second ;
52+ reactor_assert (result);
53+ for (auto &p_reactor : other_bank_ports) {
54+ auto *reactor = p_reactor.get ();
55+ char * reactor_base = reinterpret_cast <char *>(reactor);
56+ Input<T>* port = reinterpret_cast <Input<T>*>(reactor_base + other_bank_ports.get_offset ());
57+ result = right_ports.insert (port).second ;
58+ reactor_assert (result);
59+ }
60+ connect_ (left_ports, right_ports, reactor::ConnectionProperties{});
61+ }
62+
63+ template <typename T>
64+ template <typename ReactorType>
65+ void Input<T>::connect_fanout(ReactorBankInputPortOffset<ReactorType, T> &&other_bank_ports) {
66+ std::set<reactor::Port<T>*> left_ports;
67+ std::set<reactor::Port<T>*> right_ports;
68+ bool result = left_ports.insert (this ).second ;
69+ reactor_assert (result);
70+ for (auto &p_reactor : other_bank_ports) {
71+ auto *reactor = p_reactor.get ();
72+ char * reactor_base = reinterpret_cast <char *>(reactor);
73+ Input<T>* port = reinterpret_cast <Input<T>*>(reactor_base + other_bank_ports.get_offset ());
74+ result = right_ports.insert (port).second ;
75+ reactor_assert (result);
76+ }
77+ connect_fanout_ (left_ports, right_ports, reactor::ConnectionProperties{});
78+ }
4579
4680} // namespace sdk
0 commit comments