![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
This library is designed to create and run state graphs. It supports hierarchical states and parallel states execution.
StateMachineLib/Transitions.h@4:22b4462fcb26, 2021-02-02 (annotated)
- Committer:
- martin13
- Date:
- Tue Feb 02 20:47:45 2021 +0000
- Revision:
- 4:22b4462fcb26
- Parent:
- 0:f4fdca2c4c67
Added unittests
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
martin13 | 0:f4fdca2c4c67 | 1 | //////////////////////////////////////////////////////////////////////////////// |
martin13 | 0:f4fdca2c4c67 | 2 | // Copyright Rottor SAS 2017 |
martin13 | 0:f4fdca2c4c67 | 3 | // All rigths reserved. |
martin13 | 0:f4fdca2c4c67 | 4 | // |
martin13 | 0:f4fdca2c4c67 | 5 | // File Name : Transitions.h |
martin13 | 0:f4fdca2c4c67 | 6 | // Authors : Martin Matignon |
martin13 | 0:f4fdca2c4c67 | 7 | // |
martin13 | 0:f4fdca2c4c67 | 8 | // If you find any bug or if you have any question please contact |
martin13 | 0:f4fdca2c4c67 | 9 | // Martin Matignon <martin.matignon@rottor.fr> |
martin13 | 0:f4fdca2c4c67 | 10 | // Nicolas Forestier <nicolas.forestier@rottor.fr> |
martin13 | 0:f4fdca2c4c67 | 11 | // |
martin13 | 0:f4fdca2c4c67 | 12 | //////////////////////////////////////////////////////////////////////////////// |
martin13 | 0:f4fdca2c4c67 | 13 | |
martin13 | 0:f4fdca2c4c67 | 14 | #ifndef __SM_TRANSITIONS_H__ |
martin13 | 0:f4fdca2c4c67 | 15 | #define __SM_TRANSITIONS_H__ |
martin13 | 0:f4fdca2c4c67 | 16 | |
martin13 | 0:f4fdca2c4c67 | 17 | #include <string> |
martin13 | 0:f4fdca2c4c67 | 18 | #include "State.h" |
martin13 | 0:f4fdca2c4c67 | 19 | |
martin13 | 0:f4fdca2c4c67 | 20 | class Transitions{ |
martin13 | 0:f4fdca2c4c67 | 21 | |
martin13 | 0:f4fdca2c4c67 | 22 | public: |
martin13 | 0:f4fdca2c4c67 | 23 | |
martin13 | 0:f4fdca2c4c67 | 24 | typedef struct Transition_t{ |
martin13 | 0:f4fdca2c4c67 | 25 | |
martin13 | 0:f4fdca2c4c67 | 26 | const char *outcome; |
martin13 | 0:f4fdca2c4c67 | 27 | const char *_exit_; |
martin13 | 0:f4fdca2c4c67 | 28 | State *target; |
martin13 | 0:f4fdca2c4c67 | 29 | Transition_t *next; |
martin13 | 0:f4fdca2c4c67 | 30 | |
martin13 | 0:f4fdca2c4c67 | 31 | Transition_t(const char* _outcome, State* _target, const char* _exit=NULL); |
martin13 | 0:f4fdca2c4c67 | 32 | |
martin13 | 0:f4fdca2c4c67 | 33 | }Transition_t; |
martin13 | 0:f4fdca2c4c67 | 34 | |
martin13 | 0:f4fdca2c4c67 | 35 | Transitions(); |
martin13 | 0:f4fdca2c4c67 | 36 | |
martin13 | 0:f4fdca2c4c67 | 37 | Transitions* addTransition(const char* outcome, State* target); |
martin13 | 0:f4fdca2c4c67 | 38 | |
martin13 | 0:f4fdca2c4c67 | 39 | Transitions* addTransition(Transition_t *transition); |
martin13 | 0:f4fdca2c4c67 | 40 | |
martin13 | 0:f4fdca2c4c67 | 41 | Transition_t* getTransition(const char* outcome); |
martin13 | 0:f4fdca2c4c67 | 42 | |
martin13 | 0:f4fdca2c4c67 | 43 | State* getTargetState(const char* outcome); |
martin13 | 0:f4fdca2c4c67 | 44 | |
martin13 | 0:f4fdca2c4c67 | 45 | void printList(string level=""); |
martin13 | 0:f4fdca2c4c67 | 46 | |
martin13 | 0:f4fdca2c4c67 | 47 | private: |
martin13 | 0:f4fdca2c4c67 | 48 | Transition_t *m_transitionsList; |
martin13 | 0:f4fdca2c4c67 | 49 | }; |
martin13 | 0:f4fdca2c4c67 | 50 | |
martin13 | 0:f4fdca2c4c67 | 51 | |
martin13 | 0:f4fdca2c4c67 | 52 | #endif /* #ifndef __SM_TRANSITIONS_H__*/ |