|
Go to the documentation of this file.
54 pStatesAvoid(&msEmptyStates),
55 pStatesRequire(&msEmptyStates),
56 pEventsAvoid(&msEmptyEvents),
66 pStatesAvoid(rSrc.pStatesAvoid),
67 pStatesRequire(rSrc.pStatesRequire),
68 pEventsAvoid(rSrc.pEventsAvoid),
78 pStatesAvoid(&msEmptyStates),
79 pStatesRequire(&msEmptyStates),
80 pEventsAvoid(&msEmptyEvents),
97 pStatesAvoid(&msEmptyStates),
98 pStatesRequire(&msEmptyStates),
99 pEventsAvoid(&msEmptyEvents),
117 pStatesAvoid(&msEmptyStates),
118 pStatesRequire(&msEmptyStates),
119 pEventsAvoid(&msEmptyEvents),
138 pStatesAvoid(&msEmptyStates),
139 pStatesRequire(&msEmptyStates),
140 pEventsAvoid(&msEmptyEvents),
234 std::stack<Idx>& rStack,
236 std::map<const Idx, int>& rDfn,
237 std::map<const Idx, int>& rLowLnk,
238 std::list<StateSet>& rSccList,
241 FD_DF( "SerchScc: -- recursive search from state "<< vState << " at level " << vRcount << " --");
253 if(!rSccList.empty()) return;
255 rDfn[vState]=vRcount;
256 rLowLnk[vState]=vRcount;
261 rStackStates. Insert(vState);
268 if(tit->X1!=vState) break;
280 SearchScc(ls, vRcount, rGen, rFilter, rTodo, rStack, rStackStates, rDfn, rLowLnk, rSccList, rRoots);
282 if(rLowLnk[ls]<rLowLnk[vState]) rLowLnk[vState]=rLowLnk[ls];
287 if(rDfn[ls]<rDfn[vState])
289 if(rStackStates. Exists(ls))
291 if(rDfn[ls]<rLowLnk[vState]) rLowLnk[vState]=rDfn[ls];
296 if(rLowLnk[vState]==rDfn[vState]) {
298 FD_DF( "SearchScc: retrieving SCC from stack, root " << vState);
304 rStackStates. Erase(ls);
307 rSccList.back().Insert(ls);
317 if((!fl) && (rSccList.back().Size()==1)) {
321 if(tit->X1!=vState) break;
323 if(tit->X2!=vState) continue;
336 #ifdef FAUDES_DEBUG_FUNCTION
337 FD_DF( "SearchScc: invalidate scc for filter condition");
340 rRoots. Erase(vState);
350 std::list<StateSet>& rSccList,
353 FD_DF( "CompteScc(" << rGen. Name() << ")");
363 std::stack<Idx> stack;
366 std::map<const Idx, int> dfn;
367 std::map<const Idx, int> lowlnk;
381 while(!todostates. Empty()) {
382 SearchScc(*todostates. Begin(), count, rGen, rFilter, todostates, stack, stackstates,
383 dfn, lowlnk,rSccList, rRoots);
387 return !rSccList.empty();
393 std::list<StateSet>& rSccList,
396 FD_DF( "CompteScc(" << rGen. Name() << ") [std]");
402 return ComputeScc(rGen,msFilter,rSccList,rRoots);
413 FD_DF( "ComputeScc(" << rGen. Name() << ")");
422 std::stack<Idx> stack;
425 std::map<const Idx, int> dfn;
426 std::map<const Idx, int> lowlnk;
427 std::list<StateSet> scclist;
449 while(!todostates. Empty()) {
450 SearchScc(*todostates. Begin(), count, rGen, filter, todostates, stack, stackstates,
451 dfn, lowlnk, scclist, roots);
455 if(!scclist.empty()) rScc=*scclist.begin();
458 return !rScc. Empty();
468 FD_DF( "ComputeScc(" << rGen. Name() << ")");
477 std::stack<Idx> stack;
480 std::map<const Idx, int> dfn;
481 std::map<const Idx, int> lowlnk;
482 std::list<StateSet> scclist;
501 while(!todostates. Empty()) {
502 SearchScc(*todostates. Begin(), count, rGen, filter, todostates, stack, stackstates,
503 dfn, lowlnk, scclist, roots);
507 if(!scclist.empty()) rScc=*scclist.begin();
510 return !rScc. Empty();
518 FD_DF( "HasScc(" << rGen. Name() << ") [boolean only]");
524 std::stack<Idx> stack;
527 std::map<const Idx, int> dfn;
528 std::map<const Idx, int> lowlnk;
529 std::list<StateSet> scclist;
548 while(!todostates. Empty()) {
549 SearchScc(*todostates. Begin(), count, rGen, filter, todostates, stack, stackstates,
550 dfn, lowlnk, scclist, roots);
554 return !scclist.empty();
libFAUDES 2.28a
--- 2016.09.13
--- c++ api documentaion by doxygen
|