40 void initVectors(
int inputCount,
int outputCount,
const QVector<OutputPort *> &outputPorts);
43 void reset(
const QVector<OutputPort *> &outputPorts);
55 bool updateInputs(
bool allowUnknown,
const QVector<InputPort *> &inputPorts);
63 if (index >= m_outputs.size()) {
return Status::Unknown; }
64 return m_outputs.at(index);
70 if (index >= m_outputs.size()) {
return; }
74 m_staged[index] = value;
77 if (m_outputs[index] != value) { m_outputChanged =
true; }
78 m_outputs[index] = value;
82 qsizetype
outputSize()
const {
return m_outputs.size(); }
91 const QVector<Status> &
inputs()
const {
return m_inputs; }
97 const QVector<Status> &
outputs()
const {
return m_deferCommit ? m_staged : m_outputs; }
110 m_staged.resize(m_outputs.size());
111 std::copy(m_outputs.cbegin(), m_outputs.cend(), m_staged.begin());
112 m_deferCommit =
true;
119 m_deferCommit =
false;
120 for (
int i = 0; i < m_staged.size() && i < m_outputs.size(); ++i) {
126 QVector<InputConnection> m_connections;
127 QVector<Status> m_inputs;
128 QVector<Status> m_outputs;
132 QVector<Status> m_staged;
133 bool m_outputChanged =
false;
134 bool m_deferCommit =
false;
Central enumeration types for element types, groups, and signal status.
Owns a GraphicElement's simulation runtime state, decoupled from its graphics.
Status outputValue(const int index=0) const
Returns the four-state value on output slot index (Unknown if out of range).
bool updateInputs(bool allowUnknown, const QVector< InputPort * > &inputPorts)
Snapshots each predecessor's output into the input cache, reading inputPorts for unconnected-input de...
void clearOutputChanged()
Clears the output-changed flag.
void reset(const QVector< OutputPort * > &outputPorts)
Resets each output slot to its port's power-on default (Unknown coerced to Inactive).
void beginDeferredCommit()
void setOutputValue(const int index, const Status value)
Sets output slot index to value, flagging a change when it differs.
void commitDeferredOutputs()
bool outputChanged() const
Returns true if any output changed since the flag was last cleared.
int decodeSelectValue(int offset, int count) const
Decodes count select-line statuses starting at offset into a binary index.
void initVectors(int inputCount, int outputCount, const QVector< OutputPort * > &outputPorts)
Allocates the I/O vectors and seeds outputs from outputPorts default statuses.
const QVector< Status > & outputs() const
const QVector< Status > & inputs() const
Read-only view of the cached simulation input values.
qsizetype outputSize() const
Returns the number of simulation output slots.
void connectPredecessor(int inputIndex, GraphicElement *source, int outputPort)
Records that simulation input inputIndex is driven by source output outputPort.
Abstract base class for all graphical circuit elements in wiRedPanda.
A port that drives a signal (the source end of a wire).