From 7792030867604b881086584c627046f381e31c0a Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 28 Sep 2014 10:25:57 +0200 Subject: [PATCH] use generic getTransitions --- alib2algo/src/automaton/EpsilonClosure.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/alib2algo/src/automaton/EpsilonClosure.cpp b/alib2algo/src/automaton/EpsilonClosure.cpp index 318bcf5a39..39ad0e4221 100644 --- a/alib2algo/src/automaton/EpsilonClosure.cpp +++ b/alib2algo/src/automaton/EpsilonClosure.cpp @@ -40,10 +40,11 @@ std::set<automaton::State> EpsilonClosure::epsilonClosure( const automaton::Epsi visited[ p ] = true; closure.insert( p ); - for( const auto & transition : fsm.getEpsilonTransitionsFromState( p ) ) - for (const auto & to : transition.second ) - if( visited [ to ] == false ) - queue.push( to ); + for( const auto & transition : fsm.getTransitions( ) ) + if( transition.first.second.is<string::Epsilon>() && transition.first.first == p) + for (const auto & to : transition.second ) + if( visited [ to ] == false ) + queue.push( to ); } return closure; @@ -83,8 +84,8 @@ std::set<automaton::State> EpsilonClosure::epsilonClosure( const automaton::Exte visited[ p ] = true; closure.insert( p ); - for( const auto & transition : fsm.getTransitionsFromState( p ) ) - if( regexp::RegExpEpsilon::languageContainsEpsilon( transition.first.second ) ) + for( const auto & transition : fsm.getTransitions( ) ) + if( transition.first.first == p && regexp::RegExpEpsilon::languageContainsEpsilon( transition.first.second ) ) for (const auto & to : transition.second ) if( visited [ to ] == false ) queue.push( to ); @@ -111,8 +112,8 @@ std::set<automaton::State> EpsilonClosure::epsilonClosure( const automaton::Comp visited[ p ] = true; closure.insert( p ); - for( const auto & transition : fsm.getTransitionsFromState( p ) ) - if( transition.first.second.getContent().size() != 0 ) + for( const auto & transition : fsm.getTransitions( ) ) + if( transition.first.first == p && transition.first.second.getContent().size() == 0 ) for (const auto & to : transition.second ) if( visited [ to ] == false ) queue.push( to ); -- GitLab