#include <cassert>
#include <cstddef>
#include <deque>
#include <iostream>
#include <stdexcept>
#include <tuple>
#include <unordered_map>
#include <variant>
#include <vector>
#include "InstructionVisitor.h"
#include "RuleSet.h"
#include "macro_utils.h"
#include "Value.h"
#include "opcode.h"
#include "types.h"
Go to the source code of this file.
|
using | quisp::runtime::QubitResources = std::multimap<std::pair<QNodeAddr, RuleId>, IQubitRecord*> |
| (partner's qnode addr, assigned RuleId) => [local half of the bell pair qubit record]
|
|
using | quisp::runtime::QubitResourcesWithSequenceNumbers = std::map<std::tuple<QNodeAddr, RuleId, SequenceNumber>, IQubitRecord*> |
| (partner's qnode addr, assigned RuleId, sequence number) => [local half of the stationary bell pair qubit record]
|
|
using | quisp::runtime::SequenceNumberTracker = std::map<IQubitRecord*, std::tuple<QNodeAddr, RuleId, SequenceNumber>> |
|
using | quisp::runtime::SequenceNumberCounter = std::map<std::pair<QNodeAddr, RuleId>, SequenceNumber> |
| ResourceId needs to be increment each time a qubit of certain properties (same <QNodeAddr>) is added to the Rule.
|
|
using | quisp::runtime::MessageResources = std::map<RuleId, std::deque<MessageRecord>> |
| Store messages for each rule for decision making mainly used for WaitRules (e.g., purification, Pauli Frame correction).
|
|
using | quisp::runtime::QubitNameMap = std::unordered_map<QubitId, IQubitRecord*> |
| QubitId and qubit record map. This is initialized in before each Program execution.
|
|
using | quisp::runtime::Memory = std::unordered_map<MemoryKey, MemoryValue> |
| Memory is a simple dict to store the value during RuleSet execution.
|
|