#ifndef MACHINECONTROLLER_H #define MACHINECONTROLLER_H #include #include #include #include class Machine; class MachineController : public QObject { Q_OBJECT public: explicit MachineController(std::shared_ptr machine = nullptr, QObject *parent = nullptr); ~MachineController() override; void start(); void stop(); void step(); signals: void tick(); void error(const QString &msg); private: void runLoop(); std::atomic m_running{false}; std::thread m_thread; std::shared_ptr m_machine; }; #endif // MACHINECONTROLLER_H