ifw  0.0.1-dev
 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 STATE_H
28 #define 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 
40  class State;
41  class Action;
42  class Activity;
43  class ExecutableContent;
44  class StateHistory;
45  class Transition;
46  class Event;
47 
48  class State
49  {
50  public:
51  enum StateType {
52  Atomic = 0,
56  };
57 
58  State(const std::string& id, const StateType type);
59  virtual ~State();
60 
61  std::string getId() const;
62  StateType getType() const;
63  State* getParent();
67  std::list<Transition*>& getInitialTrans();
69  std::list<State*>& getSubstates();
70  std::list<Transition*>& getTransitions();
71  std::list<Activity*>& getActivities();
72 
73  void setId(const std::string& id);
74  void setParent(State* parent);
75  void setIsInitial(const bool isInitial);
76  void setIsFinal(const bool isFinal);
77  void setHistory(StateHistory* h);
78  void setInitialState(State* initialState, Action* a);
79  void setFinalState(State* finalState);
80  void setSubstates(std::list<State*>& substates);
81  void setTransitions(std::list<Transition*>& transitions);
82  void setActivities(std::list<Activity*>& activities);
83 
84  bool isInitial();
85  bool isFinal();
86  bool isCompound();
87  bool isParallel();
88  bool isAtomic();
89  bool isHistory();
90 
91  void startActivities();
92  void cancelActivities();
93 
94  void addEntryAction(Action*);
95  void addExitAction(Action*);
96  void addSubstate(State*);
97  void addTransition(std::list<State*>& targets, const Event& event,
98  Action* condition, Action* action);
99  void addTransition(State* target, const Event& event, Action* condition, Action* action);
100  void addActivity(Activity* activity);
101 
102  private:
103  std::string mId;
104  StateType mType;
105  State* mParent;
106  std::list<State*> mSubstates;
107  StateHistory* mHistory;
108  std::list<Transition*> mTransitions;
109  ExecutableContent* mOnEntry;
110  ExecutableContent* mOnExit;
111  std::list<Activity*> mActivities;
112  std::list<Transition*> mInitialTrans;
113  bool mIsInitial;
114  bool mIsFinal;
115 
116  State(const State&);
117  State& operator= (const State&);
118  };
119 
120 }
121 #endif
void setIsFinal(const bool isFinal)
Definition: State.cpp:195
bool isHistory()
Definition: State.cpp:277
StateType getType() const
Definition: State.cpp:105
void startActivities()
Definition: State.cpp:339
ExecutableContent * getEntryActions()
Definition: State.cpp:157
Definition: State.h:48
void addSubstate(State *)
Definition: State.cpp:298
Definition: State.h:53
State * getParent()
Definition: State.cpp:111
Definition: Activity.h:40
virtual ~State()
Definition: State.cpp:60
Definition: State.h:54
std::list< Transition * > & getTransitions()
Definition: State.cpp:164
void setIsInitial(const bool isInitial)
Definition: State.cpp:189
bool isCompound()
Definition: State.cpp:259
ExecutableContent * getExitActions()
Definition: State.cpp:150
StateHistory * getHistory()
Definition: State.cpp:117
void setSubstates(std::list< State * > &substates)
Definition: State.cpp:229
bool isParallel()
Definition: State.cpp:265
Definition: State.h:55
void addExitAction(Action *)
Definition: State.cpp:290
State * getInitialState()
Definition: State.cpp:129
Definition: Action.h:41
void setActivities(std::list< Activity * > &activities)
Definition: State.cpp:235
void addEntryAction(Action *)
Definition: State.cpp:283
std::list< Activity * > & getActivities()
Definition: State.cpp:170
void setInitialState(State *initialState, Action *a)
Definition: State.cpp:207
optional int32 action
Definition: topics.proto:56
std::string getId() const
Definition: State.cpp:99
Definition: ExecutableContent.h:47
void addTransition(std::list< State * > &targets, const Event &event, Action *condition, Action *action)
Definition: State.cpp:306
StateType
Definition: State.h:51
Definition: State.h:52
bool isAtomic()
Definition: State.cpp:271
bool isFinal()
Definition: State.cpp:253
void cancelActivities()
Definition: State.cpp:353
void setTransitions(std::list< Transition * > &transitions)
Definition: State.cpp:241
void setFinalState(State *finalState)
Definition: State.cpp:222
void setId(const std::string &id)
Definition: State.cpp:177
void setParent(State *parent)
Definition: State.cpp:183
Definition: Event.h:39
bool isInitial()
Definition: State.cpp:247
void setHistory(StateHistory *h)
Definition: State.cpp:201
Definition: StateHistory.h:43
void addActivity(Activity *activity)
Definition: State.cpp:332
std::list< State * > & getSubstates()
Definition: State.cpp:144
State(const std::string &id, const StateType type)
Definition: State.cpp:42
std::list< Transition * > & getInitialTrans()
Definition: State.cpp:123