12#ifndef ARCANE_IMPL_ARCANEMAIN_H
13#define ARCANE_IMPL_ARCANEMAIN_H
17#include "arcane/utils/List.h"
18#include "arcane/utils/IFunctor.h"
19#include "arcane/IArcaneMain.h"
36class ServiceFactoryInfo;
44class ARCANE_IMPL_EXPORT ArcaneMainExecutionOverrideFunctor
46 friend class ArcaneMain;
47 friend class ArcaneMainExecInfo;
49 explicit ArcaneMainExecutionOverrideFunctor(
IFunctor* functor)
50 : m_functor(functor), m_application(
nullptr){}
51 IFunctor* functor() {
return m_functor; }
78class ARCANE_IMPL_EXPORT ArcaneMain
81 friend class ArcaneMainExecInfo;
82 friend class ArcaneLauncher;
83 friend class ArcaneMainAutoDetectRuntimeHelper;
94 ~ArcaneMain()
override;
299 static void redirectSignals();
300 static bool isMasterIO() {
return m_is_master_io; }
301 static void setUseTestLogger(
bool v);
305 void build()
override;
326 IDirectSubDomainExecuteFunctor* _directExecuteFunctor()
const {
return m_direct_sub_domain_execute_functor; }
330 IApplication* _application() {
return m_application; }
331 ApplicationBuildInfo& _applicationBuildInfo();
332 static int _internalRun(IDirectSubDomainExecuteFunctor* func);
337 IMainFactory* m_main_factory =
nullptr;
338 IApplication* m_application =
nullptr;
339 int m_error_code = 0;
340 IDirectSubDomainExecuteFunctor* m_direct_sub_domain_execute_functor =
nullptr;
341 static bool m_has_garbage_collector;
342 static bool m_is_master_io;
343 static bool m_is_use_test_logger;
344 static IMainFactory* m_default_main_factory;
345 static ArcaneMainExecutionOverrideFunctor* m_exec_override_functor;
349 static int _arcaneMain(
const ApplicationInfo&,IMainFactory*);
351 void _parseApplicationBuildInfoArgs();
356 static void _launchMissingInitException();
357 static void _checkHasInit();
358 static void _checkCreateDynamicLibraryLoader();
359 static int _runDotNet();
360 static void _checkAutoDetectMPI();
362 static void _setArcaneLibraryPath();
363 static int _initRuntimes();
364 static int _checkTestLoggerResult();
Informations pour l'initialisation des accélérateurs.
Informations pour construire une instance de IApplication.
Informations sur une application.
static int arcaneMain(const ApplicationInfo &app_info, IMainFactory *factory=nullptr)
Point d'entrée de l'exécutable dans Arcane.
static ApplicationBuildInfo & defaultApplicationBuildInfo()
Informations pour l'initialisation des accélerateurs.
static AcceleratorRuntimeInitialisationInfo & defaultAcceleratorRuntimeInitialisationInfo()
Informations pour l'initialisation des accélerateurs.
static std::atomic< Int32 > m_nb_arcane_init
Nombre de fois que arcaneInitialize() a été appelé
static DotNetRuntimeInitialisationInfo & defaultDotNetRuntimeInitialisationInfo()
Informations pour l'initialisation du runtime '.Net'.
static void arcaneInitialize()
Initialise Arcane.
static void addApplicationBuildInfoVisitor(IApplicationBuildInfoVisitor *visitor)
Ajoute un visiteur pour remplir ApplicationBuildInfo.
static int _checkAutoDetectAccelerator(bool &has_accelerator)
Détecte et charge la gestion du runtime des accélérateurs.
static void arcaneFinalize()
Termine l'utilisation Arcane.
static Real initializationTimeForAccelerator()
Retourne le temps (en seconde) pour l'initialisation des runtimes accélérateurs pour ce processus.
bool hasGarbageCollector() const override
Indique que certains objets sont gérés via un ramasse miette.
static int callFunctorWithCatchedException(IFunctor *functor, IArcaneMain *amain, bool *clean_abort, bool is_print=true)
Appelle le fonctor functor en récupérant les éventuelles exceptions.
void setErrorCode(int errcode) override
Positionne le code de retour.
void finalize() override
Effectue les dernières opérations avant destruction de l'instance.
static void setHasDotNETRuntime()
Indique que l'on tourne dans le runtime .NET.
IApplication * application() const override
Application.
static void setHasGarbageCollector()
Indique que certains objets sont gérés par un ramasse-miette.
static std::atomic< Int32 > m_is_init_done
1 si init terminé, 0 sinon
static int run()
Point d'entrée de l'exécutable dans Arcane.
static void addServiceFactoryInfo(IServiceFactoryInfo *factory)
Ajoute une fabrique de service.
void build() override
Construit les membres la classe. L'instance n'est pas utilisable tant que cette méthode n'a pas été a...
static ApplicationInfo & defaultApplicationInfo()
Infos par défaut de l'application.
static void setExecuteOverrideFunctor(ArcaneMainExecutionOverrideFunctor *functor)
static bool hasDotNetWrapper()
Indique si on exécute une assembly '.Net' depuis un main en C++.
int execute() override
Lance l'exécution. Cette méthode ne retourne que lorsqu'on quitte le programme.
void doAbort() override
Effectue un abort.
int errorCode() const override
Code d'erreur de l'exécution.
static void setDefaultMainFactory(IMainFactory *mf)
Positionne la fabrique par défaut.
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
IMainFactory * mainFactory() const override
Fabrique principale.
bool parseArgs(StringList args) override
Analyse les arguments.
static void addModuleFactoryInfo(IModuleFactoryInfo *factory)
Ajoute une fabrique de module.
Informations pour l'initialisation du runtime '.Net'.
Interface de l'application.
Interface de la classe de gestion du code.
Interface d'un chargeur de cas.
Interface d'un fonctor pour exécuter du code directement après la création d'un sous-domaine sans pas...
Manufacture des classes d'Arcane.
Informations sur la fabrique d'un module.
Informations sur la fabrique d'un service.
-*- 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.
List< String > StringList
Tableau de chaînes de caractères unicode.
double Real
Type représentant un réel.