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.