YPC  0.2.0
raw_data.h
1 #pragma once
2 #include <ff/util/ntobject.h>
3 #include <hpda/common/common.h>
4 #include <hpda/common/stream_policy.h>
5 #include <hpda/extractor/extractor_base.h>
6 
7 namespace hpda {
8 namespace extractor {
9 namespace internal {
10 template <typename OutputObjType>
11 class raw_data_impl : public extractor_base<OutputObjType> {
12 public:
13  raw_data_impl() : m_data(), m_index(-1), m_no_init(true){};
14  virtual ~raw_data_impl() {}
15 
16  void add_data(const OutputObjType &obj) {
17  m_data.push_back(obj);
18  }
19 
20  virtual bool process() {
21  if (m_data.empty()) {
22  return false;
23  }
24  m_index++;
25 
26  int s = static_cast<int>(m_data.size());
27  if (m_index >= s) {
28  return false;
29  }
30  return true;
31  }
32 
33  virtual OutputObjType output_value() {
34  if (m_data.size() <= m_index) {
35  throw std::runtime_error("no more data in raw_data ");
36  }
37  return m_data[m_index];
38  }
39 
40 protected:
41  std::vector<OutputObjType> m_data;
42  int32_t m_index;
43  bool m_no_init;
44 };
45 
46 } // namespace internal
47 
48 template <typename... ARGS>
49 using raw_data = internal::raw_data_impl<ntobject<ARGS...>>;
50 
51 } // namespace extractor
52 } // namespace hpda
hpda::extractor::internal::raw_data_impl
Definition: raw_data.h:11
hpda::extractor::internal::extractor_base
Definition: extractor_base.h:9