The MAUVE Toolchain
AbstractCore.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_ABSTRACT_CORE_HPP
19 #define MAUVE_RUNTIME_ABSTRACT_CORE_HPP
20 
21 #include "Configurable.hpp"
22 #include "mauve/runtime/HasProperty.hpp"
23 #include <string>
24 
25 namespace mauve {
26  namespace runtime {
27 
28  class ComponentLogger;
29  template <typename CORE>
30  class ExecState;
31  template <typename CORE>
32  class SynchroState;
33 
38  : virtual public Configurable
39  , public HasProperty
40  {
41  public:
42  template <typename S, typename C, typename F>
43  friend class Component;
44 
46  AbstractCore();
48  virtual ~AbstractCore() noexcept;
49 
54  std::string type_name() const;
59  virtual std::string shell_type_name() const = 0;
60 
62  virtual std::string container_name() const = 0;
63 
64  virtual std::string to_string() const { return "?"; }
65  };
66 
67  }
68 } /* namespace mauve */
69 
70 #endif
std::string type_name() const
Get type name.
Definition: HasProperty.hpp:53
Component class.
Definition: Architecture.hpp:34
The MAUVE namespace.
Definition: tracing.hpp:24
Definition: AbstractCore.hpp:32
Configurable trait.
Definition: Configurable.hpp:25
virtual std::string shell_type_name() const =0
Get the shell type name.
Definition: AbstractCore.hpp:30
AbstractCore()
Default constructor.
virtual ~AbstractCore() noexcept
Default descructor.
The Core defines the methods of the component.
Definition: AbstractCore.hpp:37
virtual std::string container_name() const =0
Get the core container name.