From 29dee60598bcf6fbdd32bee0548a525cdb458144 Mon Sep 17 00:00:00 2001
From: abid <chiheb.abid@gmail.com>
Date: Sun, 26 May 2019 23:14:35 +0100
Subject: [PATCH] =?UTF-8?q?=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?=
 =?UTF-8?q?=20src/CMakeLists.txt=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20?=
 =?UTF-8?q?=20=20=20=20src/ModelCheckLace.cpp=20=09modifi=C3=A9=C2=A0:=20?=
 =?UTF-8?q?=20=20=20=20=20=20=20=20src/ModelCheckLace.h=20=09modifi=C3=A9?=
 =?UTF-8?q?=C2=A0:=20=20=20=20=20=20=20=20=20src/SogKripkeIteratorOTF.cpp?=
 =?UTF-8?q?=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20=20src/SogKrip?=
 =?UTF-8?q?keIteratorOTF.h=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20?=
 =?UTF-8?q?=20=20src/SogKripkeOTF.cpp=20=09modifi=C3=A9=C2=A0:=20=20=20=20?=
 =?UTF-8?q?=20=20=20=20=20src/SogKripkeOTF.h=20=09modifi=C3=A9=C2=A0:=20?=
 =?UTF-8?q?=20=20=20=20=20=20=20=20src/main.cpp?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/CMakeLists.txt           |  6 ++++++
 src/ModelCheckLace.cpp       |  6 ++++++
 src/ModelCheckLace.h         |  3 ++-
 src/SogKripkeIteratorOTF.cpp |  6 ++++--
 src/SogKripkeIteratorOTF.h   | 25 ++++---------------------
 src/SogKripkeOTF.cpp         |  6 +++---
 src/SogKripkeOTF.h           |  8 ++++----
 src/main.cpp                 |  4 ++++
 8 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9f92226..a042d27 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -60,6 +60,12 @@ add_executable(hybrid-sog main.cpp
   SogKripke.h
   ModelCheckLace.cpp
   ModelCheckLace.h
+  SogKripkeStateOTF.cpp
+  SogKripkeStateOTF.h
+  SogKripkeIteratorOTF.cpp
+  SogKripkeIteratorOTF.h
+  SogKripkeOTF.cpp
+  SogKripkeOTF.h
   )
 
 target_link_libraries(hybrid-sog
diff --git a/src/ModelCheckLace.cpp b/src/ModelCheckLace.cpp
index e7d3276..1e73d55 100644
--- a/src/ModelCheckLace.cpp
+++ b/src/ModelCheckLace.cpp
@@ -114,3 +114,9 @@ ModelCheckLace::ModelCheckLace(const NewNet &R, int BOUND,int nbThread)
     delete [] prec;
     delete [] postc;
 }
+
+
+string ModelCheckLace::getTransition(int pos) {
+string temp;
+return temp;
+}
diff --git a/src/ModelCheckLace.h b/src/ModelCheckLace.h
index 717f100..6950b92 100644
--- a/src/ModelCheckLace.h
+++ b/src/ModelCheckLace.h
@@ -4,7 +4,8 @@
 class ModelCheckLace : public CommonSOG {
 public:
         ModelCheckLace(const NewNet &R, int BOUND,int nbThread);
-        LDDState & getInitialMetaState();
+        LDDState & buildInitialMetaState();
+        string getTransition(int pos);
 private:
     int m_nb_thread;
     MDD m_initalMarking;
diff --git a/src/SogKripkeIteratorOTF.cpp b/src/SogKripkeIteratorOTF.cpp
index b1fa514..c2f4828 100644
--- a/src/SogKripkeIteratorOTF.cpp
+++ b/src/SogKripkeIteratorOTF.cpp
@@ -4,7 +4,7 @@
 #include "SogKripkeIteratorOTF.h"
 
 
-SogKripkeIteratorOTF::SogKripkeIteratorOTF(const LDDGraph& m_gr, const SogKripkeStateOTF& lddstate, bdd cnd):m_sog(m_gr),m_lddstate(lddstate), kripke_succ_iterator(cnd)
+SogKripkeIteratorOTF::SogKripkeIteratorOTF(const LDDState* lddstate, bdd cnd):m_lddstate(lddstate), kripke_succ_iterator(cnd)
 {
     //vector<pair<LDDState*, int>>
     m_lddstate->setDiv(true);
@@ -44,7 +44,7 @@ SogKripkeStateOTF* SogKripkeIteratorOTF::dst() const
 
 bdd SogKripkeIteratorOTF::cond()  const {
     if (m_lsucc.at(m_current_edge).second==-1) return bddtrue;
-    string name=m_graph->getTransition(m_lsucc.at(m_current_edge).second);
+    string name=m_builder->getTransition(m_lsucc.at(m_current_edge).second);
     //cout<<"Value "<<m_lddstate->getSuccessors()->at(m_current_edge).second<<" Transition name "<<name<<endl;
 
     spot::bdd_dict *p=m_dict_ptr->get();
@@ -65,3 +65,5 @@ SogKripkeIteratorOTF::~SogKripkeIteratorOTF()
     //dtor
 }
 
+static ModelCheckLace * SogKripkeIteratorOTF::m_builder;
+static spot::bdd_dict_ptr* SogKripkeIteratorOTF::m_dict_ptr;
diff --git a/src/SogKripkeIteratorOTF.h b/src/SogKripkeIteratorOTF.h
index d1f191a..7a3ac82 100644
--- a/src/SogKripkeIteratorOTF.h
+++ b/src/SogKripkeIteratorOTF.h
@@ -1,17 +1,17 @@
 #ifndef SOGKRIPKEITERATOROTF_H_INCLUDED
 #define SOGKRIPKEITERATOROTF_H_INCLUDED
 #include "SogKripkeStateOTF.h"
-#include "LDDGraph.h"
+#include "ModelCheckLace.h"
 #include <spot/kripke/kripke.hh>
 // Iterator for a SOG graph
 class SogKripkeIteratorOTF : public spot::kripke_succ_iterator
 {
 public:
 
-  //  static LDDGraph * m_graph;
+    static ModelCheckLace * m_builder;
     static spot::bdd_dict_ptr* m_dict_ptr;
   //  sog_succ_iterator(const RdPBDD& pn, const SogKripkeState& s, const bdd& c);
-    SogKripkeIteratorOTF(const LDDGraph& m_gr, const SogKripkeStateOTF& lddstate, bdd cnd);
+    SogKripkeIteratorOTF(const LDDState* lddstate, bdd cnd);
     virtual ~SogKripkeIteratorOTF();
     bool first() override;
     bool next() override;
@@ -30,26 +30,9 @@ public:
     std::string format_transition() const;
 
 private:
-    //const threadSOG& pn_sog; ///< The petri net.
-    MDD from; ///< The source state.
-    bool dead; ///< The source div attribut.
-    bool div; ///< The source div attribut.
-   // bdd cond; ///< The condition which must label all successors.
-
-    std::set<int>::const_iterator it;
-    /// \brief Designate the associated Petri net.
-   // const SogKripkeOTF& pn_sog;
-
-    /// \brief Point to the marking for which we iterate.
-    //MDD mark;
-    // Associated SOG graph
-
     LDDState * m_lddstate;
-    LDDGraph *m_sog;
-    vector<pair<SogKripkeStateOTF, int>> m_lsucc;
+    vector<pair<LDDState*, int>> m_lsucc;
     unsigned int m_current_edge=0;
-    LDDGraph * SogKripkeIteratorOTF::m_graph;
-   // spot::bdd_dict_ptr* SogKripkeIteratorOTF::m_dict_ptr;
 };
 
 
diff --git a/src/SogKripkeOTF.cpp b/src/SogKripkeOTF.cpp
index dafb027..37b7b93 100644
--- a/src/SogKripkeOTF.cpp
+++ b/src/SogKripkeOTF.cpp
@@ -10,13 +10,13 @@
 #include "SogKripkeOTF.h"
 #include <map>
 using namespace spot;
-SogKripkeOTF::SogKripkeOTF(const bdd_dict_ptr &dict_ptr,LDDGraph *sog): spot::kripke(dict_ptr),m_sog(sog)
+SogKripkeOTF::SogKripkeOTF(const bdd_dict_ptr &dict_ptr,ModelCheckLace *builder): spot::kripke(dict_ptr),m_builder(builder)
 {
-    SogKripkeIteratorOTF::m_graph=sog;
+    SogKripkeIteratorOTF::m_builder=builder;
     SogKripkeIteratorOTF::m_dict_ptr=&dict_ptr;
 }
 
-SogKripkeOTF::SogKripkeOTF(const spot::bdd_dict_ptr& dict_ptr,LDDGraph *sog,set<string> &l_transap,set<string> &l_placeap):SogKripkeOTF(dict_ptr,sog) {
+SogKripkeOTF::SogKripkeOTF(const spot::bdd_dict_ptr& dict_ptr,ModelCheckLace *builder,set<string> &l_transap,set<string> &l_placeap):SogKripkeOTF(dict_ptr,builder) {
     for (auto it=l_transap.begin();it!=l_transap.end();it++) {
         register_ap(*it);
     }
diff --git a/src/SogKripkeOTF.h b/src/SogKripkeOTF.h
index 300e783..6360cae 100644
--- a/src/SogKripkeOTF.h
+++ b/src/SogKripkeOTF.h
@@ -11,7 +11,7 @@ class SogKripkeOTF: public spot::kripke {
     public:
 
         //SogKripkeOTF(const spot::bdd_dict_ptr& dict_ptr,LDDGraph *sog);
-        SogKripkeOTF(const spot::bdd_dict_ptr& dict_ptr,const NewNet *n,set<string> &l_transap,set<string> &l_placeap);
+        SogKripkeOTF(const spot::bdd_dict_ptr& dict_ptr,ModelCheckLace *builder,set<string> &l_transap,set<string> &l_placeap);
         virtual ~SogKripkeOTF();
         spot::state* get_init_state() const;
         SogKripkeIteratorOTF* succ_iter(const spot::state* s) const override;
@@ -19,10 +19,10 @@ class SogKripkeOTF: public spot::kripke {
         bdd state_condition(const spot::state* s) const override;
 
           /// \brief Get the graph associated to the automaton.
-        const LDDGraph& get_graph() const {
+       /* const LDDGraph& get_graph() const {
         return *m_sog;
-  }
-        LDDGraph *m_sog;
+  }*/
+        ModelCheckLace *m_builder;
 
     protected:
 
diff --git a/src/main.cpp b/src/main.cpp
index e48bd28..434f3e0 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -24,6 +24,7 @@
 #include "NewNet.h"
 #include "SogTwa.h"
 #include "SogKripke.h"
+#include "SogKripkeOTF.h"
 
 
 
@@ -146,6 +147,9 @@ int main(int argc, char** argv)
         }
         // Initialize SOG builder
         ModelCheckLace* mcl=new ModelCheckLace(R,bound,nb_th);
+        spot::twa_graph_ptr k =
+                    spot::make_twa_graph(std::make_shared<SogKripkeOTF>(d,mcl,R.getListTransitionAP(),R.getListPlaceAP()),
+                                         spot::twa::prop_set::all(), true);
         // Performing on the fly Modelchecking
     }
     else if (n_tasks==1)
-- 
GitLab