rad  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 <string>
35 #include <list>
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 
47 class State
48 {
49  public:
50  enum StateType {
51  Atomic = 0,
55  };
56 
57  State(const std::string& id, const StateType type);
58  virtual ~State();
59 
60  std::string getId() const;
61  StateType getType() const;
62  State* getParent();
66  std::list<Transition*>& getInitialTrans();
68  std::list<State*>& getSubstates();
69  std::list<Transition*>& getTransitions();
70  std::list<Activity*>& getActivities();
71 
72  void setId(const std::string& id);
73  void setParent(State* parent);
74  void setIsInitial(const bool isInitial);
75  void setIsFinal(const bool isFinal);
76  void setHistory(StateHistory* h);
77  void setInitialState(State* initialState, Action* a);
78  void setFinalState(State* finalState);
79  void setSubstates(std::list<State*>& substates);
80  void setTransitions(std::list<Transition*>& transitions);
81  void setActivities(std::list<Activity*>& activities);
82 
83  bool isInitial();
84  bool isFinal();
85  bool isCompound();
86  bool isParallel();
87  bool isAtomic();
88  bool isHistory();
89 
90  void startActivities();
91  void cancelActivities();
92 
93  void addEntryAction(Action*);
94  void addExitAction(Action*);
95  void addSubstate(State*);
96  void addTransition(std::list<State*>& targets, const Event& event,
97  Action* condition, Action* action);
98  void addTransition(State* target, const Event& event, Action* condition, Action* action);
99  void addActivity(Activity* activity);
100 
101  void delTransitions();
102  void delInitialTrans();
103  void delSubstates();
104 
105  private:
106  std::string mId;
107  StateType mType;
108  State* mParent;
109  std::list<State*> mSubstates;
110  StateHistory* mHistory;
111  std::list<Transition*> mTransitions;
112  ExecutableContent* mOnEntry;
113  ExecutableContent* mOnExit;
114  std::list<Activity*> mActivities;
115  std::list<Transition*> mInitialTrans;
116  bool mIsInitial;
117  bool mIsFinal;
118 
119  State(const State&);
120  State& operator= (const State&);
121 };
122 
123 } // namespace scxml4cpp
124 
125 #endif // SCXML4CPP_STATE_H
void setIsFinal(const bool isFinal)
Definition: State.cpp:175
bool isHistory()
Definition: State.cpp:259
StateType getType() const
Definition: State.cpp:85
void startActivities()
Definition: State.cpp:392
void delSubstates()
Definition: State.cpp:380
ExecutableContent * getEntryActions()
Definition: State.cpp:137
Definition: State.h:47
void addSubstate(State *)
Definition: State.cpp:280
Definition: State.h:52
State * getParent()
Definition: State.cpp:91
Definition: Activity.h:39
virtual ~State()
Definition: State.cpp:60
void delTransitions()
Definition: State.cpp:355
void delInitialTrans()
Definition: State.cpp:368
Definition: State.h:53
std::list< Transition * > & getTransitions()
Definition: State.cpp:144
void setIsInitial(const bool isInitial)
Definition: State.cpp:169
bool isCompound()
Definition: State.cpp:241
ExecutableContent * getExitActions()
Definition: State.cpp:130
StateHistory * getHistory()
Definition: State.cpp:97
void setSubstates(std::list< State * > &substates)
Definition: State.cpp:209
bool isParallel()
Definition: State.cpp:247
Definition: State.h:54
void addExitAction(Action *)
Definition: State.cpp:272
State * getInitialState()
Definition: State.cpp:109
Definition: Action.h:40
void setActivities(std::list< Activity * > &activities)
Definition: State.cpp:216
void addEntryAction(Action *)
Definition: State.cpp:265
std::list< Activity * > & getActivities()
Definition: State.cpp:150
void setInitialState(State *initialState, Action *a)
Definition: State.cpp:187
std::string getId() const
Definition: State.cpp:79
Definition: ExecutableContent.h:46
void addTransition(std::list< State * > &targets, const Event &event, Action *condition, Action *action)
Definition: State.cpp:295
StateType
Definition: State.h:50
Definition: State.h:51
bool isAtomic()
Definition: State.cpp:253
bool isFinal()
Definition: State.cpp:235
void cancelActivities()
Definition: State.cpp:406
void setTransitions(std::list< Transition * > &transitions)
Definition: State.cpp:222
void setFinalState(State *finalState)
Definition: State.cpp:202
void setId(const std::string &id)
Definition: State.cpp:157
void setParent(State *parent)
Definition: State.cpp:163
Definition: Event.h:38
bool isInitial()
Definition: State.cpp:229
void setHistory(StateHistory *h)
Definition: State.cpp:181
Definition: StateHistory.h:43
void addActivity(Activity *activity)
Definition: State.cpp:341
std::list< State * > & getSubstates()
Definition: State.cpp:124
State(const std::string &id, const StateType type)
Definition: State.cpp:42
std::list< Transition * > & getInitialTrans()
Definition: State.cpp:103