YPC  0.2.0
memory_output.h
1 #pragma once
2 #include <hpda/common/stream_policy.h>
3 #include <hpda/output/output_base.h>
4 
5 namespace hpda {
6 namespace output {
7 namespace internal {
8 template <typename InputObjType>
9 class memory_output_impl : public output_base<InputObjType> {
10 public:
13  : output_base<InputObjType>(upper_stream) {}
14 
15  virtual ~memory_output_impl() {}
16 
18 
19  virtual bool process() {
20  if (!base::has_input_value()) {
21  return false;
22  }
23  m_data.push_back(output_base<InputObjType>::input_value().make_copy());
24  base::consume_input_value();
25  return true;
26  }
27 
28  std::vector<InputObjType> &values() { return m_data; }
29  const std::vector<InputObjType> &values() const { return m_data; }
30 
31 protected:
32  std::vector<InputObjType> m_data;
33 };
34 } // namespace internal
35 
36 template <typename... ARGS>
37 using memory_output = internal::memory_output_impl<ntobject<ARGS...>>;
38 template <typename T> using memory_output_t = internal::memory_output_impl<T>;
39 } // namespace output
40 } // namespace hpda
hpda::output::internal::output_base
Definition: output_base.h:10
hpda::output::internal::memory_output_impl
Definition: memory_output.h:9
hpda::internal::processor_with_output< InputObjType >