Guest User

Untitled

a guest
Feb 25th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. struct d {cl_uint x;};
  2. template <class T> struct Writer {
  3. virtual ~Writer() {}
  4. virtual void enqueue_write(T &data) = 0;
  5. virtual void close() = 0;
  6. };
  7. struct ParallelWriter : public Writer<std::unique_ptr<struct d>> {
  8. void enqueue_write(std::unique_ptr<struct d> &data) override {
  9. std::cout << "move into internal buffer, gets written somewhen. "
  10. "Calculation can continuen";
  11. }
  12. void close() override { /* ... */ }
  13. };
  14. struct Calc {
  15. Calc(Writer<std::unique_ptr<struct d>> *writer) { m_writer = writer; }
  16. void run(int param) {
  17. std::cout << "allocate struct s, work on it w/ param, send to writern";
  18. auto data = std::make_unique<struct d>();
  19. data->x = static_cast<cl_uint>(2 * param);
  20. m_writer->enqueue_write(data);
  21. }
  22. void stop() {}
  23. Writer<std::unique_ptr<struct d>> *m_writer = nullptr;
  24. };
  25. int main() {
  26. auto writer = ParallelWriter{/*filename*/};
  27. auto calculation_object = Calc{&writer /*, options */};
  28. calculation_object.run(42);
  29. calculation_object.stop();
  30. writer.close();
  31. }
Add Comment
Please, Sign In to add comment