Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct d {cl_uint x;};
- template <class T> struct Writer {
- virtual ~Writer() {}
- virtual void enqueue_write(T &data) = 0;
- virtual void close() = 0;
- };
- struct ParallelWriter : public Writer<std::unique_ptr<struct d>> {
- void enqueue_write(std::unique_ptr<struct d> &data) override {
- std::cout << "move into internal buffer, gets written somewhen. "
- "Calculation can continuen";
- }
- void close() override { /* ... */ }
- };
- struct Calc {
- Calc(Writer<std::unique_ptr<struct d>> *writer) { m_writer = writer; }
- void run(int param) {
- std::cout << "allocate struct s, work on it w/ param, send to writern";
- auto data = std::make_unique<struct d>();
- data->x = static_cast<cl_uint>(2 * param);
- m_writer->enqueue_write(data);
- }
- void stop() {}
- Writer<std::unique_ptr<struct d>> *m_writer = nullptr;
- };
- int main() {
- auto writer = ParallelWriter{/*filename*/};
- auto calculation_object = Calc{&writer /*, options */};
- calculation_object.run(42);
- calculation_object.stop();
- writer.close();
- }
Add Comment
Please, Sign In to add comment