Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove more uses of the session global
[simgrid.git] / src / mc / checker / Checker.hpp
index b04d6e3787962911c2faf8dc927db9c8b9dc2707..c0ba4a38cf2c747f2d2fdc70001b885cd1393a19 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef SIMGRID_MC_CHECKER_HPP
 #define SIMGRID_MC_CHECKER_HPP
 
-#include "src/mc/mc_api.hpp"
+#include "src/mc/api.hpp"
 
 namespace simgrid {
 namespace mc {
@@ -26,8 +26,10 @@ namespace mc {
  *  have all the necessary features). */
 // abstract
 class Checker {
+  Session* session_;
+
 public:
-  inline explicit Checker() { Api::get().set_checker(this); }
+  explicit Checker(Session* session) : session_(session) {}
 
   // No copy:
   Checker(Checker const&) = delete;
@@ -52,13 +54,15 @@ public:
 
   /** Log additional information about the state of the model-checker */
   virtual void log_state() = 0;
+
+  Session& get_session() { return *session_; }
 };
 
 // External constructors so that the types (and the types of their content) remain hidden
-XBT_PUBLIC Checker* createLivenessChecker();
-XBT_PUBLIC Checker* createSafetyChecker();
-XBT_PUBLIC Checker* createCommunicationDeterminismChecker();
-XBT_PUBLIC Checker* createUdporChecker();
+XBT_PUBLIC Checker* createLivenessChecker(Session* session);
+XBT_PUBLIC Checker* createSafetyChecker(Session* session);
+XBT_PUBLIC Checker* createCommunicationDeterminismChecker(Session* session);
+XBT_PUBLIC Checker* createUdporChecker(Session* session);
 
 } // namespace mc
 } // namespace simgrid