16#include "arcane/utils/Iostream.h"
17#include "arcane/utils/Iterator.h"
18#include "arcane/utils/List.h"
19#include "arcane/utils/ScopedPtr.h"
20#include "arcane/utils/Deleter.h"
21#include "arcane/utils/PlatformUtils.h"
22#include "arcane/utils/ValueConvert.h"
23#include "arcane/utils/OStringStream.h"
24#include "arcane/utils/ITraceMng.h"
25#include "arcane/utils/TraceClassConfig.h"
26#include "arcane/utils/IMemoryInfo.h"
27#include "arcane/utils/IStackTraceService.h"
28#include "arcane/utils/ISymbolizerService.h"
29#include "arcane/utils/IProcessorAffinityService.h"
30#include "arcane/utils/IOnlineDebuggerService.h"
31#include "arcane/utils/StringBuilder.h"
32#include "arcane/utils/IProfilingService.h"
33#include "arcane/utils/IThreadImplementationService.h"
34#include "arccore/base/internal/IDynamicLibraryLoader.h"
35#include "arcane/utils/IPerformanceCounterService.h"
36#include "arcane/utils/ITraceMngPolicy.h"
37#include "arcane/utils/JSONReader.h"
38#include "arcane/utils/Profiling.h"
40#include "arccore/base/internal/DependencyInjection.h"
42#include "arccore/concurrency/internal/ConcurrencyApplication.h"
44#include "arcane/core/ArcaneVersion.h"
45#include "arcane/core/ISubDomain.h"
46#include "arcane/core/IIOMng.h"
47#include "arcane/core/IXmlDocumentHolder.h"
48#include "arcane/core/IParallelSuperMng.h"
49#include "arcane/core/IMainFactory.h"
50#include "arcane/core/IArcaneMain.h"
51#include "arcane/core/IRessourceMng.h"
52#include "arcane/core/IServiceLoader.h"
53#include "arcane/core/IServiceMng.h"
54#include "arcane/core/ICodeService.h"
55#include "arcane/core/ISession.h"
56#include "arcane/core/IDataFactory.h"
57#include "arcane/core/IDataFactoryMng.h"
58#include "arcane/core/IXmlDocumentHolder.h"
59#include "arcane/core/XmlNode.h"
60#include "arcane/core/XmlNodeList.h"
61#include "arcane/core/ItemTypeMng.h"
63#include "arcane/core/IPhysicalUnitSystemService.h"
64#include "arcane/core/ServiceBuilder.h"
65#include "arcane/core/Configuration.h"
66#include "arcane/core/Directory.h"
67#include "arcane/core/IServiceAndModuleFactoryMng.h"
68#include "arcane/core/ApplicationBuildInfo.h"
70#include "arcane/core/IItemEnumeratorTracer.h"
71#include "arcane/impl/Application.h"
72#include "arcane/impl/ConfigurationReader.h"
73#include "arcane/impl/ArcaneMain.h"
78#include "arcane/core/Item.h"
79#include "arcane/core/IndexedItemConnectivityView.h"
80#include "arcane/core/UnstructuredMeshConnectivity.h"
82#include "arccore_version.h"
97extern "C++" ARCANE_UTILS_EXPORT
void
98arcaneSetPauseOnError(
bool v);
104createNullPhysicalUnitSystemService();
106arcaneCreateConfigurationMng(
ITraceMng* tm);
108arcaneCreateServiceAndModuleFactoryMng(
ITraceMng* tm);
113extern "C++" ARCANE_CORE_EXPORT
void
136 for (
const String& s : slist)
141 _stringListToCoreArray(
const StringList& slist)
144 for (
const String& s : slist)
154class Application::CoreApplication
158 void setTraceMng(ReferenceCounter<ITraceMng> tm) { m_trace = tm; }
159 void setCoreServices(
const ApplicationCoreBuildInfo& build_info);
161 template <
typename InterfaceType> Ref<InterfaceType>
162 tryCreateServiceUsingInjector(
const StringList& names, String* found_name,
bool has_trace);
166 ReferenceCounter<ITraceMng> m_trace;
167 Ref<IStackTraceService> m_stack_trace_service;
168 Ref<ISymbolizerService> m_symbolizer_service;
169 Ref<IThreadImplementationService> m_thread_implementation_service;
170 Ref<IThreadImplementation> m_thread_implementation;
171 Ref<ITaskImplementation> m_task_implementation;
173 String m_used_thread_service_name;
175 String m_used_task_service_name;
188, m_namespace_uri(arcaneNamespaceURI())
189, m_local_name(
"Application")
196 m_core_application = std::make_unique<ConcurrencyApplication>();
212 m_core_application->m_task_implementation.reset();
230 delete m_service_and_module_factory_mng;
234 delete m_configuration_mng;
237 m_owned_sequential_parallel_super_mng.reset();
247 delete m_trace_policy;
300 DependencyInjection::Injector injector;
301 injector.fillWithGlobalFactories();
308 auto t = injector.createInstance<InterfaceType>(s,
true);
338 Int32 output_level = build_info.outputLevel();
339 if (output_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
340 m_trace_policy->setVerbosityLevel(output_level);
341 m_trace_policy->setStandardOutputVerbosityLevel(output_level);
343 Int32 verbosity_level = build_info.verbosityLevel();
344 if (verbosity_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
345 m_trace_policy->setVerbosityLevel(verbosity_level);
348 bool has_output_file = build_info.isMasterHasOutputFile();
349 m_trace_policy->setIsMasterHasOutputFile(has_output_file);
354 Int32 minimal_verbosity_level = build_info.minimalVerbosityLevel();
355 if (minimal_verbosity_level==Trace::UNSPECIFIED_VERBOSITY_LEVEL)
356 minimal_verbosity_level = Trace::DEFAULT_VERBOSITY_LEVEL;
357 m_trace_policy->setDefaultVerboseLevel(
m_trace.get(),minimal_verbosity_level);
360 arcaneGlobalMemoryInfo()->setTraceMng(
traceMng());
364 m_trace->info(4) <<
"*** Initialization informations:";
369 if (dynamic_library_loader){
371#ifdef ARCANE_OS_WIN32
388 m_trace->info(4) <<
"Adding '" << os_dir <<
"' to search library path";
390 SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
391 AddDllDirectory(wide_os_dir.c_str());
396 m_trace->info(4) <<
"*** Trying to load dynamic library: " << name;
399 m_trace->info(4) <<
"WARNING: Can not load library '" << name <<
"'";
403#ifdef ARCANE_OS_WIN32
404 if (dynamic_library_loader){
407 String dyn_lib_names[5] = {
"arcane_mpi",
"arcane_std",
"arcane_mesh",
408 "arcane_thread",
"arcane_mpithread",
411 dynamic_library_loader->
open(os_dir,dyn_lib_names[i]);
415 m_configuration_mng = arcaneCreateConfigurationMng(
traceMng());
418 m_service_and_module_factory_mng = arcaneCreateServiceAndModuleFactoryMng(
traceMng());
420 m_service_and_module_factory_mng->addGlobalFactory(*i);
422 m_service_and_module_factory_mng->addGlobalFactory(*i);
424 m_service_and_module_factory_mng->createAllServiceRegistererFactories();
430 if (!pause_on_error.
null())
431 arcaneSetPauseOnError(
true);
434 m_core_application->setTraceMng(
m_trace);
436 auto task_names = _stringListToCoreArray(b.taskImplementationServices());
437 auto thread_names = _stringListToCoreArray(b.threadImplementationServices());
438 Int32 nb_task_thread = b.nbTaskThread();
440 m_core_application->setCoreServices(c);
449 if (!profile_str.
null()){
453 m_profiling_service = sv;
457 ARCANE_FATAL(
"Can not find profiling service (name='{0}')",profile_str);
466 m_online_debugger = sv;
476 auto sv = _tryCreateServiceUsingInjector<IProcessorAffinityService>(names, &found_name,
m_trace.get());
478 m_processor_affinity_service = sv;
482 m_trace->info(4) <<
"Can not find implementation for IProcessorAffinityService "
483 <<
"(names=" << _stringListToArray(names) <<
").";
488 String message_passing_service = build_info.messagePassingService();
489 if (message_passing_service.
null())
490 message_passing_service = build_info.internalDefaultMessagePassingService();
494 ARCANE_FATAL(
"Can not find message passing service '{0}'",message_passing_service);
500 if (sm->isParallel()){
502 seq_sm = m_owned_sequential_parallel_super_mng.get();
504 ARCANE_FATAL(
"Can not find service 'SequentialParallelSuperMng'");
549 m_trace_policy->setIsParallel(is_parallel);
550 m_trace_policy->setIsDebug(is_debug);
551 bool is_parallel_output = is_parallel && is_debug;
556 is_parallel_output =
true;
558 is_parallel_output =
false;
560 m_trace_policy->setIsParallelOutput(is_parallel_output);
568#ifdef ARCANE_CHECK_MEMORY
569 arcaneGlobalMemoryInfo()->setTraceMng(
m_trace);
580 m_trace->warning() <<
"Application is already initialised";
590 m_trace_policy->setDefaultClassConfigXmlBuffer(userConfigBuffer());
593 m_trace->logdate() <<
"Begin execution.";
596 m_trace->info() <<
"WARNING: Execution in DEBUG mode!";
599 m_trace->info() <<
"WARNING: Compilation in CHECK mode !";
605 if (!check_str.
null()){
606 bool is_check = check_str !=
"0";
607 m_trace->info() <<
"WARNING: Setting CHECK mode to " << is_check;
611 m_trace->info() <<
"WARNING: Execution in CHECK mode!";
615 m_trace->info() <<
"WARNING: Execution in TRACE mode !";
618 m_trace->info() <<
"Using 64bits version!";
621 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
622 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
634 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
635 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
638 m_trace->info() <<
"ArccoreVersion: " << ARCCORE_VERSION_STR_FULL;
639 m_trace->info() <<
"ArcaneVersion: " << ARCANE_VERSION_STR_FULL
646 m_trace->info() <<
"Stack trace service is available";
649 m_trace->info() <<
"Symbolizer service is available";
652#ifdef ARCANE_USE_LIBXML2
653 m_trace->info() <<
"Using 'libxml2' for XML parsing";
666 m_trace->info() <<
"Hyoda service is now hooked";
669 m_trace->info() <<
"Unknown online debugger service";
675 _readCodeConfigurationFile();
683 ByteConstSpan runtime_config =
m_exe_info.runtimeConfigFileContent();
684 if (!runtime_config.empty()){
685 m_trace->info() <<
"Reading configuration parameters from runtime config file";
687 jdoc.
parse(runtime_config);
696 if (!configuration_elem.
null()){
697 m_trace->info() <<
"Reading configuration parameters from code config file";
704 _initDataInitialisationPolicy();
707 if (!m_core_application->m_used_thread_service_name.null())
708 m_trace->info() <<
"Service used for thread management : '" << m_core_application->m_used_thread_service_name <<
"'";
710 m_trace->info() <<
"No thread management active";
712 if (!m_core_application->m_used_task_service_name.null()) {
713 m_trace->info() <<
"Service used for task management : '" << m_core_application->m_used_task_service_name
715 std::ostringstream ostr;
717 m_trace->info() <<
"TaskManagement infos:" << ostr.str();
720 m_trace->info() <<
"No task management active";
726 String service_name =
"Udunits";
729 m_trace->info() <<
"UnitSystem service found name=" << service_name;
732 m_trace->info() <<
"No unit system service found";
733 sv =
makeRef(createNullPhysicalUnitSystemService());
735 m_physical_unit_system_service = sv;
740 String service_name =
"LinuxPerfPerformanceCounterService";
742 if (!env_service_name.
null())
743 service_name = env_service_name +
"PerformanceCounterService";
746 m_performance_counter_service = p;
748 m_trace->info() <<
"PerformanceCounterService found name=" << service_name;
751 m_trace->info() <<
"No performance counter service found";
757 bool force_tracer =
false;
762 auto p = m_performance_counter_service;
764 m_trace->info() <<
"Enumerator tracing is enabled";
766 arcaneSetSingletonItemEnumeratorTracer(tracer);
771 m_trace->info() <<
"WARNING: enumerator tracing is not available because no performance counter service is available.";
774 m_trace->info() <<
"WARNING: enumerator tracing is not available when using multi-tasking.";
788 <<
" ItemEnumeratorVersion=" << ItemEnumerator::version();
794 if (init_time_accelerator!=0.0)
795 m_trace->info() <<
"Time (in ms) to initialize Accelerators = " << init_time_accelerator;
803_readCodeConfigurationFile()
817 bool use_config_file =
true;
818 if (config_file_name.
null()){
819 use_config_file =
false;
821 else if (config_file_name.
empty()){
837 m_trace->info() <<
"Using configuration file in current directory.";
840 config_file_name = buf.toString();
842 m_trace->info() <<
"Using configuration file: '" << config_file_name <<
"'";
844 if (use_config_file){
847 ARCANE_FATAL(
"Can not read configuration file '{0}'",config_file_name);
850 ARCANE_FATAL(
"Can not parse configuration file '{0}'",config_file_name);
864 String buf = user_config_dir.
file(
"config.xml");
870 m_trace->log() <<
"No user configuration file '" << buf <<
"'";
877 m_trace->log() <<
"Can not parse user configuration file '" << buf <<
"'";
914 bool has_arc_extension =
false;
915 for(
Integer i=0, n=services.size(); i<n; ++i ){
917 if (_hasExtension(code_service,
"arc")){
918 has_arc_extension =
true;
922 if (!has_arc_extension){
923 services.add(createArcaneCodeService(
this));
929 std::size_t extension_pos = fview.find_last_of(
'.');
930 if (extension_pos==std::string_view::npos)
932 fview.remove_prefix(extension_pos+1);
936 for(
const auto& code_service : services ){
940 found_service = code_service;
944 if (found_service.
get())
948 return found_service;
975 return m_service_and_module_factory_mng->serviceFactories2();
984 return m_service_and_module_factory_mng->moduleFactoryInfos();
991_initDataInitialisationPolicy()
995 bool is_changed =
false;
996 if (data_init_policy==
"DEFAULT"){
1000 else if (data_init_policy==
"NAN"){
1004 else if (data_init_policy==
"NONE"){
1008 else if (data_init_policy==
"LEGACY"){
1012 else if (data_init_policy==
"NAN_AND_DEFAULT"){
1019 m_trace->info() <<
"Change data initialisation policy: " << data_init_policy
1020 <<
" (" << (int)init_policy <<
")";
1022 m_trace->info() <<
"Data initialisation policy is : " << (int)init_policy;
1031 return m_arcane_main->applicationBuildInfo();
1040 return m_arcane_main->dotnetRuntimeInitialisationInfo();
1049 return m_arcane_main->acceleratorRuntimeInitialisationInfo();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classes, Types et macros pour gérer la concurrence.
Fonctions utilitaires sur les chaînes de caractères.
ARCCORE_BASE_EXPORT std::wstring convertToStdWString(const String &str)
Retourne la conversion de str en std::wstring.
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.
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 > _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.
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.
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 template pour convertir un type.
Classe utilitaire pour la destruction des objets alloués par new.
Classe gérant un répertoire.
String file(const String &file_name) const override
Retourne le chemin complet du fichier file_name dans le répertoire.
String path() const override
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'un chargeur dynamique de bibliothèque.
virtual IDynamicLibrary * open(const String &directory, const String &name)=0
Charge une bibliothèque dynamique.
static IDynamicLibraryLoader * getDefault()
Service utilisé pour charger dynamiquement des bibliothèques.
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 gestion de l'affinité des coeurs CPU.
virtual void printInfos()=0
Affiche les informations complète de topologie via info()
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.
Tableau interne pour Arccore.
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 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.
std::int64_t Int64
Type entier signé sur 64 bits.
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.
List< String > StringList
Tableau de chaînes de caractères unicode.
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection d'informations sur les fabriques de module.
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.