wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
WaveformSimulator.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
7
8#pragma once
9
10#include <functional>
11
12#include <QVector>
13
14#include "App/Core/Enums.h"
15
16class GraphicElement;
18class Scene;
19class Simulation;
20
31{
32public:
34 WaveformSimulator(Scene *externalScene, Simulation *simulation);
35
42 static QVector<Status> captureInputs(const QVector<GraphicElementInput *> &inputs, int inputPorts);
43
45 static void restoreInputs(const QVector<GraphicElementInput *> &inputs, const QVector<Status> &saved);
46
59 void sweep(const QVector<GraphicElementInput *> &inputs,
60 const QVector<GraphicElement *> &outputs,
61 int inputPorts, int columns,
62 const std::function<bool(int row, int col)> &readInput,
63 const std::function<void(int row, int col, int value)> &writeOutput) const;
64
65private:
66 Scene *m_externalScene = nullptr;
67 Simulation *m_simulation = nullptr;
68};
Central enumeration types for element types, groups, and signal status.
Abstract base for all interactive input elements (switches, buttons, clocks, etc.).
Abstract base class for all graphical circuit elements in wiRedPanda.
Main circuit editing scene.
Definition Scene.h:56
Manages the digital circuit simulation loop.
Definition Simulation.h:38
WaveformSimulator(Scene *externalScene, Simulation *simulation)
Constructs the driver for externalScene and its simulation.
static QVector< Status > captureInputs(const QVector< GraphicElementInput * > &inputs, int inputPorts)
Snapshots the live output-port state of every input element.
void sweep(const QVector< GraphicElementInput * > &inputs, const QVector< GraphicElement * > &outputs, int inputPorts, int columns, const std::function< bool(int row, int col)> &readInput, const std::function< void(int row, int col, int value)> &writeOutput) const
Runs the simulation across columns time steps.
static void restoreInputs(const QVector< GraphicElementInput * > &inputs, const QVector< Status > &saved)
Restores input-port states previously captured by captureInputs().