14#include "arcane/utils/Iostream.h"
15#include "arcane/utils/Iterator.h"
16#include "arcane/utils/List.h"
17#include "arcane/utils/ScopedPtr.h"
18#include "arcane/utils/Deleter.h"
19#include "arcane/utils/PlatformUtils.h"
20#include "arcane/utils/ValueConvert.h"
21#include "arcane/utils/OStringStream.h"
22#include "arcane/utils/ITraceMng.h"
23#include "arcane/utils/TraceClassConfig.h"
24#include "arcane/utils/IMemoryInfo.h"
25#include "arcane/utils/IStackTraceService.h"
26#include "arcane/utils/ISymbolizerService.h"
27#include "arcane/utils/IProcessorAffinityService.h"
28#include "arcane/utils/IOnlineDebuggerService.h"
29#include "arcane/utils/StringBuilder.h"
30#include "arcane/utils/IProfilingService.h"
31#include "arcane/utils/IThreadImplementationService.h"
32#include "arcane/utils/IDynamicLibraryLoader.h"
33#include "arcane/utils/IPerformanceCounterService.h"
34#include "arcane/utils/ITraceMngPolicy.h"
35#include "arcane/utils/JSONReader.h"
36#include "arcane/utils/Profiling.h"
37#include "arcane/utils/internal/TaskFactoryInternal.h"
38#include "arcane/utils/internal/DependencyInjection.h"
40#include "arcane/core/ArcaneVersion.h"
41#include "arcane/core/ISubDomain.h"
42#include "arcane/core/IIOMng.h"
43#include "arcane/core/IXmlDocumentHolder.h"
44#include "arcane/core/IParallelSuperMng.h"
45#include "arcane/core/IMainFactory.h"
46#include "arcane/core/IArcaneMain.h"
47#include "arcane/core/IRessourceMng.h"
48#include "arcane/core/IServiceLoader.h"
49#include "arcane/core/IServiceMng.h"
50#include "arcane/core/ICodeService.h"
51#include "arcane/core/ISession.h"
52#include "arcane/core/IDataFactory.h"
53#include "arcane/core/IDataFactoryMng.h"
54#include "arcane/core/IXmlDocumentHolder.h"
55#include "arcane/core/XmlNode.h"
56#include "arcane/core/XmlNodeList.h"
57#include "arcane/core/ItemTypeMng.h"
59#include "arcane/core/IPhysicalUnitSystemService.h"
60#include "arcane/core/ServiceBuilder.h"
61#include "arcane/core/Configuration.h"
62#include "arcane/core/Directory.h"
63#include "arcane/core/IServiceAndModuleFactoryMng.h"
64#include "arcane/core/ApplicationBuildInfo.h"
66#include "arcane/core/IItemEnumeratorTracer.h"
67#include "arcane/impl/Application.h"
68#include "arcane/impl/ConfigurationReader.h"
69#include "arcane/impl/ArcaneMain.h"
74#include "arcane/core/Item.h"
75#include "arcane/core/IndexedItemConnectivityView.h"
76#include "arcane/core/UnstructuredMeshConnectivity.h"
78#include "arccore_version.h"
97createNullPhysicalUnitSystemService();
99arcaneCreateConfigurationMng(
ITraceMng* tm);
101arcaneCreateServiceAndModuleFactoryMng(
ITraceMng* tm);
106extern "C++" ARCANE_CORE_EXPORT
void
132, m_namespace_uri(arcaneNamespaceURI())
133, m_local_name(
"Application")
141, m_configuration_mng(nullptr)
145, m_trace_policy(nullptr)
148, m_service_and_module_factory_mng(nullptr)
165 m_task_implementation.reset();
183 delete m_service_and_module_factory_mng;
187 delete m_configuration_mng;
190 m_owned_sequential_parallel_super_mng.reset();
200 delete m_trace_policy;
212_stringListToArray(
const StringList& slist)
const
215 for(
const String& s : slist )
261 DependencyInjection::Injector injector;
262 injector.fillWithGlobalFactories();
267 auto t = injector.createInstance<InterfaceType>(s,
true);
280extern "C++" ARCANE_UTILS_EXPORT
void
281arcaneSetPauseOnError(
bool v);
298 Int32 output_level = build_info.outputLevel();
299 if (output_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
300 m_trace_policy->setVerbosityLevel(output_level);
301 m_trace_policy->setStandardOutputVerbosityLevel(output_level);
303 Int32 verbosity_level = build_info.verbosityLevel();
304 if (verbosity_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
305 m_trace_policy->setVerbosityLevel(verbosity_level);
308 bool has_output_file = build_info.isMasterHasOutputFile();
309 m_trace_policy->setIsMasterHasOutputFile(has_output_file);
314 Int32 minimal_verbosity_level = build_info.minimalVerbosityLevel();
315 if (minimal_verbosity_level==Trace::UNSPECIFIED_VERBOSITY_LEVEL)
316 minimal_verbosity_level = Trace::DEFAULT_VERBOSITY_LEVEL;
317 m_trace_policy->setDefaultVerboseLevel(
m_trace.get(),minimal_verbosity_level);
320 arcaneGlobalMemoryInfo()->setTraceMng(
traceMng());
324 m_trace->info(4) <<
"*** Initialization informations:";
330 if (dynamic_library_loader){
334 m_trace->info(4) <<
"*** Trying to load dynamic library: " << name;
337 m_trace->info(4) <<
"WARNING: Can not load library '" << name <<
"'";
341#ifdef ARCANE_OS_WIN32
342 if (dynamic_library_loader){
344 String dyn_lib_names[5] = {
"arcane_mpi",
"arcane_std",
"arcane_mesh",
345 "arcane_thread",
"arcane_mpithread",
348 dynamic_library_loader->
open(os_dir,dyn_lib_names[i]);
352 m_configuration_mng = arcaneCreateConfigurationMng(
traceMng());
355 m_service_and_module_factory_mng = arcaneCreateServiceAndModuleFactoryMng(
traceMng());
357 m_service_and_module_factory_mng->addGlobalFactory(*i);
359 m_service_and_module_factory_mng->addGlobalFactory(*i);
361 m_service_and_module_factory_mng->createAllServiceRegistererFactories();
367 if (!pause_on_error.
null()){
368 arcaneSetPauseOnError(
true);
372 bool has_dbghelp =
false;
382 m_stack_trace_service = sv;
396 if (!s.
get() && has_dbghelp){
400 m_symbolizer_service = s;
406 StringList names = build_info.threadImplementationServices();
410 m_thread_implementation_service = sv;
411 m_thread_implementation = sv->createImplementation();
413 m_thread_implementation->initialize();
417 m_trace->info() <<
"Can not find thread implementation service "
418 <<
"(names=" << _stringListToArray(names) <<
"). Threads are disabled.";
429 Integer nb_task_thread = build_info.nbTaskThread();
430 if (nb_task_thread>=0){
432 StringList names = build_info.taskImplementationServices();
436 TaskFactoryInternal::setImplementation(sv.get());
438 sv->initialize(nb_task_thread);
440 m_task_implementation = sv;
443 ARCANE_FATAL(
"Can not find task implementation service (names='{0}')."
444 " Please check if Arcane is configured with Intel TBB library",
445 _stringListToArray(names));
458 if (!profile_str.
null()){
462 m_profiling_service = sv;
466 ARCANE_FATAL(
"Can not find profiling service (name='{0}')",profile_str);
475 m_online_debugger = sv;
485 m_processor_affinity_service = sv;
491 String message_passing_service = build_info.messagePassingService();
492 if (message_passing_service.
null())
493 message_passing_service = build_info.internalDefaultMessagePassingService();
497 ARCANE_FATAL(
"Can not find message passing service '{0}'",message_passing_service);
503 if (sm->isParallel()){
505 seq_sm = m_owned_sequential_parallel_super_mng.get();
507 ARCANE_FATAL(
"Can not find service 'SequentialParallelSuperMng'");
552 m_trace_policy->setIsParallel(is_parallel);
553 m_trace_policy->setIsDebug(is_debug);
554 bool is_parallel_output = is_parallel && is_debug;
559 is_parallel_output =
true;
561 is_parallel_output =
false;
563 m_trace_policy->setIsParallelOutput(is_parallel_output);
571#ifdef ARCANE_CHECK_MEMORY
572 arcaneGlobalMemoryInfo()->setTraceMng(
m_trace);
583 m_trace->warning() <<
"Application is already initialised";
593 m_trace_policy->setDefaultClassConfigXmlBuffer(userConfigBuffer());
596 m_trace->logdate() <<
"Begin execution.";
599 m_trace->info() <<
"WARNING: Execution in DEBUG mode!";
602 m_trace->info() <<
"WARNING: Compilation in CHECK mode !";
608 if (!check_str.
null()){
609 bool is_check = check_str !=
"0";
610 m_trace->info() <<
"WARNING: Setting CHECK mode to " << is_check;
614 m_trace->info() <<
"WARNING: Execution in CHECK mode!";
618 m_trace->info() <<
"WARNING: Execution in TRACE mode !";
621 m_trace->info() <<
"Using 64bits version!";
624 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
625 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
637 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
638 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
641 m_trace->info() <<
"ArccoreVersion: " << ARCCORE_VERSION_STR_FULL;
642 m_trace->info() <<
"ArcaneVersion: " << ARCANE_VERSION_STR_FULL
649 m_trace->info() <<
"Stack trace service is available";
652 m_trace->info() <<
"Symbolizer service is available";
655#ifdef ARCANE_USE_LIBXML2
656 m_trace->info() <<
"Using 'libxml2' for XML parsing";
669 m_trace->info() <<
"Hyoda service is now hooked";
672 m_trace->info() <<
"Unknown online debugger service";
678 _readCodeConfigurationFile();
686 ByteConstSpan runtime_config =
m_exe_info.runtimeConfigFileContent();
687 if (!runtime_config.empty()){
688 m_trace->info() <<
"Reading configuration parameters from runtime config file";
690 jdoc.
parse(runtime_config);
699 if (!configuration_elem.
null()){
700 m_trace->info() <<
"Reading configuration parameters from code config file";
707 _initDataInitialisationPolicy();
713 m_trace->info() <<
"No thread management active";
718 std::ostringstream ostr;
720 m_trace->info() <<
"TaskManagement infos:" << ostr.str();
723 m_trace->info() <<
"No task management active";
729 String service_name =
"Udunits";
732 m_trace->info() <<
"UnitSystem service found name=" << service_name;
735 m_trace->info() <<
"No unit system service found";
736 sv =
makeRef(createNullPhysicalUnitSystemService());
738 m_physical_unit_system_service = sv;
743 String service_name =
"LinuxPerfPerformanceCounterService";
745 if (!env_service_name.
null())
746 service_name = env_service_name +
"PerformanceCounterService";
749 m_performance_counter_service = p;
751 m_trace->info() <<
"PerformanceCounterService found name=" << service_name;
754 m_trace->info() <<
"No performance counter service found";
760 bool force_tracer =
false;
765 auto p = m_performance_counter_service;
767 m_trace->info() <<
"Enumerator tracing is enabled";
769 arcaneSetSingletonItemEnumeratorTracer(tracer);
774 m_trace->info() <<
"WARNING: enumerator tracing is not available because no performance counter service is available.";
777 m_trace->info() <<
"WARNING: enumerator tracing is not available when using multi-tasking.";
791 <<
" ItemEnumeratorVersion=" << ItemEnumerator::version();
797 if (init_time_accelerator!=0.0)
798 m_trace->info() <<
"Time (in ms) to initialize Accelerators = " << init_time_accelerator;
806_readCodeConfigurationFile()
820 bool use_config_file =
true;
821 if (config_file_name.
null()){
822 use_config_file =
false;
824 else if (config_file_name.
empty()){
840 m_trace->info() <<
"Using configuration file in current directory.";
843 config_file_name = buf.toString();
845 m_trace->info() <<
"Using configuration file: '" << config_file_name <<
"'";
847 if (use_config_file){
850 ARCANE_FATAL(
"Can not read configuration file '{0}'",config_file_name);
853 ARCANE_FATAL(
"Can not parse configuration file '{0}'",config_file_name);
867 String buf = user_config_dir.
file(
"config.xml");
873 m_trace->log() <<
"No user configuration file '" << buf <<
"'";
880 m_trace->log() <<
"Can not parse user configuration file '" << buf <<
"'";
917 bool has_arc_extension =
false;
918 for(
Integer i=0, n=services.size(); i<n; ++i ){
920 if (_hasExtension(code_service,
"arc")){
921 has_arc_extension =
true;
925 if (!has_arc_extension){
926 services.add(createArcaneCodeService(
this));
932 std::size_t extension_pos = fview.find_last_of(
'.');
933 if (extension_pos==std::string_view::npos)
935 fview.remove_prefix(extension_pos+1);
939 for(
const auto& code_service : services ){
943 found_service = code_service;
947 if (found_service.
get())
951 return found_service;
978 return m_service_and_module_factory_mng->serviceFactories2();
987 return m_service_and_module_factory_mng->moduleFactoryInfos();
994_initDataInitialisationPolicy()
998 bool is_changed =
false;
999 if (data_init_policy==
"DEFAULT"){
1003 else if (data_init_policy==
"NAN"){
1007 else if (data_init_policy==
"NONE"){
1011 else if (data_init_policy==
"LEGACY"){
1015 else if (data_init_policy==
"NAN_AND_DEFAULT"){
1022 m_trace->info() <<
"Change data initialisation policy: " << data_init_policy
1023 <<
" (" << (int)init_policy <<
")";
1025 m_trace->info() <<
"Data initialisation policy is : " << (int)init_policy;
1034 return m_arcane_main->applicationBuildInfo();
1043 return m_arcane_main->dotnetRuntimeInitialisationInfo();
1052 return m_arcane_main->acceleratorRuntimeInitialisationInfo();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classes, Types et macros pour gérer la concurrence.
Informations pour l'initialisation des accélérateurs.
Informations pour construire une instance de IApplication.
String configFileName() const
Nom du fichier de configuration du code.
const String & dataDir() const
Retourne le chemin où se trouve les fichiers de données.
const String & codeName() const
Retourne le nom du code de calcul lié l'application.
bool isDebug() const
Retourne true si on s'exécute en mode debug.
String m_user_config_path
Répertoire de configuration utilisateur.
void _openUserConfig()
Analyse le fichier de configuration de l'utilisateur.
ReferenceCounter< ITraceMng > m_trace
Gestionnaire de traces.
~Application() override
Détruit le gestionnaire.
ModuleFactoryInfoCollection m_main_module_factory_infos
Tableau des fabriques de module.
IDataFactory * dataFactory() override
Fabrique de donnée.
ScopedPtrT< IXmlDocumentHolder > m_config_document
Arbre DOM de la configuration.
const ApplicationBuildInfo & applicationBuildInfo() const override
Informations sur les paramètres de construction de l'instance.
ApplicationInfo m_exe_info
Informations sur l'exécutable.
String m_major_and_minor_version_str
Version M.m.
ITraceMngPolicy * getTraceMngPolicy() override
Politique de configuration d'un gestionnaire de trace.
String m_version_str
Infos sur la configuration.
String m_used_task_service_name
Nom du service utilisé pour gérer les tâches.
ITraceMng * createAndInitializeTraceMng(ITraceMng *parent_trace, const String &file_suffix) override
Créé et initialise une instance de ITraceMng.
IMainFactory * m_main_factory
Manufacture principale.
const DotNetRuntimeInitialisationInfo & dotnetRuntimeInitialisationInfo() const override
Informations d'initialisation du runtime '.Net'.
IMainFactory * mainFactory() const override
Manufacture principale.
SessionList m_sessions
Liste des sessions.
Ref< InterfaceType > _tryCreateServiceUsingInjector(const StringList &names, String *found_name)
Ref< InterfaceType > _tryCreateService(const StringList &names, String *found_name)
const AcceleratorRuntimeInitialisationInfo & acceleratorRuntimeInitialisationInfo() const override
Informations d'initialisation du runtime pour les accélérateurs.
String m_user_name
Nom de l'utilisateur.
IRessourceMng * m_ressource_mng
Gestionnaire de ressources.
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
IDataFactoryMng * dataFactoryMng() const override
Fabrique de donnée.
String m_used_thread_service_name
Nom du service utilisé pour gérer les threads.
XmlNode m_user_config_root_element
Elément racine de la configuration utilisateur.
String m_main_version_str
Version sous la forme Majeur.mineur.beta.
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
ModuleFactoryInfoCollection moduleFactoryInfos() override
Liste des informations sur les fabriques des modules.
UniqueArray< Byte > m_user_config_bytes
Fichier contenant la configuration utilisateur.
bool m_is_init
true si déjà initialisé
void build() override
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
ITraceMng * traceMng() const override
Gestionnaire de traces.
XmlNode m_config_root_element
Elément racine de la configuration.
String m_application_name
Nom de l'application.
String m_targetinfo_str
Infos sur la configuration.
ScopedPtrT< IXmlDocumentHolder > m_user_config_document
Arbre DOM de la configuration utilisateur.
ServiceFactoryInfoCollection m_main_service_factory_infos
Tableau des fabriques de service.
ServiceFactory2Collection serviceFactories2() override
Liste des fabriques de service.
bool hasGarbageCollector() const override
Indique que certains objets sont gérés via un ramasse miette.
Ref< ICodeService > getCodeService(const String &file_name) override
Retourne le chargeur de cas correspondant au fichier donné par file_name.
Ref< IParallelSuperMng > m_parallel_super_mng
Gestionnaire du parallélisme.
IServiceMng * m_service_mng
Gestionnaire des services.
void removeSession(ISession *s) override
Supprime la session session.
IIOMng * m_io_mng
Gestionnaire des entrées/sorties.
UniqueArray< Byte > m_config_bytes
Fichier contenant la configuration.
void addSession(ISession *s) override
Ajoute la session session.
Ref< IDataFactoryMng > m_data_factory_mng
Fabrique des données.
IParallelSuperMng * m_sequential_parallel_super_mng
Gestionnaire du parallélisme séquentiel.
Application(IArcaneMain *)
Construit un superviseur avec les informations d'exécution ex.
IParallelSuperMng * parallelSuperMng() override
Gestionnaire superviseur du parallélisme.
static Real initializationTimeForAccelerator()
Retourne le temps (en seconde) pour l'initialisation des runtimes accélérateurs pour ce processus.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
EnumeratorT< String > Enumerator
Lecteurs de fichiers de configuration.
void addValuesFromXmlNode(const XmlNode &element, Integer priority)
Ajoute des valeurs à la configuration.
void addValuesFromJSON(const JSONValue &jv, Integer priority)
Ajoute des valeurs à la configuration.
Classe utilitaire pour la destruction des objets alloués par new.
Classe gérant un répertoire.
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
virtual String path() const
Retourne le chemin du répertoire.
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.
virtual StringCollection validExtensions() const =0
Retourne la liste des extensions de fichier traitées par l'instance. L'extension ne comprend pas le '...
Gestionnaire de configuration.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une fabrique d'une donnée.
Interface d'une chargeur dynamique de bibliothèque.
virtual IDynamicLibrary * open(const String &directory, const String &name)=0
Charge une bibliothèque dynamique.
Interface d'une bibliothèque dynamique.
virtual ITraceMng * createTraceMng()=0
Créé un gestionnaire de trace.
Classe abstraite du superviseur de parallélisme.
virtual bool isParallel() const =0
Retourne true si l'exécution est parallèle.
virtual void initialize()=0
Initialise l'instance.
Interface d'un service gérant un système d'unité.
Interface d'un service de de trace des appels de fonctions.
static IRessourceMng * createDefault(IApplication *)
Création d'un gestionnaire d'historique par défaut.
Interface d'un gestionnaire de fabriques de services et modules.
Interface d'une session d'exécution d'un cas.
Interface du gestionnaire de configuration d'un gestionnnaire de trace.
virtual void initializeTraceMng(ITraceMng *trace, Int32 rank)=0
Initialise trace.
Interface du gestionnaire de traces.
Gestionnaire d'un document DOM.
virtual XmlNode documentNode()=0
Noeud document. Ce noeud est nul si le document n'existe pas.
Classe de base d'une vue sur une connectivité non structurée.
Vues sur les conteneurs contenant les connectivités. Cette classe permet de rendre opaque en dehors d...
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Structure interne partagée d'une entité de maillage.
void build(IParallelSuperMng *parallel_mng, ITraceMng *trace)
Constructeur effectif.
static ItemTypeMng * _singleton()
Instance singleton du type.
Itérateur pour la classe ItemVectorView.
Vue sur un vecteur d'entités.
Classe de base d'un élément de maillage.
Gestion d'un document JSON.
void parse(Span< const Byte > bytes)
Lit le fichier au format UTF-8.
JSONValue root() const
Elément racine.
Représente une valeur JSON.
JSONValue child(StringView name) const
Valeur fille de nom name. Retourne une valeur nulle si non trouvé.
static void setProfilingLevel(Int32 level)
Positionne le niveau de profilage.
static Int32 profilingLevel()
Niveau de profilage.
Référence à une instance.
InstanceType * get() const
Instance associée ou nullptr si aucune.
Classe utilitaire pour instantier un service d'une interface donnée.
UniqueArray< Ref< InterfaceType > > createAllInstances()
Créé une instance de chaque service qui implémente InterfaceType.
Ref< InterfaceType > createReference(const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
bool empty() const
Vrai si la chaîne est vide (nulle ou "")
std::string_view toStdStringView() const
Retourne une vue de la STL sur la chaîne actuelle.
static void setVerboseLevel(Integer v)
Positionne le niveau de verbosité (0 pour pas d'affichage qui est le défaut)
static Int32 nbAllowedThread()
Nombre de threads utilisés au maximum pour gérer les tâches.
static void terminate()
Indique qu'on n'utilisera plus les threads. Cette méthode ne doit pas être appelée lorsque des tâches...
static bool isActive()
Indique si les tâches sont actives. Les tâches sont actives si une implémentation est disponible et s...
static void printInfos(std::ostream &o)
Affiche les informations sur l'implémentation.
Vecteur 1D de données avec sémantique par valeur (style STL).
Vue sur les connectivités standards d'un maillage non structuré.
Informations sur une version.
int versionMajor() const
Retourne le numéro de version majeur.
int versionMinor() const
Retourne le numéro de version mineur.
int versionPatch() const
Retourne le numéro de version patch.
XmlNode documentElement() const
Retourne le noeud élément du document.
bool null() const
Vrai si le noeud est nul.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
void setGlobalDataInitialisationPolicy(eDataInitialisationPolicy init_policy)
Positionne la politique d'initialisation des variables.
@ SB_AllowNull
Autorise l'absence du service.
bool arcaneIsCheck()
Vrai si on est en mode vérification.
eDataInitialisationPolicy
Type de politique d'initialisation possible pour une donnée.
@ DIP_InitInitialWithNanResizeWithDefault
Initialisation avec des NaN pour à la création et le constructeur par défaut ensuite.
@ DIP_Legacy
Initialisation en mode historique.
@ DIP_None
Pas d'initialisation forcée.
@ DIP_InitWithNan
Initialisation avec des NaN (Not a Number)
@ DIP_InitWithDefault
Initialisation avec le constructeur par défaut.
bool arcaneHasThread()
Vrai si arcane est compilé avec le support des threads ET qu'ils sont actifs.
std::int64_t Int64
Type entier signé sur 64 bits.
void arcaneSetHasThread(bool v)
Active ou désactive le support des threads.
eDataInitialisationPolicy getGlobalDataInitialisationPolicy()
Récupère la politique d'initialisation des variables.
Int32 Integer
Type représentant un entier.
Collection< String > StringCollection
Collection de chaînes de caractères.
Collection< Internal::IServiceFactory2 * > ServiceFactory2Collection
Collection de 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.
void arcaneSetCheck(bool v)
Active ou désactive le mode vérification.
eItemKind
Genre d'entité de maillage.
double Real
Type représentant un réel.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.
std::int32_t Int32
Type entier signé sur 32 bits.