summaryrefslogtreecommitdiff
path: root/modules/remote-sycl/c++/remote.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote-sycl/c++/remote.hpp')
-rw-r--r--modules/remote-sycl/c++/remote.hpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/modules/remote-sycl/c++/remote.hpp b/modules/remote-sycl/c++/remote.hpp
index a481740..fd2f64a 100644
--- a/modules/remote-sycl/c++/remote.hpp
+++ b/modules/remote-sycl/c++/remote.hpp
@@ -28,19 +28,21 @@ private:
SAW_FORBID_MOVE(remote);
struct key_t {
- uint64_t device_id;
- uint32_t sch_id;
- uint32_t enc_id;
-
+ std::array<uint64_t,3> data;
+
+ template<typename Schema, typename Encoding>
+ static key_t create(const remote_address<rmt::Loopback>& addr){
+ key_t k;
+ k.data = std::array<uint64_t,3>{addr.get_address_id().get(), schema_hash<Schema>::apply(), schema_hash<Encoding>::apply()};
+
+ return k;
+ }
+
bool operator<(const key_t& rhs) const {
- if(device_id != rhs.device_id){
- return device_id < rhs.device_id;
- }
- if(sch_id != rhs.sch_id){
- return sch_id < rhs.sch_id;
- }
- if(enc_id != rhs.enc_id){
- return enc_id < rhs.enc_id;
+ for(uint64_t i = 0u; i < 3; ++i){
+ if(data[i] != rhs.data[i]){
+ return data[i] < rhs.data[i];
+ }
}
return false;
}