summaryrefslogtreecommitdiff
path: root/modules/io_codec
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-05-29 21:16:06 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-05-29 21:16:06 +0200
commit60d0f8da2b754d1deb0dbb59f6e6783ba4c692c4 (patch)
treec0d49736f035220640ed01cfb210d37e7bb254cb /modules/io_codec
parent7b6e0ca99f8521e034452f0d0243a7f3e33843a9 (diff)
Reworked id_map and trying to fix sycl launch
Diffstat (limited to 'modules/io_codec')
-rw-r--r--modules/io_codec/c++/rpc.hpp42
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_);
}
};