QuISP
Loading...
Searching...
No Matches
IQubitId.h
Go to the documentation of this file.
1#pragma once
2#include <cstddef>
3#include <functional>
4
6
14class IQubitId {
15 public:
16 virtual ~IQubitId(){};
17
18 class Hash {
19 public:
20 std::size_t operator()(const IQubitId& id) const { return id.hash(); }
21 std::size_t operator()(const IQubitId* id) const { return id->hash(); }
22 };
23 class Pred {
24 public:
25 bool operator()(const IQubitId& id1, const IQubitId& id2) const { return id1.compare(id2); }
26 bool operator()(const IQubitId* id1, const IQubitId* id2) const { return id1->compare(*id2); }
27 };
28
29 protected:
33 virtual std::size_t hash() const = 0;
34
38 virtual bool compare(const IQubitId& id) const = 0;
39};
40} // namespace quisp::backends::abstract
std::size_t operator()(const IQubitId *id) const
Definition IQubitId.h:21
std::size_t operator()(const IQubitId &id) const
Definition IQubitId.h:20
bool operator()(const IQubitId *id1, const IQubitId *id2) const
Definition IQubitId.h:26
bool operator()(const IQubitId &id1, const IQubitId &id2) const
Definition IQubitId.h:25
a key to identify a qubit in a backend.
Definition IQubitId.h:14
virtual ~IQubitId()
Definition IQubitId.h:16
virtual bool compare(const IQubitId &id) const =0
virtual std::size_t hash() const =0
Definition IConfiguration.h:4