5#include <unordered_map>
15using abstract::IConfiguration;
16using abstract::IQuantumBackend;
17using abstract::IQubit;
18using abstract::IQubitId;
19using abstract::IRandomNumberGenerator;
20using graph_state::GraphStateQubit;
21using omnetpp::SimTime;
30 GraphStateBackend(std::unique_ptr<IRandomNumberGenerator>
rng, std::unique_ptr<StationaryQubitConfiguration> configuration);
48 const std::unique_ptr<IRandomNumberGenerator>
rng;
49 std::unique_ptr<StationaryQubitConfiguration>
config;
The abstract interface for a quantum backend.
Definition IQuantumBackend.h:19
a key to identify a qubit in a backend.
Definition IQubitId.h:14
virtual void willUpdate(GraphStateBackend &backend)=0
virtual ~ICallback()
Definition Backend.h:27
IQubit * getShortLiveQubit() override
Definition Backend.cc:65
int short_live_qubit_pool_size
Definition Backend.h:52
~GraphStateBackend()
Definition Backend.cc:18
ICallback * callback
Definition Backend.h:50
std::deque< IQubit * > short_live_qubit_pool
Definition Backend.h:51
void returnToPool(IQubit *) override
Definition Backend.cc:74
IQubit * createQubit(const IQubitId *id, std::unique_ptr< IConfiguration > conf) override
Definition Backend.cc:36
void setSimTime(SimTime time) override
Definition Backend.cc:95
IQubit * createShortLiveQubit() override
Definition Backend.cc:24
IQubit * getQubit(const IQubitId *id) override
Definition Backend.cc:57
const SimTime & getSimTime() override
Definition Backend.cc:91
const std::unique_ptr< IRandomNumberGenerator > rng
Definition Backend.h:48
double dblrand()
Definition Backend.cc:96
std::unique_ptr< StationaryQubitConfiguration > config
Definition Backend.h:49
std::unordered_map< const IQubitId *, std::unique_ptr< GraphStateQubit >, IQubitId::Hash, IQubitId::Pred > qubits
Definition Backend.h:46
std::unique_ptr< IConfiguration > getDefaultConfiguration() const override
Definition Backend.cc:87
SimTime current_time
Definition Backend.h:47
void deleteQubit(const IQubitId *id) override
Definition Backend.cc:79