20 #ifndef _SPLITMETHOD_HPP_
21 #define _SPLITMETHOD_HPP_ 1
23 #include <type_traits>
26 #include "autoreleasebase.hpp"
27 #include "signalvars.hpp"
42 typename std::enable_if<
43 std::is_fundamental< T >::value >::type* =
nullptr >
44 bool send( T &item,
const raft::signal signal,
Port &outputs )
46 auto *
const fifo( select_fifo( outputs, sendtype ) );
49 fifo->push( item, signal );
67 typename std::enable_if<
69 T >::value >::type* =
nullptr >
72 auto *
const fifo( select_fifo( outputs, sendtype ) );
75 const auto space_avail(
76 std::min( fifo->space_avail(), range.size() ) );
77 for(
auto i( 0 ); i < space_avail; i++ )
79 fifo->push( range[ i ].ele, range[ i ].sig );
90 bool get( T &item, raft::signal &signal,
Port &inputs )
92 auto *
const fifo( select_fifo( inputs, gettype ) );
95 fifo->pop< T >( item, &signal );
106 enum functype { sendtype, gettype };
107 virtual FIFO* select_fifo(
Port &port_list,
const functype type ) = 0;
Definition: autoreleasebase.hpp:37
bool send(T &range, Port &outputs)
Definition: splitmethod.hpp:70
Definition: splitmethod.hpp:35