From 0dbc9d1f5e9746ab8556153ff983df78dffca4e5 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Thu, 20 Feb 2014 14:27:25 +0100 Subject: [PATCH] function retrieving transitions to some state --- alib/src/automaton/FSM/FSM.cpp | 14 ++++++++++++++ alib/src/automaton/FSM/FSM.h | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/alib/src/automaton/FSM/FSM.cpp b/alib/src/automaton/FSM/FSM.cpp index c5cc8eb432..96b753a74c 100644 --- a/alib/src/automaton/FSM/FSM.cpp +++ b/alib/src/automaton/FSM/FSM.cpp @@ -110,6 +110,20 @@ const set<TransitionFSM>& FSM::getTransitionsFromState(const State& from) const return transitions; } +const set<TransitionFSM>& FSM::getTransitionsToState(const State& to) const { + if( states.find(to) == states.end()) + throw AutomatonException("State \"" + to.getName() + "\" doesn't exist"); + + set<TransitionFSM> transitionsToState; + for(auto const& transition : transitions){ + if (transition.getTo() == to){ + transitionsToState.insert(transition); + } + } + + return transitions; +} + void FSM::toXML(ostream& out) const { AutomatonPrinter::toXML(*this, out); } diff --git a/alib/src/automaton/FSM/FSM.h b/alib/src/automaton/FSM/FSM.h index a89dc40cf1..3a1a91d8de 100644 --- a/alib/src/automaton/FSM/FSM.h +++ b/alib/src/automaton/FSM/FSM.h @@ -72,6 +72,11 @@ public: */ const set<TransitionFSM>& getTransitionsFromState(const State& from) const; + /** + * @return automaton transitions from state + */ + const set<TransitionFSM>& getTransitionsToState(const State& to) const; + /** * Determines whether FSM contains epsilon transitions. * @return true when automaton doesn't contain epsilon transitions, false otherwise -- GitLab