Initial quantum circuit.

This commit is contained in:
jmsgrogan 2023-01-26 11:27:35 +00:00
parent 77ce58c612
commit 20c13c1cdf
38 changed files with 1153 additions and 14 deletions

View 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;
}
};