Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool valid(const tFSM& fsm){
- size_t mx = fsm.size();
- vector<tFSM::tState> invalst;
- for (tFSM::tState curr = 0; curr < mx; ++curr)
- {
- set<tFSM::tState> st;
- tFSM::tTransMap::const_iterator it;
- if (fsm.table[curr].size() == 0 && fsm.finals.count(curr) == 0)
- {
- invalst.push_back(curr);
- continue;
- }
- for (it = fsm.table[curr].cbegin(); it != fsm.table[curr].cend(); ++it)
- st.insert(it->second);
- if (st.size() == 1)
- {
- set<tFSM::tState>::const_iterator stit = st.cbegin();
- if (*stit == curr && fsm.finals.count(curr) == 0)
- invalst.push_back(curr);
- }
- }
- if (invalst.size() > 0)
- {
- ostringstream tmp;
- int wstate = 0;
- for(vector<tFSM::tState>::const_iterator i = invalst.cbegin(); i != invalst.cend(); ++i)
- {
- tmp << "State " << setw(2) << int(*i) <<
- tmp << " is deadlocked. ";
- wstate++;
- if (wstate%2 == 0)
- {
- tmp << endl << ' ';
- }
- }
- errmessage = tmp.str();
- errcode = 5;
- return false;
- }
- errcode=0;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment