15#ifndef NSBACI_RUNTIMESERVICE_H
16#define NSBACI_RUNTIMESERVICE_H
121 std::unique_ptr<runtime::Scheduler> s);
217 const std::vector<runtime::Thread>&
getThreads()
const;
265 std::unique_ptr<runtime::Interpreter>
267 std::unique_ptr<runtime::Scheduler>
Base result class declaration for nsbaci services.
Represents an error with a message and optional code.
Definition error.h:28
const runtime::Program & getProgram() const
Gets the loaded program.
Definition runtimeService.cpp:173
RuntimeState getState() const
Gets the current runtime state.
Definition runtimeService.cpp:154
RuntimeService()=default
Default constructor creates an uninitialized service.
RuntimeResult run(size_t maxSteps=0)
Runs the program until halted, error, or step limit.
Definition runtimeService.cpp:126
bool isWaitingForInput() const
Checks if the runtime is waiting for user input.
Definition runtimeService.cpp:182
void loadProgram(runtime::Program &&p)
Loads a compiled program for execution.
Definition runtimeService.cpp:20
bool isHalted() const
Checks if the program has finished execution.
Definition runtimeService.cpp:156
const std::vector< runtime::Thread > & getThreads() const
Gets all threads from the scheduler.
Definition runtimeService.cpp:165
RuntimeResult stepThread(nsbaci::types::ThreadID threadId)
Executes a single instruction for a specific thread.
Definition runtimeService.cpp:120
void pause()
Pauses continuous execution.
Definition runtimeService.cpp:148
size_t threadCount() const
Gets the number of active threads.
Definition runtimeService.cpp:158
void setOutputCallback(runtime::OutputCallback callback)
Sets the callback for output operations.
Definition runtimeService.cpp:189
void provideInput(const std::string &input)
Provides input to the runtime.
Definition runtimeService.cpp:175
RuntimeResult step()
Executes a single instruction for any ready thread.
Definition runtimeService.cpp:42
void setDrawingCallback(runtime::DrawingCallback callback)
Sets the callback for drawing operations.
Definition runtimeService.cpp:195
void reset()
Resets the runtime to initial state.
Definition runtimeService.cpp:25
~RuntimeService()=default
Default destructor.
Represents a compiled program ready for execution.
Definition program.h:54
Interpreter class declaration for nsbaci runtime service.
std::function< void(const std::string &)> OutputCallback
Callback type for output operations.
Definition interpreter.h:62
std::function< void(const nsbaci::types::DrawCommand &)> DrawingCallback
Callback type for drawing operations.
Definition interpreter.h:68
Services namespace containing all backend service implementations.
Definition compilerService.cpp:15
RuntimeState
Possible states of the runtime service.
Definition runtimeService.h:75
@ Running
Program is actively executing.
Definition runtimeService.h:77
@ Halted
Program has finished execution.
Definition runtimeService.h:79
@ Idle
No program loaded or ready to start.
Definition runtimeService.h:76
@ Paused
Execution paused, can step or continue.
Definition runtimeService.h:78
Program class declaration for nsbaci runtime service.
Scheduler class declaration for nsbaci runtime service.
Base result structure for all service operations.
Definition baseResult.h:56
BaseResult()
Default constructor creates a successful result.
Definition baseResult.h:60
Result of a runtime operation (step, run, etc.).
Definition runtimeService.h:35
RuntimeResult(std::vector< nsbaci::Error > errs)
Constructs a result from a vector of errors.
Definition runtimeService.h:45
std::string output
Output produced by this step.
Definition runtimeService.h:62
RuntimeResult(nsbaci::Error error)
Constructs a failed result from a single error.
Definition runtimeService.h:52
RuntimeResult()
Default constructor creates a successful result.
Definition runtimeService.h:39
bool needsInput
True if waiting for user input.
Definition runtimeService.h:60
std::string inputPrompt
Prompt to show for input.
Definition runtimeService.h:61
bool halted
True if program has terminated.
Definition runtimeService.h:59