rad  3.0.0
State.h
Go to the documentation of this file.
1 /*
2  * scampl4cpp/engine
3  *
4  * Copyright by European Southern Observatory, 2012
5  * All rights reserved
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20  * 02111-1307 USA.
21  */
22 
23 /*
24  * $Id: State.h 1061 2015-07-13 15:03:59Z landolfa $
25  */
26 
27 #ifndef SCXML4CPP_STATE_H
28 #define SCXML4CPP_STATE_H
29 
30 #ifndef __cplusplus
31 #error This is a C++ include file and cannot be used from plain C
32 #endif
33 
34 #include <list>
35 #include <string>
36 
37 namespace scxml4cpp {
38 
39 class State;
40 class Action;
41 class Activity;
42 class ExecutableContent;
43 class StateHistory;
44 class Transition;
45 class Event;
46 class Context;
47 
48 class State {
49  public:
51 
52  State(const std::string& id, const StateType type);
53  virtual ~State();
54 
55  std::string getId() const;
56  StateType getType() const;
57  State* getParent();
61  std::list<Transition*>& getInitialTrans();
63  std::list<State*>& getSubstates();
64  std::list<Transition*>& getTransitions();
65  std::list<Activity*>& getActivities();
66 
67  void setId(const std::string& id);
68  void setParent(State* parent);
69  void setIsInitial(const bool isInitial);
70  void setIsFinal(const bool isFinal);
71  void setHistory(StateHistory* h);
72  void setInitialState(State* initialState, Action* a);
73  void setFinalState(State* finalState);
74  void setSubstates(std::list<State*>& substates);
75  void setTransitions(std::list<Transition*>& transitions);
76  void setActivities(std::list<Activity*>& activities);
77 
78  bool isInitial();
79  bool isFinal();
80  bool isCompound();
81  bool isParallel();
82  bool isAtomic();
83  bool isHistory();
84 
85  void startActivities(Context* c);
86  void cancelActivities(Context* c);
87 
88  void addEntryAction(Action*);
89  void addExitAction(Action*);
90  void addSubstate(State*);
91  void addTransition(std::list<State*>& targets, const Event& event, Action* condition,
92  Action* action);
93  void addTransition(State* target, const Event& event, Action* condition, Action* action);
94  void addActivity(Activity* activity);
95 
96  void delTransitions();
97  void delInitialTrans();
98  void delSubstates();
99 
100  private:
101  std::string mId;
102  StateType mType;
103  State* mParent;
104  std::list<State*> mSubstates;
105  StateHistory* mHistory;
106  std::list<Transition*> mTransitions;
107  ExecutableContent* mOnEntry;
108  ExecutableContent* mOnExit;
109  std::list<Activity*> mActivities;
110  std::list<Transition*> mInitialTrans;
111  bool mIsInitial;
112  bool mIsFinal;
113 
114  State(const State&);
115  State& operator=(const State&);
116 };
117 
118 } // namespace scxml4cpp
119 
120 #endif // SCXML4CPP_STATE_H
scxml4cpp::State::getParent
State * getParent()
Definition: State.cpp:84
scxml4cpp
Definition: Action.h:36
scxml4cpp::State::setInitialState
void setInitialState(State *initialState, Action *a)
Definition: State.cpp:165
scxml4cpp::State::setTransitions
void setTransitions(std::list< Transition * > &transitions)
Definition: State.cpp:196
scxml4cpp::State::startActivities
void startActivities(Context *c)
Definition: State.cpp:364
scxml4cpp::State::getSubstates
std::list< State * > & getSubstates()
Definition: State.cpp:113
scxml4cpp::State::setFinalState
void setFinalState(State *finalState)
Definition: State.cpp:179
scxml4cpp::State::getTransitions
std::list< Transition * > & getTransitions()
Definition: State.cpp:130
scxml4cpp::State::setId
void setId(const std::string &id)
Definition: State.cpp:140
scxml4cpp::State::getInitialTrans
std::list< Transition * > & getInitialTrans()
Definition: State.cpp:94
scxml4cpp::State::State
State(const std::string &id, const StateType type)
Definition: State.cpp:40
scxml4cpp::Activity
Definition: Activity.h:40
scxml4cpp::State::getId
std::string getId() const
Definition: State.cpp:74
scxml4cpp::State::setSubstates
void setSubstates(std::list< State * > &substates)
Definition: State.cpp:185
Context
Definition: testCoroActivity.cpp:16
scxml4cpp::State::delSubstates
void delSubstates()
Definition: State.cpp:354
scxml4cpp::State::setParent
void setParent(State *parent)
Definition: State.cpp:145
scxml4cpp::State::isHistory
bool isHistory()
Definition: State.cpp:227
scxml4cpp::State::isParallel
bool isParallel()
Definition: State.cpp:217
scxml4cpp::State::Compound
@ Compound
Definition: State.h:50
wscript.target
target
Definition: wscript:12
scxml4cpp::State::addTransition
void addTransition(std::list< State * > &targets, const Event &event, Action *condition, Action *action)
Definition: State.cpp:258
scxml4cpp::State
Definition: State.h:48
scxml4cpp::StateHistory
Definition: StateHistory.h:43
scxml4cpp::Action
Definition: Action.h:41
scxml4cpp::State::isAtomic
bool isAtomic()
Definition: State.cpp:222
scxml4cpp::State::isFinal
bool isFinal()
Definition: State.cpp:207
scxml4cpp::State::setIsInitial
void setIsInitial(const bool isInitial)
Definition: State.cpp:150
scxml4cpp::State::getEntryActions
ExecutableContent * getEntryActions()
Definition: State.cpp:124
scxml4cpp::State::setIsFinal
void setIsFinal(const bool isFinal)
Definition: State.cpp:155
scxml4cpp::State::History
@ History
Definition: State.h:50
scxml4cpp::State::getHistory
StateHistory * getHistory()
Definition: State.cpp:89
scxml4cpp::State::addSubstate
void addSubstate(State *)
Definition: State.cpp:244
scxml4cpp::State::getActivities
std::list< Activity * > & getActivities()
Definition: State.cpp:135
scxml4cpp::State::addExitAction
void addExitAction(Action *)
Definition: State.cpp:238
scxml4cpp::State::getType
StateType getType() const
Definition: State.cpp:79
scxml4cpp::State::Atomic
@ Atomic
Definition: State.h:50
scxml4cpp::State::setHistory
void setHistory(StateHistory *h)
Definition: State.cpp:160
scxml4cpp::State::delInitialTrans
void delInitialTrans()
Definition: State.cpp:344
scxml4cpp::State::isInitial
bool isInitial()
Definition: State.cpp:202
scxml4cpp::State::StateType
StateType
Definition: State.h:50
scxml4cpp::State::~State
virtual ~State()
Definition: State.cpp:57
scxml4cpp::Event
Definition: Event.h:39
scxml4cpp::State::addActivity
void addActivity(Activity *activity)
Definition: State.cpp:321
scxml4cpp::State::isCompound
bool isCompound()
Definition: State.cpp:212
scxml4cpp::State::delTransitions
void delTransitions()
Definition: State.cpp:334
scxml4cpp::State::Parallel
@ Parallel
Definition: State.h:50
scxml4cpp::State::cancelActivities
void cancelActivities(Context *c)
Definition: State.cpp:376
scxml4cpp::State::getExitActions
ExecutableContent * getExitActions()
Definition: State.cpp:118
scxml4cpp::ExecutableContent
Definition: ExecutableContent.h:47
scxml4cpp::Context
Definition: Context.h:44
scxml4cpp::State::getInitialState
State * getInitialState()
Definition: State.cpp:99
scxml4cpp::State::setActivities
void setActivities(std::list< Activity * > &activities)
Definition: State.cpp:191
scxml4cpp::State::addEntryAction
void addEntryAction(Action *)
Definition: State.cpp:232