// abstract
class Exploration : public xbt::Extendable<Exploration> {
std::unique_ptr<RemoteApp> remote_app_;
+ static Exploration* instance_;
FILE* dot_output_ = nullptr;
public:
- explicit Exploration(const std::vector<char*>& args);
+ explicit Exploration(const std::vector<char*>& args, bool need_memory_introspection);
virtual ~Exploration();
+ static Exploration* get_instance() { return instance_; }
// No copy:
Exploration(Exploration const&) = delete;
Exploration& operator=(Exploration const&) = delete;
/** Main function of this algorithm */
virtual void run() = 0;
+ /** Produce an error message indicating that the application crashed (status was produced by waitpid) */
+ XBT_ATTRIB_NORETURN void report_crash(int status);
+ /** Produce an error message indicating that a property was violated */
+ XBT_ATTRIB_NORETURN void report_assertion_failure();
+
+ /** Kill the application and the model-checker (which exits with `status`)*/
+ XBT_ATTRIB_NORETURN void system_exit(int status) const;
+
/* These methods are callbacks called by the model-checking engine
* to get and display information about the current state of the
* model-checking algorithm: */