Guest User

Untitled

a guest
May 23rd, 2013
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. bool valid(const tFSM& fsm){
  2.  
  3. size_t mx = fsm.size();
  4. vector<tFSM::tState> invalst;
  5.  
  6.     for (tFSM::tState curr = 0; curr < mx; ++curr)
  7.     {
  8.         set<tFSM::tState> st;
  9.         tFSM::tTransMap::const_iterator it;
  10.     if (fsm.table[curr].size() == 0 && fsm.finals.count(curr) == 0)
  11.     {
  12.         invalst.push_back(curr);
  13.         continue;
  14.     }
  15.  
  16.     for (it = fsm.table[curr].cbegin(); it != fsm.table[curr].cend(); ++it)
  17.         st.insert(it->second);
  18.        
  19.     if (st.size() == 1)
  20.     {
  21.         set<tFSM::tState>::const_iterator stit = st.cbegin();
  22.             if (*stit == curr && fsm.finals.count(curr) == 0)
  23.                 invalst.push_back(curr);
  24.     }
  25.     }
  26.  
  27.     if (invalst.size() > 0)
  28.     {
  29.         ostringstream tmp;
  30.         int wstate = 0;
  31.     for(vector<tFSM::tState>::const_iterator i =  invalst.cbegin(); i != invalst.cend(); ++i)
  32.     {
  33.         tmp << "State " << setw(2) << int(*i) <<
  34.         tmp << " is deadlocked. ";
  35.                         wstate++;
  36.                         if (wstate%2 == 0)
  37.                         {
  38.                                 tmp << endl << ' ';
  39.                         }
  40.     }
  41.     errmessage = tmp.str();
  42.     errcode = 5;
  43.     return false;
  44. }
  45.  
  46.   errcode=0;
  47.   return true;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment