32 #include "portbase.hpp"
33 #include "graphtools.hpp"
34 #include "ringbuffertypes.hpp"
36 #include "port_info.hpp"
37 #include "ringbuffer.tcc"
38 #include "port_info_types.hpp"
39 #include "portmap_t.hpp"
40 #include "portiterator.hpp"
41 #include "portexception.hpp"
52 template <
class T,
class method >
class join;
53 template <
class T,
class method >
class split;
92 void addPort(
const std::string &&port_name )
102 pi.my_name = port_name;
103 (
this)->initializeConstMap<T>( pi );
104 (
this)->initializeSplit< T >( pi );
105 (
this)->initializeJoin< T >( pi );
107 portmap.map.insert( std::make_pair( port_name,
110 if( not ret_val.second )
112 throw PortAlreadyExists(
"FATAL ERROR: port \"" + port_name +
"\" already exists!" );
126 T *existing_buff_t( reinterpret_cast< T* >(
alloc_ptr ) );
128 const std::size_t inc( length / n_ports );
129 const std::size_t adder( length % n_ports );
131 for(
auto index( 0 ); index < n_ports; index++ )
133 const std::size_t start_index( index * inc );
135 (
void*)&( existing_buff_t[ start_index ] ) ,
136 inc + ( index == (n_ports - 1) ? adder : 0 ),
139 const std::string name( std::to_string( index ) );
141 (
this)->initializeConstMap< T >( pi );
142 (
this)->initializeSplit< T >( pi );
143 (
this)->initializeJoin< T >( pi );
144 portmap.map.insert( std::make_pair( name, pi ) );
159 const std::type_index&
getPortType(
const std::string &&port_name );
166 virtual FIFO&
operator[](
const std::string &&port_name );
210 std::make_pair( Type::Heap ,
new instr_map_t() ) );
213 std::make_pair(
false ,
214 RingBuffer< T, Type::Heap, false >::make_new_fifo ) );
216 std::make_pair(
true ,
217 RingBuffer< T, Type::Heap, true >::make_new_fifo ) );
219 pi.
const_map.insert( std::make_pair( Type::SharedMemory,
new instr_map_t() ) );
220 pi.
const_map[ Type::SharedMemory ]->insert(
221 std::make_pair(
false ,
222 RingBuffer< T, Type::SharedMemory >::make_new_fifo ) );
const std::size_t alloc_ptr_length
Definition: port.hpp:304
void initializeConstMap(PortInfo &pi)
Definition: port.hpp:207
PortInfo & getPortInfoFor(const std::string port_name)
Definition: port.cpp:108
std::map< Type::RingBufferType, instr_map_t * > const_map
Definition: port_info.hpp:88
PortInfo & getPortInfo()
Definition: port.cpp:121
Port(raft::kernel *k)
Definition: port.cpp:33
Definition: basicparallel.hpp:48
Definition: mapbase.hpp:100
raft::kernel * kernel
Definition: port.hpp:291
virtual PortIterator begin()
Definition: port.cpp:90
portmap_t portmap
Definition: port.hpp:286
Definition: parallelk.hpp:35
void *const alloc_ptr
Definition: port.hpp:298
Definition: portbase.hpp:28
virtual bool hasPorts()
Definition: port.cpp:84
split_factory_t split_func
Definition: port_info.hpp:96
bool addInPlacePorts(const std::size_t n_ports)
Definition: port.hpp:124
virtual ~Port()
Definition: port.cpp:48
void initializeJoin(PortInfo &pi)
Definition: port.hpp:256
virtual FIFO & operator[](const std::string &&port_name)
Definition: port.cpp:68
std::size_t count()
Definition: port.cpp:102
Definition: port_info.hpp:39
virtual PortIterator end()
Definition: port.cpp:96
const std::type_index & getPortType(const std::string &&port_name)
Definition: port.cpp:57
Definition: kernel.hpp:57
void addPort(const std::string &&port_name)
Definition: port.hpp:92
Definition: globalmap.cpp:3
void initializeSplit(PortInfo &pi)
Definition: port.hpp:237
Definition: portexception.hpp:74
Definition: portiterator.hpp:32
Definition: portmap_t.hpp:27
Definition: roundrobin.hpp:27