diff options
Diffstat (limited to 'modules/remote-sycl/c++')
-rw-r--r-- | modules/remote-sycl/c++/remote.hpp | 26 |
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; } |