QuISP
Loading...
Searching...
No Matches
QubitId.h
Go to the documentation of this file.
1#pragma once
2#include "backends/Backends.h"
4
6
8 public:
10 std::size_t hash() const override {
11 size_t seed = std::hash<int>()(node_addr);
15 return seed;
16 }
17
18 bool compare(const IQubitId& id_ref) const override {
19 const QubitId& id = dynamic_cast<const QubitId&>(id_ref);
20 return node_addr == id.node_addr && qnic_index == id.qnic_index && qnic_type == id.qnic_type && qubit_addr == id.qubit_addr;
21 }
22
27
28 protected:
29 // https://stackoverflow.com/questions/4948780/magic-number-in-boosthash-combine
30 void hashCombine(std::size_t& seed, int const& v) const { seed ^= std::hash<int>()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); }
31};
32
33} // namespace quisp::modules::qubit_id
a key to identify a qubit in a backend.
Definition IQubitId.h:14
Definition QubitId.h:7
QubitId(int node_addr, int qnic_index, int qnic_type, int qubit_addr)
Definition QubitId.h:9
int qubit_addr
Definition QubitId.h:26
int node_addr
Definition QubitId.h:23
int qnic_index
Definition QubitId.h:24
void hashCombine(std::size_t &seed, int const &v) const
Definition QubitId.h:30
bool compare(const IQubitId &id_ref) const override
Definition QubitId.h:18
std::size_t hash() const override
Definition QubitId.h:10
int qnic_type
Definition QubitId.h:25
Definition QubitId.h:5