The MAUVE Toolchain
WithAbstractFSM.hpp
1 /*
2  * Copyright 2017 ONERA
3  *
4  * This file is part of the MAUVE Runtime project.
5  *
6  * MAUVE Runtime is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License version 3 as
8  * published by the Free Software Foundation.
9  *
10  * MAUVE Runtime is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with MAUVE. If not, see <https://www.gnu.org/licenses/lgpl-3.0>.
17  */
18 #ifndef MAUVE_RUNTIME_WITH_ABSTRACT_FSM_HPP
19 #define MAUVE_RUNTIME_WITH_ABSTRACT_FSM_HPP
20 
21 namespace mauve {
22  namespace runtime {
23 
24  class AbstractFiniteStateMachine;
25 
27  struct WithAbstractFSM {
29  virtual AbstractFiniteStateMachine* get_fsm () const = 0;
31  virtual bool is_empty_fsm () const = 0;
33  virtual bool configure_fsm () = 0;
35  virtual bool cleanup_fsm () = 0;
36  };
37  }
38 }
39 
40 #endif
Trait for objects with an abstract FSM.
Definition: WithAbstractFSM.hpp:27
virtual bool is_empty_fsm() const =0
Check if the FSM is empty.
A Finite State Machine describes the component behavior.
Definition: AbstractFiniteStateMachine.hpp:34
The MAUVE namespace.
Definition: tracing.hpp:24
virtual bool configure_fsm()=0
Configure the FSM.
virtual bool cleanup_fsm()=0
Clean up the FSM.
virtual AbstractFiniteStateMachine * get_fsm() const =0
Get a pointer to the FSM.