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 "arcane/utils/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"
100createNullPhysicalUnitSystemService();
102arcaneCreateConfigurationMng(
ITraceMng* tm);
104arcaneCreateServiceAndModuleFactoryMng(
ITraceMng* tm);
109extern "C++" ARCANE_CORE_EXPORT
void
135, m_namespace_uri(arcaneNamespaceURI())
136, m_local_name(
"Application")
144, m_configuration_mng(nullptr)
148, m_trace_policy(nullptr)
151, m_service_and_module_factory_mng(nullptr)
168 m_task_implementation.reset();
186 delete m_service_and_module_factory_mng;
190 delete m_configuration_mng;
193 m_owned_sequential_parallel_super_mng.reset();
203 delete m_trace_policy;
215_stringListToArray(
const StringList& slist)
const
218 for(
const String& s : slist )
264 DependencyInjection::Injector injector;
265 injector.fillWithGlobalFactories();
270 auto t = injector.createInstance<InterfaceType>(s,
true);
283extern "C++" ARCANE_UTILS_EXPORT
void
284arcaneSetPauseOnError(
bool v);
301 Int32 output_level = build_info.outputLevel();
302 if (output_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
303 m_trace_policy->setVerbosityLevel(output_level);
304 m_trace_policy->setStandardOutputVerbosityLevel(output_level);
306 Int32 verbosity_level = build_info.verbosityLevel();
307 if (verbosity_level!=Trace::UNSPECIFIED_VERBOSITY_LEVEL){
308 m_trace_policy->setVerbosityLevel(verbosity_level);
311 bool has_output_file = build_info.isMasterHasOutputFile();
312 m_trace_policy->setIsMasterHasOutputFile(has_output_file);
317 Int32 minimal_verbosity_level = build_info.minimalVerbosityLevel();
318 if (minimal_verbosity_level==Trace::UNSPECIFIED_VERBOSITY_LEVEL)
319 minimal_verbosity_level = Trace::DEFAULT_VERBOSITY_LEVEL;
320 m_trace_policy->setDefaultVerboseLevel(
m_trace.get(),minimal_verbosity_level);
323 arcaneGlobalMemoryInfo()->setTraceMng(
traceMng());
327 m_trace->info(4) <<
"*** Initialization informations:";
333 if (dynamic_library_loader){
335#ifdef ARCANE_OS_WIN32
352 m_trace->info(4) <<
"Adding '" << os_dir <<
"' to search library path";
354 SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
355 AddDllDirectory(wide_os_dir.c_str());
360 m_trace->info(4) <<
"*** Trying to load dynamic library: " << name;
363 m_trace->info(4) <<
"WARNING: Can not load library '" << name <<
"'";
367#ifdef ARCANE_OS_WIN32
368 if (dynamic_library_loader){
371 String dyn_lib_names[5] = {
"arcane_mpi",
"arcane_std",
"arcane_mesh",
372 "arcane_thread",
"arcane_mpithread",
375 dynamic_library_loader->
open(os_dir,dyn_lib_names[i]);
379 m_configuration_mng = arcaneCreateConfigurationMng(
traceMng());
382 m_service_and_module_factory_mng = arcaneCreateServiceAndModuleFactoryMng(
traceMng());
384 m_service_and_module_factory_mng->addGlobalFactory(*i);
386 m_service_and_module_factory_mng->addGlobalFactory(*i);
388 m_service_and_module_factory_mng->createAllServiceRegistererFactories();
394 if (!pause_on_error.
null()){
395 arcaneSetPauseOnError(
true);
399 bool has_dbghelp =
false;
404 if (v && v.value() != 0) {
416 m_stack_trace_service = sv;
430 if (!s.
get() && has_dbghelp){
434 m_symbolizer_service = s;
440 StringList names = build_info.threadImplementationServices();
444 m_thread_implementation_service = sv;
445 m_thread_implementation = sv->createImplementation();
447 m_thread_implementation->initialize();
451 m_trace->info() <<
"Can not find thread implementation service "
452 <<
"(names=" << _stringListToArray(names) <<
"). Threads are disabled.";
463 Integer nb_task_thread = build_info.nbTaskThread();
464 if (nb_task_thread>=0){
466 StringList names = build_info.taskImplementationServices();
470 TaskFactoryInternal::setImplementation(sv.get());
472 sv->initialize(nb_task_thread);
474 m_task_implementation = sv;
477 ARCANE_FATAL(
"Can not find task implementation service (names='{0}')."
478 " Please check if Arcane is configured with Intel TBB library",
479 _stringListToArray(names));
492 if (!profile_str.
null()){
496 m_profiling_service = sv;
500 ARCANE_FATAL(
"Can not find profiling service (name='{0}')",profile_str);
509 m_online_debugger = sv;
519 m_processor_affinity_service = sv;
525 String message_passing_service = build_info.messagePassingService();
526 if (message_passing_service.
null())
527 message_passing_service = build_info.internalDefaultMessagePassingService();
531 ARCANE_FATAL(
"Can not find message passing service '{0}'",message_passing_service);
537 if (sm->isParallel()){
539 seq_sm = m_owned_sequential_parallel_super_mng.get();
541 ARCANE_FATAL(
"Can not find service 'SequentialParallelSuperMng'");
586 m_trace_policy->setIsParallel(is_parallel);
587 m_trace_policy->setIsDebug(is_debug);
588 bool is_parallel_output = is_parallel && is_debug;
593 is_parallel_output =
true;
595 is_parallel_output =
false;
597 m_trace_policy->setIsParallelOutput(is_parallel_output);
605#ifdef ARCANE_CHECK_MEMORY
606 arcaneGlobalMemoryInfo()->setTraceMng(
m_trace);
617 m_trace->warning() <<
"Application is already initialised";
627 m_trace_policy->setDefaultClassConfigXmlBuffer(userConfigBuffer());
630 m_trace->logdate() <<
"Begin execution.";
633 m_trace->info() <<
"WARNING: Execution in DEBUG mode!";
636 m_trace->info() <<
"WARNING: Compilation in CHECK mode !";
642 if (!check_str.
null()){
643 bool is_check = check_str !=
"0";
644 m_trace->info() <<
"WARNING: Setting CHECK mode to " << is_check;
648 m_trace->info() <<
"WARNING: Execution in CHECK mode!";
652 m_trace->info() <<
"WARNING: Execution in TRACE mode !";
655 m_trace->info() <<
"Using 64bits version!";
658 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
659 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
671 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
672 m_trace->info() <<
"** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- ** -- **";
675 m_trace->info() <<
"ArccoreVersion: " << ARCCORE_VERSION_STR_FULL;
676 m_trace->info() <<
"ArcaneVersion: " << ARCANE_VERSION_STR_FULL
683 m_trace->info() <<
"Stack trace service is available";
686 m_trace->info() <<
"Symbolizer service is available";
689#ifdef ARCANE_USE_LIBXML2
690 m_trace->info() <<
"Using 'libxml2' for XML parsing";
703 m_trace->info() <<
"Hyoda service is now hooked";
706 m_trace->info() <<
"Unknown online debugger service";
712 _readCodeConfigurationFile();
720 ByteConstSpan runtime_config =
m_exe_info.runtimeConfigFileContent();
721 if (!runtime_config.empty()){
722 m_trace->info() <<
"Reading configuration parameters from runtime config file";
724 jdoc.
parse(runtime_config);
733 if (!configuration_elem.
null()){
734 m_trace->info() <<
"Reading configuration parameters from code config file";
741 _initDataInitialisationPolicy();
747 m_trace->info() <<
"No thread management active";
752 std::ostringstream ostr;
754 m_trace->info() <<
"TaskManagement infos:" << ostr.str();
757 m_trace->info() <<
"No task management active";
763 String service_name =
"Udunits";
766 m_trace->info() <<
"UnitSystem service found name=" << service_name;
769 m_trace->info() <<
"No unit system service found";
770 sv =
makeRef(createNullPhysicalUnitSystemService());
772 m_physical_unit_system_service = sv;
777 String service_name =
"LinuxPerfPerformanceCounterService";
779 if (!env_service_name.
null())
780 service_name = env_service_name +
"PerformanceCounterService";
783 m_performance_counter_service = p;
785 m_trace->info() <<
"PerformanceCounterService found name=" << service_name;
788 m_trace->info() <<
"No performance counter service found";
794 bool force_tracer =
false;
799 auto p = m_performance_counter_service;
801 m_trace->info() <<
"Enumerator tracing is enabled";
803 arcaneSetSingletonItemEnumeratorTracer(tracer);
808 m_trace->info() <<
"WARNING: enumerator tracing is not available because no performance counter service is available.";
811 m_trace->info() <<
"WARNING: enumerator tracing is not available when using multi-tasking.";
825 <<
" ItemEnumeratorVersion=" << ItemEnumerator::version();
831 if (init_time_accelerator!=0.0)
832 m_trace->info() <<
"Time (in ms) to initialize Accelerators = " << init_time_accelerator;
840_readCodeConfigurationFile()
854 bool use_config_file =
true;
855 if (config_file_name.
null()){
856 use_config_file =
false;
858 else if (config_file_name.
empty()){
874 m_trace->info() <<
"Using configuration file in current directory.";
877 config_file_name = buf.toString();
879 m_trace->info() <<
"Using configuration file: '" << config_file_name <<
"'";
881 if (use_config_file){
884 ARCANE_FATAL(
"Can not read configuration file '{0}'",config_file_name);
887 ARCANE_FATAL(
"Can not parse configuration file '{0}'",config_file_name);
901 String buf = user_config_dir.
file(
"config.xml");
907 m_trace->log() <<
"No user configuration file '" << buf <<
"'";
914 m_trace->log() <<
"Can not parse user configuration file '" << buf <<
"'";
951 bool has_arc_extension =
false;
952 for(
Integer i=0, n=services.size(); i<n; ++i ){
954 if (_hasExtension(code_service,
"arc")){
955 has_arc_extension =
true;
959 if (!has_arc_extension){
960 services.add(createArcaneCodeService(
this));
966 std::size_t extension_pos = fview.find_last_of(
'.');
967 if (extension_pos==std::string_view::npos)
969 fview.remove_prefix(extension_pos+1);
973 for(
const auto& code_service : services ){
977 found_service = code_service;
981 if (found_service.
get())
985 return found_service;
1012 return m_service_and_module_factory_mng->serviceFactories2();
1021 return m_service_and_module_factory_mng->moduleFactoryInfos();
1028_initDataInitialisationPolicy()
1032 bool is_changed =
false;
1033 if (data_init_policy==
"DEFAULT"){
1037 else if (data_init_policy==
"NAN"){
1041 else if (data_init_policy==
"NONE"){
1045 else if (data_init_policy==
"LEGACY"){
1049 else if (data_init_policy==
"NAN_AND_DEFAULT"){
1056 m_trace->info() <<
"Change data initialisation policy: " << data_init_policy
1057 <<
" (" << (int)init_policy <<
")";
1059 m_trace->info() <<
"Data initialisation policy is : " << (int)init_policy;
1068 return m_arcane_main->applicationBuildInfo();
1077 return m_arcane_main->dotnetRuntimeInitialisationInfo();
1086 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.
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 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'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.