@@ -42,5 +42,39 @@ void Input<T>::connect_fanout(MultiportInput<T>& input) {
42
42
}
43
43
connect_fanout_ (left_ports, right_ports, reactor::ConnectionProperties{});
44
44
}
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
+ }
45
79
46
80
} // namespace sdk
0 commit comments