Initial quantum circuit.
This commit is contained in:
parent
77ce58c612
commit
20c13c1cdf
38 changed files with 1153 additions and 14 deletions
42
plugins/quantum_computing/src/QuantumWire.h
Normal file
42
plugins/quantum_computing/src/QuantumWire.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
#pragma once
|
||||
|
||||
#include "QuantumCircuitElement.h"
|
||||
|
||||
class AbstractQuantumWire : public QuantumCircuitElement
|
||||
{
|
||||
public:
|
||||
enum class WireType
|
||||
{
|
||||
QUANTUM,
|
||||
CLASSICAL
|
||||
};
|
||||
|
||||
virtual ~AbstractQuantumWire() = default;
|
||||
|
||||
virtual WireType getWireType() const = 0;
|
||||
};
|
||||
|
||||
class QuantumWire : public AbstractQuantumWire
|
||||
{
|
||||
public:
|
||||
QuantumWire(QuantumCircuitElement* input, QuantumCircuitElement* output);
|
||||
|
||||
QuantumCircuitElement* getInput() const;
|
||||
QuantumCircuitElement* getOutput() const;
|
||||
|
||||
Type getType() const override;
|
||||
WireType getWireType() const override;
|
||||
private:
|
||||
QuantumCircuitElement* mInput{ nullptr };
|
||||
QuantumCircuitElement* mOutput{ nullptr };
|
||||
};
|
||||
using QuantumWirePtr = std::unique_ptr<QuantumWire>;
|
||||
|
||||
class ClassicalWire : public AbstractQuantumWire
|
||||
{
|
||||
public:
|
||||
WireType getWireType() const override
|
||||
{
|
||||
return WireType::CLASSICAL;
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue