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"
41#include "arccore/concurrency/internal/TaskFactoryInternal.h"
43#include "arcane/core/ArcaneVersion.h"
44#include "arcane/core/ISubDomain.h"
45#include "arcane/core/IIOMng.h"
46#include "arcane/core/IXmlDocumentHolder.h"
47#include "arcane/core/IParallelSuperMng.h"
48#include "arcane/core/IMainFactory.h"
49#include "arcane/core/IArcaneMain.h"
50#include "arcane/core/IRessourceMng.h"
51#include "arcane/core/IServiceLoader.h"
52#include "arcane/core/IServiceMng.h"
53#include "arcane/core/ICodeService.h"
54#include "arcane/core/ISession.h"
55#include "arcane/core/IDataFactory.h"
56#include "arcane/core/IDataFactoryMng.h"
57#include "arcane/core/IXmlDocumentHolder.h"
58#include "arcane/core/XmlNode.h"
59#include "arcane/core/XmlNodeList.h"
60#include "arcane/core/ItemTypeMng.h"
62#include "arcane/core/IPhysicalUnitSystemService.h"
63#include "arcane/core/ServiceBuilder.h"
64#include "arcane/core/Configuration.h"
65#include "arcane/core/Directory.h"
66#include "arcane/core/IServiceAndModuleFactoryMng.h"
67#include "arcane/core/ApplicationBuildInfo.h"
69#include "arcane/core/IItemEnumeratorTracer.h"
70#include "arcane/impl/Application.h"
71#include "arcane/impl/ConfigurationReader.h"
72#include "arcane/impl/ArcaneMain.h"
77#include "arcane/core/Item.h"
78#include "arcane/core/IndexedItemConnectivityView.h"
79#include "arcane/core/UnstructuredMeshConnectivity.h"
81#include "arccore_version.h"
96extern "C++" ARCANE_UTILS_EXPORT
void
97arcaneSetPauseOnError(
bool v);
103createNullPhysicalUnitSystemService();
105arcaneCreateConfigurationMng(
ITraceMng* tm);
107arcaneCreateServiceAndModuleFactoryMng(
ITraceMng* tm);
112extern "C++" ARCANE_CORE_EXPORT
void
135 for (
const String& s : slist)
177, m_namespace_uri(arcaneNamespaceURI())
178, m_local_name(
"Application")
185 m_core_application = std::make_unique<CoreApplication>();
201 m_core_application->m_task_implementation.reset();
219 delete m_service_and_module_factory_mng;
223 delete m_configuration_mng;
226 m_owned_sequential_parallel_super_mng.reset();
236 delete m_trace_policy;
285 DependencyInjection::Injector injector;
286 injector.fillWithGlobalFactories();
294 auto t = injector.createInstance<InterfaceType>(s,
true);
307void Application::CoreApplication::
312 bool has_dbghelp =
false;
314 String dbghelp_service_name =
"DbgHelpStackTraceService";
319 if (v && v.value() != 0) {
320 names.add(
"BackwardCppStackTraceService");
322 names.add(
"LibUnwind");
323 names.add(
"DbgHelpStackTraceService");
324 sv = tryCreateServiceUsingInjector<IStackTraceService>(names, &found_name,
true);
325 if (found_name == dbghelp_service_name)
328 m_stack_trace_service = sv;
339 Ref<ISymbolizerService> sv;
342 names.add(
"LLVMSymbolizer");
344 names.add(
"DbgHelpSymbolizerService");
345 sv = tryCreateServiceUsingInjector<ISymbolizerService>(names, &found_name,
true);
347 m_symbolizer_service = sv;
354 StringList names = build_info.threadImplementationServices();
356 auto sv = tryCreateServiceUsingInjector<IThreadImplementationService>(names, &found_name,
false);
358 ARCANE_FATAL(
"Can not find implementation for 'IThreadImplementation' (names='{0}').",
359 _stringListToArray(names));
360 m_thread_implementation_service = sv;
361 m_thread_implementation = sv->createImplementation();
363 m_thread_implementation->initialize();
364 m_used_thread_service_name = found_name;
373 Integer nb_task_thread = build_info.nbTaskThread();
374 if (nb_task_thread >= 0) {
376 StringList names = build_info.taskImplementationServices();
378 auto sv = tryCreateServiceUsingInjector<ITaskImplementation>(names, &found_name,
false);
380 TaskFactoryInternal::setImplementation(sv.get());
381 sv->initialize(nb_task_thread);
382 m_used_task_service_name = found_name;
383 m_task_implementation = sv;
386 ARCANE_FATAL(
"Can not find task implementation service (names='{0}')."
387 " Please check if Arcane is configured with Intel TBB library",
388 _stringListToArray(names));
414 Int32 output_level = build_info.outputLevel();
415 if (output_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
416 m_trace_policy->setVerbosityLevel(output_level);
417 m_trace_policy->setStandardOutputVerbosityLevel(output_level);
419 Int32 verbosity_level = build_info.verbosityLevel();
420 if (verbosity_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
421 m_trace_policy->setVerbosityLevel(verbosity_level);
424 bool has_output_file = build_info.isMasterHasOutputFile();
425 m_trace_policy->setIsMasterHasOutputFile(has_output_file);
430 Int32 minimal_verbosity_level = build_info.minimalVerbosityLevel();
431 if (minimal_verbosity_level==Trace::UNSPECIFIED_VERBOSITY_LEVEL)
432 minimal_verbosity_level = Trace::DEFAULT_VERBOSITY_LEVEL;
433 m_trace_policy->setDefaultVerboseLevel(
m_trace.get(),minimal_verbosity_level);
436 arcaneGlobalMemoryInfo()->setTraceMng(
traceMng());
440 m_trace->info(4) <<
"*** Initialization informations:";
445 if (dynamic_library_loader){
447#ifdef ARCANE_OS_WIN32
464 m_trace->info(4) <<
"Adding '" << os_dir <<
"' to search library path";
466 SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
467 AddDllDirectory(wide_os_dir.c_str());
472 m_trace->info(4) <<
"*** Trying to load dynamic library: " << name;
475 m_trace->info(4) <<
"WARNING: Can not load library '" << name <<
"'";
479#ifdef ARCANE_OS_WIN32
480 if (dynamic_library_loader){
483 String dyn_lib_names[5] = {
"arcane_mpi",
"arcane_std",
"arcane_mesh",
484 "arcane_thread",
"arcane_mpithread",
487 dynamic_library_loader->
open(os_dir,dyn_lib_names[i]);
491 m_configuration_mng = arcaneCreateConfigurationMng(
traceMng());
494 m_service_and_module_factory_mng = arcaneCreateServiceAndModuleFactoryMng(
traceMng());
496 m_service_and_module_factory_mng->addGlobalFactory(*i);
498 m_service_and_module_factory_mng->addGlobalFactory(*i);
500 m_service_and_module_factory_mng->createAllServiceRegistererFactories();
506 if (!pause_on_error.
null())
507 arcaneSetPauseOnError(
true);
509 m_core_application->setTraceMng(
m_trace);
518 if (!profile_str.
null()){
522 m_profiling_service = sv;
526 ARCANE_FATAL(
"Can not find profiling service (name='{0}')",profile_str);
535 m_online_debugger = sv;
547 m_processor_affinity_service = sv;
551 m_trace->info(4) <<
"Can not find implementation for IProcessorAffinityService "
552 <<
"(names=" << _stringListToArray(names) <<
").";
557 String message_passing_service = build_info.messagePassingService();
558 if (message_passing_service.
null())
559 message_passing_service = build_info.internalDefaultMessagePassingService();
563 ARCANE_FATAL(
"Can not find message passing service '{0}'",message_passing_service);
569 if (sm->isParallel()){
571 seq_sm = m_owned_sequential_parallel_super_mng.get();
573 ARCANE_FATAL(
"Can not find service 'SequentialParallelSuperMng'");
618 m_trace_policy->setIsParallel(is_parallel);
619 m_trace_policy->setIsDebug(is_debug);
620 bool is_parallel_output = is_parallel && is_debug;
625 is_parallel_output =
true;
627 is_parallel_output =
false;
629 m_trace_policy->setIsParallelOutput(is_parallel_output);
637#ifdef ARCANE_CHECK_MEMORY
638 arcaneGlobalMemoryInfo()->setTraceMng(
m_trace);
649 m_trace->warning() <<
"Application is already initialised";
659 m_trace_policy->setDefaultClassConfigXmlBuffer(userConfigBuffer());
662 m_trace->logdate() <<
"Begin execution.";
665 m_trace->info() <<
"WARNING: Execution in DEBUG mode!";
668 m_trace->info() <<
"WARNING: Compilation in CHECK mode !";
674 if (!check_str.
null()){
675 bool is_check = check_str !=
"0";
676 m_trace->info() <<
"WARNING: Setting CHECK mode to " << is_check;
680 m_trace->info() <<
"WARNING: Execution in CHECK mode!";
684 m_trace->info() <<
"WARNING: Execution in TRACE mode !";
687 m_trace->info() <<
"Using 64bits version!";
690 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
691 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
703 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
704 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
707 m_trace->info() <<
"ArccoreVersion: " << ARCCORE_VERSION_STR_FULL;
708 m_trace->info() <<
"ArcaneVersion: " << ARCANE_VERSION_STR_FULL
715 m_trace->info() <<
"Stack trace service is available";
718 m_trace->info() <<
"Symbolizer service is available";
721#ifdef ARCANE_USE_LIBXML2
722 m_trace->info() <<
"Using 'libxml2' for XML parsing";
735 m_trace->info() <<
"Hyoda service is now hooked";
738 m_trace->info() <<
"Unknown online debugger service";
744 _readCodeConfigurationFile();
752 ByteConstSpan runtime_config =
m_exe_info.runtimeConfigFileContent();
753 if (!runtime_config.empty()){
754 m_trace->info() <<
"Reading configuration parameters from runtime config file";
756 jdoc.
parse(runtime_config);
765 if (!configuration_elem.
null()){
766 m_trace->info() <<
"Reading configuration parameters from code config file";
773 _initDataInitialisationPolicy();
776 if (!m_core_application->m_used_thread_service_name.null())
777 m_trace->info() <<
"Service used for thread management : '" << m_core_application->m_used_thread_service_name <<
"'";
779 m_trace->info() <<
"No thread management active";
781 if (!m_core_application->m_used_task_service_name.null()) {
782 m_trace->info() <<
"Service used for task management : '" << m_core_application->m_used_task_service_name
784 std::ostringstream ostr;
786 m_trace->info() <<
"TaskManagement infos:" << ostr.str();
789 m_trace->info() <<
"No task management active";
795 String service_name =
"Udunits";
798 m_trace->info() <<
"UnitSystem service found name=" << service_name;
801 m_trace->info() <<
"No unit system service found";
802 sv =
makeRef(createNullPhysicalUnitSystemService());
804 m_physical_unit_system_service = sv;
809 String service_name =
"LinuxPerfPerformanceCounterService";
811 if (!env_service_name.
null())
812 service_name = env_service_name +
"PerformanceCounterService";
815 m_performance_counter_service = p;
817 m_trace->info() <<
"PerformanceCounterService found name=" << service_name;
820 m_trace->info() <<
"No performance counter service found";
826 bool force_tracer =
false;
831 auto p = m_performance_counter_service;
833 m_trace->info() <<
"Enumerator tracing is enabled";
835 arcaneSetSingletonItemEnumeratorTracer(tracer);
840 m_trace->info() <<
"WARNING: enumerator tracing is not available because no performance counter service is available.";
843 m_trace->info() <<
"WARNING: enumerator tracing is not available when using multi-tasking.";
857 <<
" ItemEnumeratorVersion=" << ItemEnumerator::version();
863 if (init_time_accelerator!=0.0)
864 m_trace->info() <<
"Time (in ms) to initialize Accelerators = " << init_time_accelerator;
872_readCodeConfigurationFile()
886 bool use_config_file =
true;
887 if (config_file_name.
null()){
888 use_config_file =
false;
890 else if (config_file_name.
empty()){
906 m_trace->info() <<
"Using configuration file in current directory.";
909 config_file_name = buf.toString();
911 m_trace->info() <<
"Using configuration file: '" << config_file_name <<
"'";
913 if (use_config_file){
916 ARCANE_FATAL(
"Can not read configuration file '{0}'",config_file_name);
919 ARCANE_FATAL(
"Can not parse configuration file '{0}'",config_file_name);
933 String buf = user_config_dir.
file(
"config.xml");
939 m_trace->log() <<
"No user configuration file '" << buf <<
"'";
946 m_trace->log() <<
"Can not parse user configuration file '" << buf <<
"'";
983 bool has_arc_extension =
false;
984 for(
Integer i=0, n=services.size(); i<n; ++i ){
986 if (_hasExtension(code_service,
"arc")){
987 has_arc_extension =
true;
991 if (!has_arc_extension){
992 services.add(createArcaneCodeService(
this));
998 std::size_t extension_pos = fview.find_last_of(
'.');
999 if (extension_pos==std::string_view::npos)
1001 fview.remove_prefix(extension_pos+1);
1005 for(
const auto& code_service : services ){
1008 if (case_ext==(*j)){
1009 found_service = code_service;
1013 if (found_service.
get())
1017 return found_service;
1044 return m_service_and_module_factory_mng->serviceFactories2();
1053 return m_service_and_module_factory_mng->moduleFactoryInfos();
1060_initDataInitialisationPolicy()
1064 bool is_changed =
false;
1065 if (data_init_policy==
"DEFAULT"){
1069 else if (data_init_policy==
"NAN"){
1073 else if (data_init_policy==
"NONE"){
1077 else if (data_init_policy==
"LEGACY"){
1081 else if (data_init_policy==
"NAN_AND_DEFAULT"){
1088 m_trace->info() <<
"Change data initialisation policy: " << data_init_policy
1089 <<
" (" << (int)init_policy <<
")";
1091 m_trace->info() <<
"Data initialisation policy is : " << (int)init_policy;
1100 return m_arcane_main->applicationBuildInfo();
1109 return m_arcane_main->dotnetRuntimeInitialisationInfo();
1118 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.
Informations pour initialiser une application.
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_used_thread_service_name
Nom du service utilisé pour gérer les threads.
Ref< InterfaceType > tryCreateServiceUsingInjector(const StringList &names, String *found_name, bool has_trace)
ReferenceCounter< ITraceMng > m_trace
Gestionnaire de traces.
String m_used_task_service_name
Nom du service utilisé pour gérer les tâches.
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.
static ARCCORE_BASE_EXPORT std::optional< Int32 > tryParseFromEnvironment(StringView s, bool throw_if_invalid)
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.
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.
Encapsulation d'un pointeur avec compteur de référence.
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.
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.