RaftLib  0.3a
C++ Stream Processing Template Library
parallelk.hpp
1 
20 #ifndef _PARALLELK_HPP_
21 #define _PARALLELK_HPP_ 1
22 #if LIBCOMPILE == 1
23 #include "kernel.hpp"
24 #else
25 #include <raft>
26 #endif
27 #include <cstddef>
28 
29 class Map;
30 class Schedule;
31 
32 namespace raft
33 {
34 
35 class parallel_k : public raft::kernel
36 {
37 public:
38  parallel_k();
39  parallel_k( void * const ptr,
40  const std::size_t nbytes );
41 
42  virtual ~parallel_k();
43 
44 protected:
49  template < class T >
50  std::size_t addPortTo( Port &port )
51  {
52  const auto portid( port_name_index++ );
53  port.addPort< T >( std::to_string( portid ) );
54  return( portid );
55  }
56 
57  void lock_helper( Port &port );
58 
59  void unlock_helper( Port &port );
60 
61  std::size_t port_name_index = 0;
62  friend class ::Schedule;
63  friend class ::Map;
64 };
65 
66 }
67 #endif /* END _PARALLELK_HPP_ */
Definition: parallelk.hpp:35
Definition: map.hpp:47
Definition: port.hpp:57
std::size_t addPortTo(Port &port)
Definition: parallelk.hpp:50
Definition: schedule.hpp:34
Definition: kernel.hpp:57
void addPort(const std::string &&port_name)
Definition: port.hpp:92
Definition: globalmap.cpp:3