2 #include <hpda/processor/processor_base.h> 
    3 #include <hpda/processor/set/helper/copy_helper.h> 
    4 #include <hpda/processor/set/helper/upper_stream_helper.h> 
   10 template <
typename OutputObjType, 
typename CT>
 
   17   template <
typename KT, 
typename InputObjType>
 
   18   void add_upper_stream(
 
   21                                InputObjType>::add_upper_stream(upper_stream,
 
   33     for (
size_t i = 0; i < m_upper_streams.size(); i++) {
 
   34       if (m_upper_streams[i]->has_value()) {
 
   35         CT tmp = m_traits[i](m_upper_streams[i]);
 
   50     for (
size_t i = 0; i < m_upper_streams.size(); i++) {
 
   51       if (m_upper_streams[i]->has_value()) {
 
   52         CT tmp = m_traits[i](m_upper_streams[i]);
 
   53         if (i != index && tmp == val) {
 
   54           m_upper_streams[i]->reset_done_value();
 
   58     m_filler[index](m_upper_streams[index], m_data);
 
   59     m_upper_streams[index]->reset_done_value();
 
   63   virtual bool process() {
 
   64     if (m_upper_streams.size() < 2) {
 
   70   virtual OutputObjType output_value() { 
return m_data; }
 
   73   std::vector<functor *> m_upper_streams;
 
   74   typedef std::function<CT(
functor *)> kt_traits_t;
 
   75   std::vector<kt_traits_t> m_traits;
 
   78   typedef std::function<void(
functor *, OutputObjType &)> output_t;
 
   79   std::vector<output_t> m_filler;
 
   84 template <
typename CT, 
typename... ARGS>