rad 6.2.0
Loading...
Searching...
No Matches
Helper.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_HELPER_H
33#define SCXML4CPP_HELPER_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 <set>
41#include <vector>
42#include <string>
43
44namespace scxml4cpp {
45
46class Transition;
47class StateMachine;
48class State;
49class Action;
50class Activity;
51class Event;
52
57class Helper {
58 public:
62 Helper();
63
67 ~Helper();
68
72 const std::string printStateType(State* s);
73
77 const std::string printTransition(Transition* t);
78
82 const std::string printTransitions(std::list<Transition*>& transitions);
83
87 const std::string printTargetState(Transition* transitions);
88
92 const std::string printTargetStates(std::list<Transition*>& transitions);
93
97 const std::string printActions(std::list<Action*>& actions);
98
102 const std::string printActivities(std::list<Activity*>& activities);
103
107 const std::string printStates(State* s);
108
112 const std::string printStateMachine(StateMachine&);
113
121 const std::string formatStatus(std::list<State*>& status, const bool usefullyqualified = false);
122
131 bool compareStateDocOrder(State* s1, State* s2);
132
139 void sortAtomicStates(std::set<State*>& status, std::vector<State*>& sortedStatus);
140
147 bool isInState(const std::list<State*>& status, const std::list<std::string>& stateNames);
148
156 int countParents(State* s);
157
167 bool isDescendant(State* s, State* p);
168
175 std::set<State*> getAncestors(std::list<State*>& states);
176
183 std::set<State*> getAncestors(State* state);
184
191 std::list<State*> getAncestorsList(std::set<State*>& states);
192
199 std::list<State*> getAncestorsList(State*);
200
207 std::list<State*> getAncestorsList(std::list<State*>& states);
208
216 std::list<State*> getProperAncestors(State* state, State* upperBound);
217
228
237 bool eventMatch(const Event& e1, const Event& e2);
238
245 std::list<State*> getAtomicStates(std::set<State*>& states);
246
253 std::list<State*> getAtomicStates(std::list<State*>& states);
254
270 bool isPreempted(State* s, std::list<Transition*>& transitions);
271
272 inline static const std::string LEAF_STATE_SEPARATOR = ";"; // used to separate leaf states
273 inline static const std::string COMP_STATE_SEPARATOR = "/"; // used to build fully qualified state names
274
275 private:
276 Helper(const Helper&);
277 Helper& operator=(const Helper&);
278};
279
280} // namespace scxml4cpp
281
282#endif // SCXML4CPP_HELPER_H
Definition Event.h:66
Definition Helper.h:57
const std::string printTransitions(std::list< Transition * > &transitions)
Definition Helper.cpp:138
State * findLeastCommonAncestor(State *s1, State *s2)
Definition Helper.cpp:598
bool isInState(const std::list< State * > &status, const std::list< std::string > &stateNames)
Definition Helper.cpp:421
void sortAtomicStates(std::set< State * > &status, std::vector< State * > &sortedStatus)
Definition Helper.cpp:387
std::list< State * > getProperAncestors(State *state, State *upperBound)
Definition Helper.cpp:501
bool eventMatch(const Event &e1, const Event &e2)
Definition Helper.cpp:624
static const std::string COMP_STATE_SEPARATOR
Definition Helper.h:273
const std::string printTargetState(Transition *transitions)
Definition Helper.cpp:150
bool isDescendant(State *s, State *p)
Definition Helper.cpp:451
const std::string printStateType(State *s)
Definition Helper.cpp:52
const std::string printActions(std::list< Action * > &actions)
Definition Helper.cpp:177
Helper()
Definition Helper.cpp:48
const std::string printTransition(Transition *t)
Definition Helper.cpp:78
std::set< State * > getAncestors(std::list< State * > &states)
Definition Helper.cpp:520
const std::string formatStatus(std::list< State * > &status, const bool usefullyqualified=false)
Definition Helper.cpp:282
bool compareStateDocOrder(State *s1, State *s2)
Definition Helper.cpp:329
const std::string printActivities(std::list< Activity * > &activities)
Definition Helper.cpp:189
bool isPreempted(State *s, std::list< Transition * > &transitions)
Definition Helper.cpp:667
std::list< State * > getAncestorsList(std::set< State * > &states)
Definition Helper.cpp:554
const std::string printStates(State *s)
Definition Helper.cpp:201
std::list< State * > getAtomicStates(std::set< State * > &states)
Definition Helper.cpp:637
static const std::string LEAF_STATE_SEPARATOR
Definition Helper.h:272
const std::string printTargetStates(std::list< Transition * > &transitions)
Definition Helper.cpp:165
~Helper()
Definition Helper.cpp:50
int countParents(State *s)
Definition Helper.cpp:490
const std::string printStateMachine(StateMachine &)
Definition Helper.cpp:252
Definition StateMachine.h:64
Definition State.h:60
Definition Transition.h:68
Definition Action.cpp:36