QuISP
Loading...
Searching...
No Matches
BellPairStore.h
Go to the documentation of this file.
1#pragma once
2
4#include <modules/QNIC.h>
6#include <modules/QRSA/QRSA.h>
7
8namespace quisp::modules {
9
10using QNodeAddr = int;
11using QNicIndex = int;
12// entangled partner qnode address -> qubit
13using PartnerAddrQubitMap = std::multimap<QNodeAddr, qrsa::IQubitRecord*>;
14using ResourceKey = std::pair<QNIC_type, QNicIndex>;
15using PartnerAddrQubitMapRange = std::pair<PartnerAddrQubitMap::iterator, PartnerAddrQubitMap::iterator>;
16
24 public:
27 void eraseQubit(qrsa::IQubitRecord* const qubit);
28 void insertEntangledQubit(QNodeAddr partner_addr, qrsa::IQubitRecord* qubit);
29 qrsa::IQubitRecord* findQubit(QNIC_type qnic_type, QNicIndex qnic_index, QNodeAddr addr);
30 PartnerAddrQubitMapRange getBellPairsRange(QNIC_type qnic_type, QNicIndex qnic_index, QNodeAddr partner_addr);
31 std::string toString() const;
33
34 protected:
35 std::map<ResourceKey, PartnerAddrQubitMap> _resources;
36};
37std::ostream& operator<<(std::ostream& os, const quisp::modules::BellPairStore& store);
38} // namespace quisp::modules
QNIC.
Definition BellPairStore.h:23
void insertEntangledQubit(QNodeAddr partner_addr, qrsa::IQubitRecord *qubit)
Definition BellPairStore.cc:11
Logger::ILogger * logger
Definition BellPairStore.h:32
~BellPairStore()
Definition BellPairStore.cc:9
BellPairStore(Logger::ILogger *logger=nullptr)
Definition BellPairStore.cc:8
qrsa::IQubitRecord * findQubit(QNIC_type qnic_type, QNicIndex qnic_index, QNodeAddr addr)
Definition BellPairStore.cc:41
void eraseQubit(qrsa::IQubitRecord *const qubit)
Definition BellPairStore.cc:23
std::map< ResourceKey, PartnerAddrQubitMap > _resources
Definition BellPairStore.h:35
PartnerAddrQubitMapRange getBellPairsRange(QNIC_type qnic_type, QNicIndex qnic_index, QNodeAddr partner_addr)
Definition BellPairStore.cc:53
std::string toString() const
Definition BellPairStore.cc:61
Interface of Logger class. Logger class that inherits ILogger is responsible for logging simulation r...
Definition ILogger.h:22
The QubitRecord interface.
Definition IQubitRecord.h:17
int QNicIndex
Definition common_types.h:9
int QNodeAddr
Definition common_types.h:8
Definition Application.cc:16
std::multimap< QNodeAddr, qrsa::IQubitRecord * > PartnerAddrQubitMap
Definition BellPairStore.h:13
std::pair< QNIC_type, QNicIndex > ResourceKey
Definition BellPairStore.h:14
std::pair< PartnerAddrQubitMap::iterator, PartnerAddrQubitMap::iterator > PartnerAddrQubitMapRange
Definition BellPairStore.h:15
std::ostream & operator<<(std::ostream &os, const quisp::modules::BellPairStore &store)
Definition BellPairStore.cc:71
QNIC_type
Definition QNIC.h:18