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