rad 6.2.0
Loading...
Searching...
No Matches
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
42namespace scxml4cpp {
43
44class Action;
45class Activity;
46class ExecutableContent;
47class StateHistory;
48class Transition;
49class Event;
50class Context;
51
60class State {
61 public:
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
162 void setType(const StateType type);
163
169 void setParent(State* parent);
170
176 void setIsInitial(const bool isInitial);
177
183 void setIsFinal(const bool isFinal);
184
191 void setHistory(StateHistory* h);
192
201 void setInitialState(State* initialState, Action* a);
202
208 void setFinalState(State* finalState);
209
215 void setSubstates(std::list<State*>& substates);
216
222 void setTransitions(std::list<Transition*>& transitions);
223
229 void setActivities(std::list<Activity*>& activities);
230
234 bool isInitial();
235
239 bool isFinal();
240
244 bool isCompound();
245
249 bool isParallel();
250
254 bool isAtomic();
255
259 bool isHistory();
260
266 void startActivities(Context* c);
267
273 void cancelActivities(Context* c);
274
281 void addEntryAction(Action* a);
282
289 void addExitAction(Action* a);
290
296 void addSubstate(State* s);
297
314 void addTransition(std::list<State*>& targets, const Event& event, Action* condition,
315 Action* action);
316
333 void addTransition(State* target, const Event& event, Action* condition, Action* action);
334
341 void addActivity(Activity* activity);
342
346 void delTransitions();
347
351 void delInitialTrans();
352
356 void delSubstates();
357
358 private:
359 std::string mId;
360 StateType mType;
361 State* mParent;
362 std::list<State*> mSubstates;
363 StateHistory* mHistory;
364 std::list<Transition*> mTransitions;
365 ExecutableContent* mOnEntry;
366 ExecutableContent* mOnExit;
367 std::list<Activity*> mActivities;
368 std::list<Transition*> mInitialTrans;
369 bool mIsInitial;
370 bool mIsFinal;
371
372 State(const State&);
373 State& operator=(const State&);
374};
375
376} // namespace scxml4cpp
377
378#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 setIsInitial(const bool isInitial)
Definition State.cpp:160
void cancelActivities(Context *c)
Definition State.cpp:392
bool isHistory()
Definition State.cpp:240
virtual ~State()
Definition State.cpp:62
void addExitAction(Action *a)
Definition State.cpp:251
std::string getId() const
Definition State.cpp:79
void setTransitions(std::list< Transition * > &transitions)
Definition State.cpp:209
std::list< Activity * > & getActivities()
Definition State.cpp:140
bool isAtomic()
Definition State.cpp:235
void delInitialTrans()
Definition State.cpp:358
void addSubstate(State *s)
Definition State.cpp:257
bool isParallel()
Definition State.cpp:230
StateHistory * getHistory()
Definition State.cpp:94
bool isInitial()
Definition State.cpp:215
StateType getType() const
Definition State.cpp:84
bool isCompound()
Definition State.cpp:225
void setType(const StateType type)
Definition State.cpp:150
std::list< State * > & getSubstates()
Definition State.cpp:118
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
std::list< Transition * > & getInitialTrans()
Definition State.cpp:99
void delTransitions()
Definition State.cpp:347
void setInitialState(State *initialState, Action *a)
Definition State.cpp:178
void setId(const std::string &id)
Definition State.cpp:145
void setHistory(StateHistory *h)
Definition State.cpp:170
void setIsFinal(const bool isFinal)
Definition State.cpp:165
State * getInitialState()
Definition State.cpp:104
void setFinalState(State *finalState)
Definition State.cpp:192
ExecutableContent * getEntryActions()
Definition State.cpp:129
bool isFinal()
Definition State.cpp:220
ExecutableContent * getExitActions()
Definition State.cpp:123
void addEntryAction(Action *a)
Definition State.cpp:245
void setActivities(std::list< Activity * > &activities)
Definition State.cpp:204
State * getParent()
Definition State.cpp:89
std::list< Transition * > & getTransitions()
Definition State.cpp:135
State(const std::string &id, const StateType type)
Definition State.cpp:45
void delSubstates()
Definition State.cpp:369
void startActivities(Context *c)
Definition State.cpp:380
void setSubstates(std::list< State * > &substates)
Definition State.cpp:198
void setParent(State *parent)
Definition State.cpp:155
void addTransition(std::list< State * > &targets, const Event &event, Action *condition, Action *action)
Definition State.cpp:271
void addActivity(Activity *activity)
Definition State.cpp:334
Definition Action.cpp:36
Definition testCoroActivity.cpp:16