Toward core module compiling.

This commit is contained in:
jmsgrogan 2023-12-27 12:20:02 +00:00
parent c25a56ee19
commit 3ed195d7dd
305 changed files with 1774 additions and 1065 deletions

View file

@ -94,7 +94,7 @@ void QuantumCircuit::buildWireConnections()
{
if (wire->getOutput() == gate)
{
for (std::size_t idx = 0; idx < gate->getNumInputs(); idx++)
for (size_t idx = 0; idx < gate->getNumInputs(); idx++)
{
if (gate->getInput(idx) == nullptr)
{
@ -107,7 +107,7 @@ void QuantumCircuit::buildWireConnections()
if (wire->getInput() == gate)
{
for (std::size_t idx = 0; idx < gate->getNumOutputs(); idx++)
for (size_t idx = 0; idx < gate->getNumOutputs(); idx++)
{
if (gate->getOutput(idx) == nullptr)
{

View file

@ -21,7 +21,7 @@ Ptr<QuantumCircuit> QuantumCircuitReader::read(const String& content)
auto circuit = std::make_unique<QuantumCircuit>();
mWorkingCircuit = circuit.get();
std::size_t cursor = 0;
size_t cursor = 0;
for (const auto& line : StringUtils::toLines(content))
{
onLine(line, cursor);
@ -31,10 +31,10 @@ Ptr<QuantumCircuit> QuantumCircuitReader::read(const String& content)
return circuit;
}
void QuantumCircuitReader::onLine(const String& line, std::size_t jdx)
void QuantumCircuitReader::onLine(const String& line, size_t jdx)
{
mWorkingString.clear();
std::size_t cursor = 0;
size_t cursor = 0;
while (cursor < line.size())
{
@ -157,9 +157,9 @@ void QuantumCircuitReader::onKet(Location, const String value)
mWorkingCircuit->addInputTerminal(std::move(input_terminal));
}
std::size_t QuantumCircuitReader::getWireEnd(const String& segment)
size_t QuantumCircuitReader::getWireEnd(const String& segment)
{
std::size_t idx = 0;
size_t idx = 0;
for (const auto c : segment)
{
if (c != '-')

View file

@ -16,15 +16,15 @@ public:
Ptr<QuantumCircuit> read(const String& content);
private:
using Location = std::pair<std::size_t, std::size_t>;
using Location = std::pair<size_t, size_t>;
void onLine(const String& line, std::size_t jdx);
void onLine(const String& line, size_t jdx);
String checkForKet(const String& segment);
String checkForGate(const String& segment);
std::size_t getWireEnd(const String& segment);
size_t getWireEnd(const String& segment);
void onGate(Location loc, const String value);

View file

@ -29,7 +29,7 @@ bool Qubit::isIn1State() const
return mBeta.getReal() == 1.0 && mAlpha.getMagnitude() == 0.0;
}
String Qubit::toString(std::size_t precision) const
String Qubit::toString(size_t precision) const
{
Stringstream sstr;
sstr.precision(precision);

View file

@ -17,7 +17,7 @@ public:
bool isIn1State() const;
String toString(std::size_t precision=3) const;
String toString(size_t precision=3) const;
private:
ComplexNumber mAlpha;
ComplexNumber mBeta;

View file

@ -1,6 +1,6 @@
#pragma once
#include "Memory.h"
#include "Pointer.h"
class QuantumCircuitElement
{

View file

@ -1,6 +1,6 @@
#include "QuantumGate.h"
NInMOutQuantumGate::NInMOutQuantumGate(std::size_t numIn, std::size_t numOut, Vector<AbstractQuantumWire*> inputs, Vector<AbstractQuantumWire*> outputs)
NInMOutQuantumGate::NInMOutQuantumGate(size_t numIn, size_t numOut, Vector<AbstractQuantumWire*> inputs, Vector<AbstractQuantumWire*> outputs)
: QuantumGate(),
mNumIn(numIn),
mNumOut(numOut)
@ -24,17 +24,17 @@ NInMOutQuantumGate::NInMOutQuantumGate(std::size_t numIn, std::size_t numOut, Ve
}
}
std::size_t NInMOutQuantumGate::getNumInputs() const
size_t NInMOutQuantumGate::getNumInputs() const
{
return mNumIn;
}
std::size_t NInMOutQuantumGate::getNumOutputs() const
size_t NInMOutQuantumGate::getNumOutputs() const
{
return mNumOut;
}
AbstractQuantumWire* NInMOutQuantumGate::getInput(std::size_t idx) const
AbstractQuantumWire* NInMOutQuantumGate::getInput(size_t idx) const
{
if (idx < mNumIn)
{
@ -46,7 +46,7 @@ AbstractQuantumWire* NInMOutQuantumGate::getInput(std::size_t idx) const
}
}
AbstractQuantumWire* NInMOutQuantumGate::getOutput(std::size_t idx) const
AbstractQuantumWire* NInMOutQuantumGate::getOutput(size_t idx) const
{
if (idx < mNumOut)
{
@ -58,7 +58,7 @@ AbstractQuantumWire* NInMOutQuantumGate::getOutput(std::size_t idx) const
}
}
void NInMOutQuantumGate::setAtInput(std::size_t idx, AbstractQuantumWire* value)
void NInMOutQuantumGate::setAtInput(size_t idx, AbstractQuantumWire* value)
{
if (idx < mInputs.size())
{
@ -66,7 +66,7 @@ void NInMOutQuantumGate::setAtInput(std::size_t idx, AbstractQuantumWire* value)
}
}
void NInMOutQuantumGate::setAtOutput(std::size_t idx, AbstractQuantumWire* value)
void NInMOutQuantumGate::setAtOutput(size_t idx, AbstractQuantumWire* value)
{
if (idx < mOutputs.size())
{

View file

@ -20,17 +20,17 @@ public:
};
virtual ~QuantumGate() = default;
virtual std::size_t getNumInputs() const = 0;
virtual size_t getNumInputs() const = 0;
virtual std::size_t getNumOutputs() const = 0;
virtual size_t getNumOutputs() const = 0;
virtual AbstractQuantumWire* getInput(std::size_t idx) const = 0;
virtual AbstractQuantumWire* getInput(size_t idx) const = 0;
virtual AbstractQuantumWire* getOutput(std::size_t idx) const = 0;
virtual AbstractQuantumWire* getOutput(size_t idx) const = 0;
virtual void setAtInput(std::size_t idx, AbstractQuantumWire* value) = 0;
virtual void setAtInput(size_t idx, AbstractQuantumWire* value) = 0;
virtual void setAtOutput(std::size_t idx, AbstractQuantumWire* value) = 0;
virtual void setAtOutput(size_t idx, AbstractQuantumWire* value) = 0;
virtual GateType getGateType() const = 0;
@ -45,21 +45,21 @@ using QuantumGatePtr = Ptr<QuantumGate>;
class NInMOutQuantumGate : public QuantumGate
{
public:
NInMOutQuantumGate(std::size_t numIn, std::size_t numOut, Vector<AbstractQuantumWire*> inputs = {}, Vector<AbstractQuantumWire*> outputs = {});
NInMOutQuantumGate(size_t numIn, size_t numOut, Vector<AbstractQuantumWire*> inputs = {}, Vector<AbstractQuantumWire*> outputs = {});
virtual ~NInMOutQuantumGate() = default;
std::size_t getNumInputs() const override;
size_t getNumInputs() const override;
std::size_t getNumOutputs() const override;
size_t getNumOutputs() const override;
AbstractQuantumWire* getInput(std::size_t idx) const override;
AbstractQuantumWire* getInput(size_t idx) const override;
AbstractQuantumWire* getOutput(std::size_t idx) const override;
AbstractQuantumWire* getOutput(size_t idx) const override;
void setAtInput(std::size_t idx, AbstractQuantumWire* value) override;
void setAtInput(size_t idx, AbstractQuantumWire* value) override;
void setAtOutput(std::size_t idx, AbstractQuantumWire* value) override;
void setAtOutput(size_t idx, AbstractQuantumWire* value) override;
bool isFullyConnected() const override
{
@ -82,8 +82,8 @@ public:
}
private:
std::size_t mNumIn{ 1 };
std::size_t mNumOut{ 1 };
size_t mNumIn{ 1 };
size_t mNumOut{ 1 };
Vector<AbstractQuantumWire*> mInputs;
Vector<AbstractQuantumWire*> mOutputs;

View file

@ -4,7 +4,7 @@
#include "Qubit.h"
#include "String.h"
#include "Memory.h"
#include "Pointer.h"
class QuantumWire;

View file

@ -2,7 +2,7 @@
#include "AbstractVisualNode.h"
#include "Memory.h"
#include "Pointer.h"
class BlochSphere;
class CircleNode;

View file

@ -45,12 +45,12 @@ void QuantumCircuitNode::buildWireConnections()
for (auto gate : mContent->getLogicGates())
{
for (std::size_t idx = 0; idx < gate->getNumInputs(); idx++)
for (size_t idx = 0; idx < gate->getNumInputs(); idx++)
{
mWireInputConnections[gate->getInput(idx)] = gate;
}
for (std::size_t idx = 0; idx < gate->getNumOutputs(); idx++)
for (size_t idx = 0; idx < gate->getNumOutputs(); idx++)
{
mWireOutputConnections[gate->getOutput(idx)] = gate;
}

View file

@ -2,7 +2,7 @@
#include "AbstractVisualNode.h"
#include <unordered_map>
#include Map.h
class QuantumCircuit;
class QuantumCircuitElement;
@ -34,8 +34,8 @@ private:
Vector<Ptr<QuantumGateNode> > mGateNodes;
Vector<Ptr<QuantumWireNode> > mWireNodes;
std::unordered_map<AbstractQuantumWire*, QuantumCircuitElement*> mWireInputConnections;
std::unordered_map<AbstractQuantumWire*, QuantumCircuitElement*> mWireOutputConnections;
Map<AbstractQuantumWire*, QuantumCircuitElement*> mWireInputConnections;
Map<AbstractQuantumWire*, QuantumCircuitElement*> mWireOutputConnections;
std::unordered_map<QuantumCircuitElement*, QuantumCircuitElementNode*> mNodesForContent;
Map<QuantumCircuitElement*, QuantumCircuitElementNode*> mNodesForContent;
};

View file

@ -75,9 +75,9 @@ void QuantumGateNode::createOrUpdateGeometry(SceneInfo*)
Point2 QuantumGateNode::getConnectionLocation(AbstractQuantumWire* wire) const
{
bool is_input{ false };
//std::size_t connection_id{ 0 };
//size_t connection_id{ 0 };
for (std::size_t idx = 0; idx < mContent->getNumInputs(); idx++)
for (size_t idx = 0; idx < mContent->getNumInputs(); idx++)
{
if (mContent->getInput(idx) == wire)
{
@ -87,7 +87,7 @@ Point2 QuantumGateNode::getConnectionLocation(AbstractQuantumWire* wire) const
}
}
for (std::size_t idx = 0; idx < mContent->getNumOutputs(); idx++)
for (size_t idx = 0; idx < mContent->getNumOutputs(); idx++)
{
if (mContent->getOutput(idx) == wire)
{