Toward core module compiling.
This commit is contained in:
parent
c25a56ee19
commit
3ed195d7dd
305 changed files with 1774 additions and 1065 deletions
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "String.h"
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
|
||||
|
||||
class CircuitElement
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
#include "Vector.h"
|
||||
|
||||
#include "CircuitElement.h"
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
};
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "MidiEvent.h"
|
||||
#include "MidiElements.h"
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
#include "String.h"
|
||||
|
||||
class MetaMidiEvent : public MidiEvent
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "Vector.h"
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
#include "String.h"
|
||||
|
||||
#include "MidiElements.h"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
|
||||
class MidiEvent
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 != '-')
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
|
||||
class QuantumCircuitElement
|
||||
{
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "Qubit.h"
|
||||
|
||||
#include "String.h"
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
|
||||
class QuantumWire;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "AbstractVisualNode.h"
|
||||
|
||||
#include "Memory.h"
|
||||
#include "Pointer.h"
|
||||
|
||||
class BlochSphere;
|
||||
class CircleNode;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue