14#include "arcane/utils/ApplicationInfo.h"
15#include "arcane/utils/String.h"
16#include "arcane/utils/CommandLineArguments.h"
17#include "arcane/utils/PlatformUtils.h"
18#include "arcane/utils/List.h"
19#include "arcane/utils/Property.h"
70ApplicationInfo(
int* argc,
char*** argv,
const String& name,
const VersionInfo& aversion)
73, m_p(new ApplicationInfoPrivate(CommandLineArguments(argc,argv),name,aversion))
82ApplicationInfo(
const StringList& aargs,
const String& name,
83 const VersionInfo& aversion)
86, m_p(new ApplicationInfoPrivate(CommandLineArguments(aargs),name,aversion))
95ApplicationInfo(
const CommandLineArguments& aargs,
const String& name,
96 const VersionInfo& aversion)
99, m_p(new ApplicationInfoPrivate(aargs,name,aversion))
108ApplicationInfo(
const ApplicationInfo& rhs)
111, m_p(new ApplicationInfoPrivate(*rhs.m_p))
119ApplicationInfo& ApplicationInfo::
120operator=(
const ApplicationInfo& rhs)
124 m_p =
new ApplicationInfoPrivate(*rhs.m_p);
143void ApplicationInfo::
146 m_argc = m_p->m_command_line_args.commandLineArgc();
147 m_argv = m_p->m_command_line_args.commandLineArgv();
153void ApplicationInfo::
154_init(
const String& name)
163 String s = platform::getEnvironmentVariable(
"ARCANE_USER_CONFIG_FILE_NAME");
171 String s = platform::getEnvironmentVariable(
"ARCANE_SHARE_PATH");
175 s = platform::getEnvironmentVariable(
"STDENV_PATH_SHR");
181 String s = platform::getEnvironmentVariable(
"ARCANE_LIB_PATH");
185 String s = platform::getEnvironmentVariable(
"STDENV_PATH_LIB");
195 String exe_path = platform::getFileDirName(exe_full_path);
319int* ApplicationInfo::
320commandLineArgc()
const
328char*** ApplicationInfo::
329commandLineArgv()
const
349 m_p->m_dynamic_libraries_name.add(
lib_name);
358 return m_p->m_dynamic_libraries_name;
367 return m_p->m_command_line_args;
403 m_p->m_command_line_args =
aargs;
422 m_p->m_runtime_config_file_content = content;
431 return m_p->m_runtime_config_file_content;
446template<
typename V>
void ApplicationInfo::
447_applyPropertyVisitor(
V&
p)
449 auto b =
p.builder();
451 p <<
b.addString(
"CodeName")
452 .addDescription(
"Name of the code")
453 .addGetter([](
auto a) {
return a.x.codeName(); })
454 .addSetter([](
auto a) { a.x.setCodeName(a.v); });
456 p << b.addString(
"DataDir")
457 .addDescription(
"Directory containing os independant files")
458 .addGetter([](
auto a) {
return a.x.dataDir(); })
459 .addSetter([](
auto a) { a.x.setDataDir(a.v); });
461 p << b.addString(
"DataOsDir")
462 .addDescription(
"Directory containing os dependant files")
463 .addGetter([](
auto a) {
return a.x.dataOsDir(); })
464 .addSetter([](
auto a) { a.x.setDataOsDir(a.v); });
466 p << b.addBool(
"Debug")
467 .addDescription(
"Indicate if debug mode is active")
468 .addGetter([](
auto a) {
return a.x.isDebug(); })
469 .addSetter([](
auto a) { a.x.setIsDebug(a.v); });
471 p << b.addString(
"CodeVersion")
472 .addDescription(
"Version (x.y.z) of the code")
473 .addSetter([](
auto a) { a.x.setCodeVersion(VersionInfo(a.v)); })
474 .addGetter([](
auto a) {
return a.x.codeVersion().versionAsString(); });
476 p << b.addStringList(
"DynamicLibraries")
477 .addDescription(
"Dynamic libraries to load at startup")
478 .addSetter([](
auto a)
483 .addGetter([](
auto a) {
return a.x.dynamicLibrariesName(); });
489ARCANE_REGISTER_PROPERTY_CLASS(ApplicationInfo,());
String m_target_full_name
Nom complet de la cible.
bool m_is_debug
true s'il s'agit d'une version debug.
String m_data_os_dir
Répertoire des fichiers config dépendant OS.
String m_data_dir
Répertoire des fichiers de config communs.
String m_osname
Nom de l'OS.
VersionInfo m_version
Numéro de version.
String m_version_date
Date de la version.
String m_code_name
Nom du code.
String m_application_name
Nom de l'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.
void setCommandLineArguments(const CommandLineArguments &args)
Positionne les arguments de la ligne de commande.
void addParameterLine(const String &line)
Ajoute un paramètre Arcane à la ligne de commande.
void setCodeVersion(const VersionInfo &version_info)
Positionne le numéro de version.
ByteConstSpan runtimeConfigFileContent() const
Contenu du fichier de configuration de l'application.
void setDataDir(const String &v)
Positionne le chemin où se trouve les fichiers de données.
void setIsDebug(bool v)
Positionne l'état de débug.
const String & applicationName() const
Nom de l'application.
void addDynamicLibrary(const String &lib_name)
Ajoute la bibliothèque lib_name à la liste des bibliothèques chargées dynamiquements.
const String & targetFullName() const
Retourne le nom complet de la cible.
const CommandLineArguments & commandLineArguments() const
Arguments de la ligne de commande.
void args(StringList &args) const
Remplit args avec les arguments de la ligne de commande.
const VersionInfo & codeVersion() const
Numéro de version.
const VersionInfo & version() const
Numéro de version.
void setApplicationName(const String &v)
Positionne le nom de l'application.
bool isDebug() const
Retourne true si on s'exécute en mode debug.
void setRuntimeConfigFileContent(ByteConstSpan content)
Positionne le contenu du fichier de configuration de l'application.
const String & dataOsDir() const
Retourne le chemin où se trouve les fichiers de données dépendant de l'OS.
void setDataOsDir(const String &v)
Positionne le chemin où se trouve les fichiers de données dépendant de l'OS.
StringCollection dynamicLibrariesName() const
Liste des bibliothèques dynamiques.
void setCodeName(const String &code_name)
Positionne le nom du code.
Arguments de la ligne de commande.
void addParameterLine(const String &line)
Ajoute un paramètre.
void fillArgs(StringList &args) const
Remplit args avec arguments de la ligne de commande.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
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.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Span< const std::byte > ByteConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères.
List< String > StringList
Tableau de chaînes de caractères unicode.