QuISP
Loading...
Searching...
No Matches
IStationaryQubit.h
Go to the documentation of this file.
1#pragma once
2
3#include <PhotonicQubit_m.h>
4#include <backends/Backends.h>
5#include <Eigen/Eigen>
6#include <unordered_set>
7
17
18namespace quisp::modules {
19
20class IStationaryQubit : public omnetpp::cSimpleModule {
21 public:
23 virtual ~IStationaryQubit(){};
24
25 // RTC
26 virtual void setFree(bool consumed) = 0;
27 /*In use. E.g. waiting for purification result.*/
28 virtual void Lock(unsigned long rs_id, int rule_id, int action_id) = 0;
29 virtual void Unlock() = 0;
30 virtual bool isLocked() = 0;
31
36 virtual void emitPhoton(int pulse) = 0;
37
42
43 virtual void gateCNOT(IStationaryQubit *target_qubit) = 0;
44 virtual void gateHadamard() = 0;
45 // RTC
46 virtual void gateX() = 0;
47 virtual void gateZ() = 0;
48 virtual void gateY() = 0;
49 virtual void gateS() = 0;
50 virtual void gateSdg() = 0;
51
56};
57} // namespace quisp::modules
Definition IQubit.h:30
Definition IStationaryQubit.h:20
virtual types::EigenvalueResult measureX()=0
virtual ~IStationaryQubit()
Definition IStationaryQubit.h:23
virtual void Lock(unsigned long rs_id, int rule_id, int action_id)=0
int action_index
Definition IStationaryQubit.h:55
virtual void setFree(bool consumed)=0
IStationaryQubit()
Definition IStationaryQubit.h:22
virtual types::MeasurementOutcome measureRandomPauliBasis()=0
int qnic_index
Definition IStationaryQubit.h:54
virtual types::EigenvalueResult measureY()=0
virtual backends::IQubit * getBackendQubitRef() const =0
virtual types::EigenvalueResult measureZ()=0
virtual void emitPhoton(int pulse)=0
Emit photon.
virtual void gateCNOT(IStationaryQubit *target_qubit)=0
int qnic_type
Definition IStationaryQubit.h:53
MeasureZResult
Definition IQubit.h:13
EigenvalueResult
Definition IQubit.h:17
MeasureYResult
Definition IQubit.h:9
MeasureXResult
Definition IQubit.h:5
Definition Application.cc:16
Definition IStationaryQubit.h:8