Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef STATE_H_HEADER_INCLUDED_C19A8A5D
00020 #define STATE_H_HEADER_INCLUDED_C19A8A5D
00021
00022 #include "mitkCommon.h"
00023 #include <string>
00024 #include <map>
00025 #include <set>
00026 #include <itkObject.h>
00027 #include <itkWeakPointer.h>
00028 #include <itkObjectFactory.h>
00029 #include "mitkTransition.h"
00030
00031 namespace mitk {
00032
00041 class MITK_CORE_EXPORT State : public itk::Object
00042 {
00043 public:
00044 mitkClassMacro(State, itk::Object);
00045
00049 mitkNewMacro2Param(Self, std::string, int);
00050
00051 typedef std::map<int, mitk::State::Pointer> StateMap;
00052 typedef std::map<int, itk::WeakPointer<mitk::Transition> > TransitionMap;
00053
00054 typedef StateMap::iterator StateMapIter;
00055 typedef TransitionMap::iterator TransMapIter;
00056
00057 typedef TransitionMap::const_iterator TransMapConstIter;
00058
00064 bool AddTransition( Transition* transition );
00065
00069 const Transition* GetTransition(int eventId) const;
00070
00074 std::string GetName() const;
00075
00079 int GetId() const;
00080
00084 std::set<int> GetAllNextStates() const;
00085
00089 bool IsValidEvent(int eventId) const;
00090
00095 bool ConnectTransitions(StateMap* allStates);
00096
00097 protected:
00103 State(std::string name, int id);
00104
00108 ~State();
00109
00110 private:
00114 std::string m_Name;
00115
00121 int m_Id;
00122
00126 TransitionMap m_Transitions;
00127
00128 };
00129
00130 }
00131
00132
00133
00134 #endif