#pragma once #include "common.hpp" namespace saw { /** * Generic wrapper class which stores data on the sycl side. * Most of the times this will be a root object. */ template class data> { private: cl::sycl::buffer> data_; data size_; public: data(const data& data__): data_{&data__, 1u}, size_{data__.size()} {} auto& get_handle() { return data_; } const auto& get_handle() const { return data_; } data size() const { return size_; } template auto access(cl::sycl::handler& h){ return data_.template get_access(h); } template auto access(cl::sycl::handler& h) const { return data_.template get_access(h); } }; }