2 #include <hpda/processor/processor_base.h>
7 template <
typename InputObjType>
14 m_upper_streams.push_back(upper_stream);
18 void add_upper_stream(
20 m_upper_streams.push_back(upper_stream);
21 base::add_predecessor(upper_stream);
23 virtual bool process() {
24 while (m_index < m_upper_streams.size() &&
25 !m_upper_streams[m_index]->has_value()) {
28 if (m_index >= m_upper_streams.size()) {
31 auto b = m_upper_streams[m_index]->has_value();
33 m_data = m_upper_streams[m_index]->output_value().make_copy();
35 m_upper_streams[m_index]->reset_done_value();
39 virtual InputObjType output_value() {
return m_data; }
42 typedef ::hpda::internal::processor_with_output<InputObjType>
upper_stream_t;
44 std::vector<upper_stream_t *> m_upper_streams;
48 template <
typename... ARGS>