Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IArcaneMain.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/* IArcaneMain.h (C) 2000-2021 */
9/* */
10/* Interface de la classe ArcaneMain. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IARCANEMAIN_H
13#define ARCANE_IARCANEMAIN_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class ApplicationInfo;
29class ApplicationBuildInfo;
30class IMainFactory;
31class DotNetRuntimeInitialisationInfo;
32class IDirectSubDomainExecuteFunctor;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36/*!
37 * \internal
38 * \brief Interface de la classe de gestion du code.
39 *
40 Cette classe virtuelle sert à la création et l'initialisation des instances
41 des gestionnaires du code. Elle pilote aussi le déroulement d'un cas.
42
43 Une instance de cette classe est créée par l'intermédiaire de la méthode
44 IMainFactory::createArcaneMain(), appelée par
45 IMainFactory::arcaneMain().
46
47 * L'implémentation doit au moins prendre en compte les aspects suivants.
48 * - Analyser la ligne de commande.
49 * - Créer une instance d'un superviseur (IMainFactory::createSuperMng()),
50 * la construire (ISuperMng::build()) et l'initialiser (ISuperMng::initialize()).
51 * - Créer une instance du chargeur de module (IMainFactory::createModuleLoader())
52 */
53class ARCANE_CORE_EXPORT IArcaneMain
54{
55 public:
56
57 //! Libère les ressources.
58 virtual ~IArcaneMain() {}
59
60 public:
61
62 /*!
63 * Récupère l'instance globale.
64 *
65 * \warning L'instance globale n'est disponible que pendant l'appel à
66 * ArcaneMain::arcaneMain().
67 */
68 static IArcaneMain* arcaneMain();
69 /*!
70 * \internal.
71 */
72 static void setArcaneMain(IArcaneMain* arcane_main);
73
74 private:
75
76 static IArcaneMain* global_arcane_main;
77
78 public:
79
80 /*!
81 * \brief Construit les membres la classe.
82 * L'instance n'est pas utilisable tant que cette méthode n'a pas été
83 * appelée. Cette méthode doit être appelée avant initialize().
84 * \warning Cette méthode ne doit être appelée qu'une seule fois.
85 */
86 virtual void build() =0;
87
88 /*!
89 * \brief Initialise l'instance.
90 * L'instance n'est pas utilisable tant que cette méthode n'a pas été
91 * appelée.
92 * \warning Cette méthode ne doit être appelée qu'une seule fois.
93 */
94 virtual void initialize() =0;
95
96 public:
97
98 /*! \brief Analyse les arguments.
99 *
100 * Les arguments reconnus doivent être supprimés de la liste.
101 *
102 * \retval true si l'exécution doit s'arrêter,
103 * \retval false si elle continue normalement
104 */
105 virtual bool parseArgs(StringList args) =0;
106
107 /*! \brief Lance l'exécution.
108 * Cette méthode ne retourne que lorsqu'on quitte le programme.
109 * \return le code de retour d'Arcane, 0 si tout est ok.
110 */
111 virtual int execute() =0;
112
113 //! Effectue les dernières opérations avant destruction de l'instance
114 virtual void finalize() =0;
115
116 //! Code d'erreur de l'exécution
117 virtual int errorCode() const =0;
118
119 //! Positionne le code de retour
120 virtual void setErrorCode(int errcode) =0;
121
122 //! Effectue un abort.
123 virtual void doAbort() =0;
124
125 public:
126
127 //! Informations sur l'éxécutable
128 virtual const ApplicationInfo& applicationInfo() const =0;
129
130 //! Informations pour construire l'instance IApplication.
132
133 //! Informations d'initialisation du runtime '.Net'.
135
136 //! Informations d'initialisation du runtime pour les accélérateurs
138
139 //! Fabrique principale
140 virtual IMainFactory* mainFactory() const =0;
141
142 //! Application
143 virtual IApplication* application() const =0;
144
145 public:
146
147 /*!
148 * \brief Indique que certains objets sont gérés via un ramasse miette.
149 */
150 virtual bool hasGarbageCollector() const =0;
151
152 public:
153
154 //! Liste des fabriques de service enregistrées
156
157 //! Liste des fabriques de module enregistrées
159
160 public:
161
162 virtual void setDirectExecuteFunctor(IDirectSubDomainExecuteFunctor* f) =0;
163};
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
168} // End namespace Arcane
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
173#endif
Informations pour construire une instance de IApplication.
Informations sur une application.
Informations pour l'initialisation du runtime '.Net'.
Interface de l'application.
virtual IApplication * application() const =0
Application.
virtual void finalize()=0
Effectue les dernières opérations avant destruction de l'instance.
virtual void initialize()=0
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
virtual int execute()=0
Lance l'exécution. Cette méthode ne retourne que lorsqu'on quitte le programme.
virtual ~IArcaneMain()
Libère les ressources.
Definition IArcaneMain.h:58
virtual ServiceFactoryInfoCollection registeredServiceFactoryInfos()=0
Liste des fabriques de service enregistrées.
virtual ModuleFactoryInfoCollection registeredModuleFactoryInfos()=0
Liste des fabriques de module enregistrées.
virtual bool hasGarbageCollector() const =0
Indique que certains objets sont gérés via un ramasse miette.
virtual const DotNetRuntimeInitialisationInfo & dotnetRuntimeInitialisationInfo() const =0
Informations d'initialisation du runtime '.Net'.
virtual const AcceleratorRuntimeInitialisationInfo & acceleratorRuntimeInitialisationInfo() const =0
Informations d'initialisation du runtime pour les accélérateurs.
virtual const ApplicationInfo & applicationInfo() const =0
Informations sur l'éxécutable.
virtual void setErrorCode(int errcode)=0
Positionne le code de retour.
virtual IMainFactory * mainFactory() const =0
Fabrique principale.
virtual void doAbort()=0
Effectue un abort.
virtual bool parseArgs(StringList args)=0
Analyse les arguments.
virtual int errorCode() const =0
Code d'erreur de l'exécution.
virtual void build()=0
Construit les membres la classe. L'instance n'est pas utilisable tant que cette méthode n'a pas été a...
virtual const ApplicationBuildInfo & applicationBuildInfo() const =0
Informations pour construire l'instance IApplication.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< IServiceFactoryInfo * > ServiceFactoryInfoCollection
Collection d'informations sur les fabriques de service.
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection d'informations sur les fabriques de module.