diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-05-29 21:16:06 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-05-29 21:16:06 +0200 |
commit | 60d0f8da2b754d1deb0dbb59f6e6783ba4c692c4 (patch) | |
tree | c0d49736f035220640ed01cfb210d37e7bb254cb /modules/io_codec | |
parent | 7b6e0ca99f8521e034452f0d0243a7f3e33843a9 (diff) |
Reworked id_map and trying to fix sycl launch
Diffstat (limited to 'modules/io_codec')
-rw-r--r-- | modules/io_codec/c++/rpc.hpp | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/modules/io_codec/c++/rpc.hpp b/modules/io_codec/c++/rpc.hpp index 66b7c41..04293cd 100644 --- a/modules/io_codec/c++/rpc.hpp +++ b/modules/io_codec/c++/rpc.hpp @@ -11,27 +11,63 @@ namespace saw { /** - * + * This class acts as a helper for rpc calls and representing data on the remote. */ template<typename T, typename Encoding> class data_or_id { private: + /** + * Variant representing the either id or data class. + */ std::variant<id<T>, data<T,Encoding>> doi_; public: + /** + * Constructor for instantiating. + */ data_or_id(const id<T>& val): doi_{val} {} + /** + * Constructor for instantiating. + */ data_or_id(data<T,Encoding> val): doi_{std::move(val)} {} + /** + * Check if this class holds an id. + */ bool is_id() const { - return false; + return std::holds_alternative<id<T>>(doi_); } + /** + * Check if this class holds data. + */ bool is_data() const { - return false; + return std::holds_alternative<data<T,Encoding>>(doi_); + } + + /** + * Returns the id. + */ + id<T> get_id() const { + return std::get<id<T>>(doi_); + } + + /** + * Return a data reference. + */ + data<T,Encoding>& get_data(){ + return std::get<data<T,Encoding>>(doi_); + } + + /** + * Return a data reference. + */ + const data<T,Encoding>& get_data() const { + return std::get<data<T,Encoding>>(doi_); } }; |