spo/ass2/simulator/executor.h
2025-12-11 07:38:13 +01:00

47 lines
890 B
C++

#ifndef EXECUTOR_H
#define EXECUTOR_H
#include <QObject>
class Machine;
class QTimer;
class Executor : public QObject
{
Q_OBJECT
public:
explicit Executor(Machine* m = nullptr);
~Executor() override;
bool hasEnded() const;
void resetProgram();
public slots:
// Zažene oz. nadaljuje samodejno izvajanje.
void start();
// Zaustavi samodejno izvajanje.
void stop();
// Izvede en ukaz.
void step();
signals:
void updateRequested();
void signalEnded();
void signalStarted();
void signalStopped();
private slots:
void runStep(); // povezan s QTimer::timeout
private:
Machine* machine = nullptr;
QTimer* timer = nullptr;
bool running = false;
bool ended = false;
bool stepping = false; // prepreči reentrant step
int intervalMs = 500; // privzeta frekvenca izvajanja v ms
};
#endif // EXECUTOR_H