Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IModule.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IModule.h (C) 2000-2021 */
9/* */
10/* Interface de la classe Module. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMODULE_H
13#define ARCANE_IMODULE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IVariableRef;
29class IParallelMng;
30class CaseOptionsMain;
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34/*!
35 * \brief Interface d'un module.
36 * \ingroup Module
37 */
38class ARCANE_CORE_EXPORT IModule
39{
40 public:
41
42 //! Destructeur
43 virtual ~IModule() {}
44
45 public:
46
47 //! Nom du module
48 virtual String name() const =0;
49
50 //! Version du module
51 virtual VersionInfo versionInfo() const =0;
52
53 public:
54
55 //! Session du module
56 virtual ISession* session() const =0;
57
58 //! Gestionnaire de sous-domaine.
59 virtual ISubDomain* subDomain() const =0;
60
61 //! Maillage associé. Peut être nul. Utiliser defaultMeshHandle() à la place
62 virtual IMesh* defaultMesh() const =0;
63
64 //! Maillage associé
65 virtual MeshHandle defaultMeshHandle() const =0;
66
67 //! Gestionnaire du parallélisme par échange de message
68 virtual IParallelMng* parallelMng() const =0;
69
70 //! Gestionnaire des accélérateurs
71 virtual IAcceleratorMng* acceleratorMng() const =0;
72
73 //! Gestionnaire de traces.
74 virtual ITraceMng* traceMng() const =0;
75
76 public:
77
78 /*!
79 * \brief Indique si un module est utilisé ou non (interne).
80 *
81 * Un module est utilisé si et seulement si au moins un de ses
82 * points d'entrée est utilisé dans la boucle en temps.
83 */
84 virtual void setUsed(bool v) =0;
85
86 //! \a true si le module est utilisé.
87 virtual bool used() const =0;
88
89 /*!
90 * \brief Active ou désactive temporairement le module (interne).
91 *
92 * Lorsqu'un module est désactivé, ses points d'entrée de la boucle
93 * de calcul ne sont plus appelés (mais les autres comme ceux
94 * d'initialisation ou de terminaison le sont toujours).
95 */
96 virtual void setDisabled(bool v) =0;
97
98 //! \a true si le module est désactivé
99 virtual bool disabled() const =0;
100
101 /*! \internal
102 * \brief Indique si le module est géré par un ramasse miette auquel
103 * cas il ne faut pas appeler l'operateur delete dessus.
104 */
105 virtual bool isGarbageCollected() const =0;
106};
107
108/*---------------------------------------------------------------------------*/
109/*---------------------------------------------------------------------------*/
110
111} // End namespace Arcane
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116#endif
117
Interface du gestionnaire des accélérateurs.
Interface d'un module.
Definition IModule.h:39
virtual ~IModule()
Destructeur.
Definition IModule.h:43
virtual MeshHandle defaultMeshHandle() const =0
Maillage associé
virtual void setUsed(bool v)=0
Indique si un module est utilisé ou non (interne).
virtual VersionInfo versionInfo() const =0
Version du module.
virtual IMesh * defaultMesh() const =0
Maillage associé. Peut être nul. Utiliser defaultMeshHandle() à la place.
virtual String name() const =0
Nom du module.
virtual ISubDomain * subDomain() const =0
Gestionnaire de sous-domaine.
virtual IAcceleratorMng * acceleratorMng() const =0
Gestionnaire des accélérateurs.
virtual ISession * session() const =0
Session du module.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
virtual bool disabled() const =0
true si le module est désactivé
virtual void setDisabled(bool v)=0
Active ou désactive temporairement le module (interne).
virtual IParallelMng * parallelMng() const =0
Gestionnaire du parallélisme par échange de message.
virtual bool used() const =0
true si le module est utilisé.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une session d'exécution d'un cas.
Definition ISession.h:44
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Handle sur un maillage.
Definition MeshHandle.h:47
Informations sur une version.
Definition VersionInfo.h:46
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-