|
Go to the documentation of this file.
28 const std::map<Idx,StateSet>& rEntryStatesMap, const TransSetX2EvX1& rLowRevTransRel,
33 LowExitStates(rHighAlph, rEntryStatesMap, rLowRevTransRel, highState, lo_exitstates);
42 FD_DF( "LowExitStates: computing low level exit states for high level"
43 << " state " << rLowExitStates. Str(highState));
45 std::map<Idx,StateSet>::const_iterator esmap_it;
46 StateSet::Iterator lit;
50 esmap_it = rEntryStatesMap.find(highState);
52 if (esmap_it == rEntryStatesMap.end()) {
53 std::stringstream errstr;
54 errstr << "Hi level state " << rHighAlph. Str(highState)
55 << " not found in entry states map";
56 throw Exception( "LowExitStates", errstr.str(), 502);
60 for (lit = esmap_it->second.Begin(); lit != esmap_it->second.End(); ++lit) {
61 FD_DF( "LowExitStates: current low level entry state "
62 << rLowExitStates. Str(*lit));
64 rtit_end = rLowRevTransRel. EndByX2(*lit);
65 for (; rtit != rtit_end; ++rtit) {
66 if (rHighAlph. Exists(rtit->Ev)) {
67 FD_DF( "LowExitStates: found low level exit state "
68 << rLowExitStates. Str(rtit->X1));
69 rLowExitStates. Insert(rtit->X1);
83 return reachable_events;
100 rReachableEvents. Clear();
105 while (! todo.empty()) {
106 const Idx current = todo.top();
110 for (; tit != tit_end; ++tit) {
111 if (rHighAlph. Exists(tit->Ev)) {
112 rReachableEvents. Insert(tit->Ev);
114 if (rReachableEvents. Size() == rHighAlph. Size()) {
119 else if (! done. Exists(tit->X2)) {
136 std::stack<Idx> todo;
140 rCoaccessibleReach. Insert(lowState);
141 while (! todo.empty()) {
142 const Idx current = todo.top();
145 tit_end = rRevTransRel. EndByX2(current);
146 for (; tit != tit_end; ++tit) {
148 if (rHighAlph. Exists(tit->Ev)) {
152 else if (! rCoaccessibleReach. Exists(tit->X1)) {
154 rCoaccessibleReach. Insert(tit->X1);
168 std::stack<Idx> todo;
172 rAccessibleReach. Insert(lowState);
173 while (! todo.empty()) {
174 const Idx current = todo.top();
178 for (; tit != tit_end; ++tit) {
180 if (rHighAlph. Exists(tit->Ev)) {
184 if (! rAccessibleReach. Exists(tit->X2)) {
186 rAccessibleReach. Insert(tit->X2);
libFAUDES 2.28a
--- 2016.09.13
--- c++ api documentaion by doxygen
|