MIRA
TransitionTarget.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Redistribution and modification of this code is strictly prohibited.
9  *
10  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
11  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
12  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
13  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14  *
15  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
16  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
18  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
19  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
20  */
21 
30 #ifndef _MIRA_TRANSITIONTARGET_H_
31 #define _MIRA_TRANSITIONTARGET_H_
32 
33 #include <string>
34 #include <list>
35 #include <map>
36 
37 #ifndef Q_MOC_RUN
38 #include <boost/shared_ptr.hpp>
39 #endif
40 
41 namespace mira { namespace sm {
42 
44 
46 class Transition;
48 class TransitionTarget;
49 
51 typedef boost::shared_ptr<HistoryState> HistoryStatePtr;
52 typedef std::list<HistoryStatePtr> HistoryStateList;
53 
54 typedef boost::shared_ptr<TransitionTarget> TransitionTargetPtr;
55 typedef std::list<TransitionTargetPtr> TransitionTargetList;
56 
57 typedef boost::shared_ptr<Transition> TransitionPtr;
58 typedef std::list<TransitionPtr> TransitionList;
59 
64 {
65 public:
67  parent(p), sortID(sid), firstEntry(true) {}
68  virtual ~TransitionTarget() {}
69 
75  std::string id;
77  std::vector<XMLDom::iterator> onEntry;
79  std::vector<XMLDom::iterator> onExit;
81  std::map<std::string, std::string> dataModel;
93  bool firstEntry;
94 };
95 
100 {
101  bool operator() (const TransitionTargetPtr& x, const TransitionTargetPtr& y) const
102  {
103  return x->sortID < y->sortID;
104  }
105 };
106 
111 {
112  bool operator() (const TransitionTargetPtr& x, const TransitionTargetPtr& y) const
113  {
114  return x->sortID > y->sortID;
115  }
116 };
117 
118 typedef std::set<TransitionTargetPtr, SortEntryOrder> TransitionTargetSet;
119 
124 {
125 public:
127  TransitionTarget(p, sid) {}
128 };
129 
130 typedef boost::shared_ptr<InitialState> InitialStatePtr;
131 
136 {
137 public:
139  TransitionTarget(p, sid) {}
140 };
141 
142 typedef boost::shared_ptr<ParallelState> ParallelStatePtr;
143 
147 class State : public TransitionTarget
148 {
149 public:
151  TransitionTarget(p, sid) {}
152 };
153 
154 typedef boost::shared_ptr<State> StatePtr;
155 
159 class FinalState : public State
160 {
161 public:
163  State(p, sid) {}
164 
166  std::string doneData;
167 };
168 
169 typedef boost::shared_ptr<FinalState> FinalStatePtr;
170 
174 class HistoryState : public State
175 {
176 public:
178  State(p, sid) {}
179 
181  std::string historyType;
182 };
183 
185 
186 }} // namespace
187 
188 #endif
bool firstEntry
Flag that is reset when the state is entered for the first time.
Definition: TransitionTarget.h:93
boost::shared_ptr< TransitionTarget > TransitionTargetPtr
Definition: TransitionTarget.h:54
bool operator()(const TransitionTargetPtr &x, const TransitionTargetPtr &y) const
Definition: TransitionTarget.h:101
uint32 sortID
An increasing id used for sorting states noting the order of the states found in the document...
Definition: TransitionTarget.h:73
FinalState(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:162
std::list< HistoryStatePtr > HistoryStateList
Definition: TransitionTarget.h:52
std::string id
The name of the state (manually given or auto generated)
Definition: TransitionTarget.h:75
TransitionTarget(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:66
uint32_t uint32
HistoryState(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:177
TransitionList transitions
The transitions of this state.
Definition: TransitionTarget.h:91
ParallelState(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:138
bool operator()(const TransitionTargetPtr &x, const TransitionTargetPtr &y) const
Definition: TransitionTarget.h:112
std::vector< XMLDom::iterator > onEntry
Executable content executed when the state is entered.
Definition: TransitionTarget.h:77
Helper to sort configuration in document order.
Definition: TransitionTarget.h:99
std::set< TransitionTargetPtr, SortEntryOrder > TransitionTargetSet
Definition: TransitionTarget.h:118
TransitionTargetPtr parent
The parent state.
Definition: TransitionTarget.h:71
A target (state) of a transition.
Definition: TransitionTarget.h:63
An initial state - points to a state that gets active when the parent of this state is entered...
Definition: TransitionTarget.h:123
std::string historyType
The type of history (deep or shallow)
Definition: TransitionTarget.h:181
std::vector< XMLDom::iterator > onExit
Executable content executed when the state is exited.
Definition: TransitionTarget.h:79
HistoryStateList history
The history children of this state.
Definition: TransitionTarget.h:85
std::list< TransitionPtr > TransitionList
Definition: TransitionTarget.h:58
TransitionTargetPtr initial
The initial child of this state.
Definition: TransitionTarget.h:89
State(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:150
InitialState(TransitionTargetPtr p, uint32 sid)
Definition: TransitionTarget.h:126
TransitionTargetList children
The direct children of this state.
Definition: TransitionTarget.h:83
boost::shared_ptr< FinalState > FinalStatePtr
Definition: TransitionTarget.h:169
An parallel state - all child states are active in parallel.
Definition: TransitionTarget.h:135
boost::shared_ptr< HistoryState > HistoryStatePtr
Definition: TransitionTarget.h:50
std::map< std::string, std::string > dataModel
The data model for this state.
Definition: TransitionTarget.h:81
std::list< TransitionTargetPtr > TransitionTargetList
Definition: TransitionTarget.h:55
boost::shared_ptr< Transition > TransitionPtr
Definition: TransitionTarget.h:57
std::string doneData
Data that is set to the done.state event when this state is entered.
Definition: TransitionTarget.h:166
boost::shared_ptr< ParallelState > ParallelStatePtr
Definition: TransitionTarget.h:142
A basic state.
Definition: TransitionTarget.h:147
An final state.
Definition: TransitionTarget.h:159
Helper to sort configuration in reverse document order.
Definition: TransitionTarget.h:110
boost::shared_ptr< InitialState > InitialStatePtr
Definition: TransitionTarget.h:130
A pseudo state representing the history of a state.
Definition: TransitionTarget.h:174
boost::shared_ptr< State > StatePtr
Definition: TransitionTarget.h:154
virtual ~TransitionTarget()
Definition: TransitionTarget.h:68