30 #define _MAPBASE_HPP_ 1
38 #include "kernelkeeper.tcc"
39 #include "portexception.hpp"
40 #include "schedule.hpp"
41 #include "simpleschedule.hpp"
43 #include "port_info.hpp"
44 #include "allocate.hpp"
45 #include "dynalloc.hpp"
46 #include "stdalloc.hpp"
97 enum spec { in, out };
130 template < order::spec t = order::in >
133 const std::size_t buffer = 0 )
155 std::stringstream ss;
157 "Source port from kernel " <<
158 abi::__cxa_demangle(
typeid( *a ).name(), 0, 0, &status ) <<
159 "has more than a single port.";
163 port_info_a->fixed_buffer_size = buffer;
171 std::stringstream ss;
172 ss <<
"Destination port from kernel " <<
173 abi::__cxa_demangle(
typeid( *b ).name(), 0, 0, &status ) <<
174 "has more than a single port.";
177 port_info_b->fixed_buffer_size = buffer;
179 join( *a, port_info_a->my_name, *port_info_a,
180 *b, port_info_b->my_name, *port_info_b );
185 port_info_a->out_of_order =
false;
186 port_info_b->out_of_order =
false;
191 port_info_a->out_of_order =
true;
192 port_info_b->out_of_order =
true;
213 template < order::spec t = order::in >
215 const std::string a_port,
217 const std::size_t buffer = 0 )
232 port_info_a.fixed_buffer_size = buffer;
240 std::stringstream ss;
241 ss <<
"Destination port from kernel " <<
242 abi::__cxa_demangle(
typeid( *b ).name(), 0, 0, &status ) <<
243 "has more than a single port.";
246 port_info_b->fixed_buffer_size = buffer;
247 join( *a, a_port , port_info_a,
248 *b, port_info_b->my_name, *port_info_b );
253 port_info_a.out_of_order =
false;
254 port_info_b->out_of_order =
false;
259 port_info_a.out_of_order =
true;
260 port_info_b->out_of_order =
true;
282 template < order::spec t = order::in >
285 const std::string b_port,
286 const std::size_t buffer = 0 )
306 std::stringstream ss;
308 ss <<
"Source port from kernel " <<
309 abi::__cxa_demangle(
typeid( *a ).name(), 0, 0, &status ) <<
310 "has more than a single port.";
313 port_info_a->fixed_buffer_size = buffer;
316 port_info_b.fixed_buffer_size = buffer;
318 join( *a, port_info_a->my_name, *port_info_a,
319 *b, b_port, port_info_b );
324 port_info_a->out_of_order =
false;
325 port_info_b.out_of_order =
false;
330 port_info_a->out_of_order =
true;
331 port_info_b.out_of_order =
true;
350 template < order::spec t = order::in >
352 const std::string a_port,
354 const std::string b_port,
355 const std::size_t buffer = 0 )
369 port_info_a.fixed_buffer_size = buffer;
371 port_info_b.fixed_buffer_size = buffer;
373 join( *a, a_port, port_info_a,
374 *b, b_port, port_info_b );
379 port_info_a.out_of_order =
false;
380 port_info_b.out_of_order =
false;
385 port_info_a.out_of_order =
true;
386 port_info_b.out_of_order =
true;
kernel_pair_t link(raft::kernel *a, raft::kernel *b, const std::string b_port, const std::size_t buffer=0)
Definition: mapbase.hpp:283
static void join(raft::kernel &a, const std::string name_a, PortInfo &a_info, raft::kernel &b, const std::string name_b, PortInfo &b_info)
Definition: mapbase.cpp:55
Port input
Definition: kernel.hpp:117
PortInfo & getPortInfoFor(const std::string port_name)
Definition: port.cpp:108
kernel_pair_t link(raft::kernel *a, const std::string a_port, raft::kernel *b, const std::size_t buffer=0)
Definition: mapbase.hpp:214
PortInfo & getPortInfo()
Definition: port.cpp:121
Definition: mapbase.hpp:100
kernelkeeper all_kernels
Definition: mapbase.hpp:422
kernel_pair_t link(raft::kernel *a, const std::string a_port, raft::kernel *b, const std::string b_port, const std::size_t buffer=0)
Definition: mapbase.hpp:351
kernelkeeper dst_kernels
Definition: mapbase.hpp:420
virtual bool hasPorts()
Definition: port.cpp:84
std::vector< MapBase * > sub_maps
Definition: mapbase.hpp:429
MapBase()
Definition: mapbase.cpp:35
kernelkeeper source_kernels
Definition: mapbase.hpp:418
kernel_pair_t link(raft::kernel *a, raft::kernel *b, const std::size_t buffer=0)
Definition: mapbase.hpp:131
Definition: mapbase.hpp:95
Definition: portexception.hpp:39
Definition: mapbase.hpp:53
Definition: port_info.hpp:39
Definition: kernel.hpp:57
Definition: portexception.hpp:57
virtual ~MapBase()
Definition: mapbase.cpp:40