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

@ -1,7 +1,7 @@
#pragma once
#include "String.h"
#include "Memory.h"
#include "Pointer.h"
class CircuitElement

View file

@ -1,6 +1,6 @@
#pragma once
#include "Memory.h"
#include "Pointer.h"
#include "Vector.h"
#include "CircuitElement.h"

View file

@ -8,7 +8,7 @@ class TruthTable
public:
using TableData = std::map<Vector<bool>, Vector<bool> >;
TruthTable(std::size_t, std::size_t)
TruthTable(size_t, size_t)
//: mNumInputColumns(numInputColumns),
// mNumOutputColumns(numOutputColumns)
{
@ -25,8 +25,8 @@ public:
static const TruthTable::TableData AND_TRUTH_TABLE;
private:
//std::size_t mNumInputColumns{ 0 };
//std::size_t mNumOutputColumns{ 0 };
//size_t mNumInputColumns{ 0 };
//size_t mNumOutputColumns{ 0 };
TableData mTable;
};

View file

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

View file

@ -4,7 +4,7 @@
#include "TruthTable.h"
#include "Wire.h"
#include "Memory.h"
#include "Pointer.h"
#include "Vector.h"
class LogicGate : public CircuitElement
@ -20,13 +20,13 @@ public:
};
virtual ~LogicGate() = 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 Wire* getInput(std::size_t idx) const = 0;
virtual Wire* getInput(size_t idx) const = 0;
virtual Wire* getOutput(std::size_t idx) const = 0;
virtual Wire* getOutput(size_t idx) const = 0;
virtual const TruthTable& getTruthTable() = 0;
@ -41,25 +41,25 @@ public:
class NInMOutLogicGate : public LogicGate
{
public:
NInMOutLogicGate(std::size_t numIn, std::size_t numOut, Vector<Wire*> inputs = {}, Vector<Wire*> outputs = {});
NInMOutLogicGate(size_t numIn, size_t numOut, Vector<Wire*> inputs = {}, Vector<Wire*> outputs = {});
virtual ~NInMOutLogicGate() = default;
std::size_t getNumInputs() const override;
size_t getNumInputs() const override;
std::size_t getNumOutputs() const override;
size_t getNumOutputs() const override;
Wire* getInput(std::size_t idx) const override;
Wire* getInput(size_t idx) const override;
Wire* getOutput(std::size_t idx) const override;
Wire* getOutput(size_t idx) const override;
void setAtInput(std::size_t idx, Wire* value);
void setAtInput(size_t idx, Wire* value);
void setAtOutput(std::size_t idx, Wire* value);
void setAtOutput(size_t idx, Wire* value);
private:
std::size_t mNumIn{ 1 };
std::size_t mNumOut{ 1 };
size_t mNumIn{ 1 };
size_t mNumOut{ 1 };
Vector<Wire*> mInputs;
Vector<Wire*> mOutputs;

View file

@ -37,12 +37,12 @@ void ElectronicCircuitNode::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

@ -4,7 +4,7 @@
#include "ElectronicCircuit.h"
#include <unordered_map>
#include Map.h
class WireNode;
class TerminalNode;
@ -36,8 +36,8 @@ private:
Vector<Ptr<WireNode> > mWireNodes;
Vector<Ptr<LogicGateNode> > mLogicGateNodes;
std::unordered_map<Wire*, CircuitElement*> mWireInputConnections;
std::unordered_map<Wire*, CircuitElement*> mWireOutputConnections;
Map<Wire*, CircuitElement*> mWireInputConnections;
Map<Wire*, CircuitElement*> mWireOutputConnections;
std::unordered_map<CircuitElement*, CircuitElementNode*> mNodesForContent;
Map<CircuitElement*, CircuitElementNode*> mNodesForContent;
};

View file

@ -21,9 +21,9 @@ LogicGateNode::~LogicGateNode()
Point2 LogicGateNode::getConnectionLocation(Wire* 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)
{
@ -33,7 +33,7 @@ Point2 LogicGateNode::getConnectionLocation(Wire* 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)
{

View file

@ -5,7 +5,7 @@ String LogicGatePrimitiveShapes::getAndGateShape()
return "M4 8 h24 a16 16 0 0 1 0 32 h-24Z";
}
Point2 LogicGatePrimitiveShapes::getAndGateConnectionLocation(bool isInput, std::size_t idx)
Point2 LogicGatePrimitiveShapes::getAndGateConnectionLocation(bool isInput, size_t idx)
{
if (isInput)
{
@ -29,7 +29,7 @@ String LogicGatePrimitiveShapes::getOrGateShape()
return "M4 8 h16 q16 2 24 16 q-12 16 -24 16 h-16 q12 -16 0 -32Z";
}
Point2 LogicGatePrimitiveShapes::getOrGateConnectionLocation(bool isInput, std::size_t idx)
Point2 LogicGatePrimitiveShapes::getOrGateConnectionLocation(bool isInput, size_t idx)
{
if (isInput)
{

View file

@ -7,11 +7,11 @@
class LogicGatePrimitiveShapes
{
public:
static Point2 getAndGateConnectionLocation(bool isInput, std::size_t idx);
static Point2 getAndGateConnectionLocation(bool isInput, size_t idx);
static String getAndGateShape();
static Point2 getOrGateConnectionLocation(bool isInput, std::size_t idx);
static Point2 getOrGateConnectionLocation(bool isInput, size_t idx);
static String getOrGateShape();
};

View file

@ -2,7 +2,7 @@
#include "MidiEvent.h"
#include "MidiElements.h"
#include "Memory.h"
#include "Pointer.h"
#include "String.h"
class MetaMidiEvent : public MidiEvent

View file

@ -1,7 +1,7 @@
#pragma once
#include "Vector.h"
#include "Memory.h"
#include "Pointer.h"
#include "String.h"
#include "MidiElements.h"

View file

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

View file

@ -17,12 +17,12 @@ void MidiTrack::AddEvent(MidiEventPtr event)
mEvents.push_back(std::move(event));
}
MidiEvent* MidiTrack::GetEvent(std::size_t idx) const
MidiEvent* MidiTrack::GetEvent(size_t idx) const
{
return mEvents[idx].get();
}
std::size_t MidiTrack::GetNumEvents()
size_t MidiTrack::GetNumEvents()
{
return mEvents.size();
}

View file

@ -1,7 +1,7 @@
#pragma once
#include "Vector.h"
#include "Memory.h"
#include "Pointer.h"
#include "String.h"
#include "MidiEvent.h"
@ -18,9 +18,9 @@ public:
void AddEvent(MidiEventPtr event);
MidiEvent* GetEvent(std::size_t idx) const;
MidiEvent* GetEvent(size_t idx) const;
std::size_t GetNumEvents();
size_t GetNumEvents();
String Serialize() const;

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)
{