/**
    Support for running stopping of project executable.

 */
module ddebug.common.execution;

enum ExecutionStatus {
    NotStarted,
    Running,
    Finished, // finished normally
    Killed,   // killed
    Error     // error while trying to start program
}

interface ProgramExecutionStatusListener {
    /// called when program execution is stopped
    void onProgramExecutionStatus(ProgramExecution process, ExecutionStatus status, int exitCode);
}

interface ProgramExecution {
    /// returns true if it's debugger
    @property bool isDebugger();
    /// executable file
    @property string executableFile();
    /// returns execution status
    @property ExecutionStatus status();
    /// start execution
    bool run();
    /// stop execution
    bool stop();
}