rad  5.1.0
State.h
Go to the documentation of this file.
1 
10 /*
11  * scampl4cpp/engine
12  *
13  * Copyright by European Southern Observatory, 2012
14  * All rights reserved
15  *
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  *
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24  * Lesser General Public License for more details.
25  *
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
29  * 02111-1307 USA.
30  */
31 
32 #ifndef SCXML4CPP_STATE_H
33 #define SCXML4CPP_STATE_H
34 
35 #ifndef __cplusplus
36 #error This is a C++ include file and cannot be used from plain C
37 #endif
38 
39 #include <list>
40 #include <string>
41 
42 namespace scxml4cpp {
43 
44 class Action;
45 class Activity;
46 class ExecutableContent;
47 class StateHistory;
48 class Transition;
49 class Event;
50 class Context;
51 
60 class State {
61  public:
62  enum StateType {
63  Atomic = 0,
66  History
67  };
68 
75  State(const std::string& id, const StateType type);
76 
86  virtual ~State();
87 
91  std::string getId() const;
92 
96  StateType getType() const;
97 
101  State* getParent();
102 
107 
112 
117 
121  std::list<Transition*>& getInitialTrans();
122 
129 
133  std::list<State*>& getSubstates();
134 
139  std::list<Transition*>& getTransitions();
140 
144  std::list<Activity*>& getActivities();
145 
151  void setId(const std::string& id);
152 
158  void setParent(State* parent);
159 
165  void setIsInitial(const bool isInitial);
166 
172  void setIsFinal(const bool isFinal);
173 
180  void setHistory(StateHistory* h);
181 
190  void setInitialState(State* initialState, Action* a);
191 
197  void setFinalState(State* finalState);
198 
204  void setSubstates(std::list<State*>& substates);
205 
211  void setTransitions(std::list<Transition*>& transitions);
212 
218  void setActivities(std::list<Activity*>& activities);
219 
223  bool isInitial();
224 
228  bool isFinal();
229 
233  bool isCompound();
234 
238  bool isParallel();
239 
243  bool isAtomic();
244 
248  bool isHistory();
249 
255  void startActivities(Context* c);
256 
262  void cancelActivities(Context* c);
263 
270  void addEntryAction(Action* a);
271 
278  void addExitAction(Action* a);
279 
285  void addSubstate(State* s);
286 
303  void addTransition(std::list<State*>& targets, const Event& event, Action* condition,
304  Action* action);
305 
322  void addTransition(State* target, const Event& event, Action* condition, Action* action);
323 
330  void addActivity(Activity* activity);
331 
335  void delTransitions();
336 
340  void delInitialTrans();
341 
345  void delSubstates();
346 
347  private:
348  std::string mId;
349  StateType mType;
350  State* mParent;
351  std::list<State*> mSubstates;
352  StateHistory* mHistory;
353  std::list<Transition*> mTransitions;
354  ExecutableContent* mOnEntry;
355  ExecutableContent* mOnExit;
356  std::list<Activity*> mActivities;
357  std::list<Transition*> mInitialTrans;
358  bool mIsInitial;
359  bool mIsFinal;
360 
361  State(const State&);
362  State& operator=(const State&);
363 };
364 
365 } // namespace scxml4cpp
366 
367 #endif // SCXML4CPP_STATE_H
Definition: Action.h:66
Definition: Activity.h:52
Definition: Context.h:58
Definition: Event.h:66
Definition: ExecutableContent.h:57
Definition: StateHistory.h:57
Definition: State.h:60
void addExitAction(Action *a)
Definition: State.cpp:246
std::string getId() const
Definition: State.cpp:79
StateHistory * getHistory()
Definition: State.cpp:94
State(const std::string &id, const StateType type)
Definition: State.cpp:45
void addTransition(std::list< State * > &targets, const Event &event, Action *condition, Action *action)
Definition: State.cpp:266
void setSubstates(std::list< State * > &substates)
Definition: State.cpp:193
std::list< Activity * > & getActivities()
Definition: State.cpp:140
void setParent(State *parent)
Definition: State.cpp:150
void setHistory(StateHistory *h)
Definition: State.cpp:165
bool isAtomic()
Definition: State.cpp:230
void addSubstate(State *s)
Definition: State.cpp:252
StateType
Definition: State.h:62
@ History
A state that can have active concurrently sub-states.
Definition: State.h:66
@ Parallel
A state that can have sub-states.
Definition: State.h:65
@ Compound
A state that has no sub-states.
Definition: State.h:64
@ Atomic
Definition: State.h:63
void delInitialTrans()
Definition: State.cpp:353
ExecutableContent * getExitActions()
Definition: State.cpp:123
void setIsInitial(const bool isInitial)
Definition: State.cpp:155
ExecutableContent * getEntryActions()
Definition: State.cpp:129
void setTransitions(std::list< Transition * > &transitions)
Definition: State.cpp:204
std::list< State * > & getSubstates()
Definition: State.cpp:118
void startActivities(Context *c)
Definition: State.cpp:375
bool isInitial()
Definition: State.cpp:210
void setIsFinal(const bool isFinal)
Definition: State.cpp:160
bool isFinal()
Definition: State.cpp:215
void delSubstates()
Definition: State.cpp:364
void setInitialState(State *initialState, Action *a)
Definition: State.cpp:173
StateType getType() const
Definition: State.cpp:84
void addActivity(Activity *activity)
Definition: State.cpp:329
std::list< Transition * > & getInitialTrans()
Definition: State.cpp:99
void setActivities(std::list< Activity * > &activities)
Definition: State.cpp:199
std::list< Transition * > & getTransitions()
Definition: State.cpp:135
State * getParent()
Definition: State.cpp:89
State * getInitialState()
Definition: State.cpp:104
void addEntryAction(Action *a)
Definition: State.cpp:240
bool isCompound()
Definition: State.cpp:220
void setId(const std::string &id)
Definition: State.cpp:145
bool isParallel()
Definition: State.cpp:225
void cancelActivities(Context *c)
Definition: State.cpp:387
bool isHistory()
Definition: State.cpp:235
void setFinalState(State *finalState)
Definition: State.cpp:187
void delTransitions()
Definition: State.cpp:342
virtual ~State()
Definition: State.cpp:62
Definition: Action.h:40
target
Definition: wscript:12
Definition: testCoroActivity.cpp:16