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"
20#include "arcane/utils/internal/ApplicationInfoProperties.h"
31class ApplicationInfoPrivate
71ApplicationInfo(
int* argc,
char*** argv,
const String& name,
const VersionInfo& aversion)
74, m_p(new ApplicationInfoPrivate(CommandLineArguments(argc,argv),name,aversion))
125 m_p =
new ApplicationInfoPrivate(*rhs.m_p);
144void ApplicationInfo::
147 m_argc = m_p->m_command_line_args.commandLineArgc();
148 m_argv = m_p->m_command_line_args.commandLineArgv();
154void ApplicationInfo::
159 m_p->m_version_date =
"0";
160 m_p->m_data_os_dir = String();
161 m_p->m_data_dir = String();
166 m_p->m_code_name = s;
168 m_p->m_code_name = name;
184 m_p->m_data_os_dir = s;
188 m_p->m_data_os_dir = s;
203 m_p->m_target_full_name =
"TargetUnknown";
206 m_p->m_is_debug =
true;
208 m_p->m_is_debug =
false;
218 return m_p->m_application_name;
227 return m_p->m_version;
236 return m_p->m_data_os_dir;
242 m_p->m_data_os_dir = v;
251 return m_p->m_data_dir;
269 return m_p->m_version.versionMajor();
278 return m_p->m_version.versionMinor();
287 return m_p->m_version.versionPatch();
296 return m_p->m_is_debug;
305 return m_p->m_code_name;
314 return m_p->m_target_full_name;
320int* ApplicationInfo::
321commandLineArgc()
const
329char*** ApplicationInfo::
330commandLineArgv()
const
341 m_p->m_command_line_args.fillArgs(aargs);
350 m_p->m_dynamic_libraries_name.add(lib_name);
359 return m_p->m_dynamic_libraries_name;
368 return m_p->m_command_line_args;
377 m_p->m_application_name = v;
395 m_p->m_code_name = code_name;
404 m_p->m_command_line_args = aargs;
423 m_p->m_runtime_config_file_content = content;
432 return m_p->m_runtime_config_file_content;
441 m_p->m_command_line_args.addParameterLine(line);
450template<
typename V>
void ApplicationInfoProperties::
451_applyPropertyVisitor(V& p)
453 auto b = p.builder();
455 p << b.addString(
"CodeName")
456 .addDescription(
"Name of the code")
457 .addGetter([](
auto a) {
return a.x.codeName(); })
458 .addSetter([](
auto a) { a.x.setCodeName(a.v); });
460 p << b.addString(
"DataDir")
461 .addDescription(
"Directory containing os independant files")
462 .addGetter([](
auto a) {
return a.x.dataDir(); })
463 .addSetter([](
auto a) { a.x.setDataDir(a.v); });
465 p << b.addString(
"DataOsDir")
466 .addDescription(
"Directory containing os dependant files")
467 .addGetter([](
auto a) {
return a.x.dataOsDir(); })
468 .addSetter([](
auto a) { a.x.setDataOsDir(a.v); });
470 p << b.addBool(
"Debug")
471 .addDescription(
"Indicate if debug mode is active")
472 .addGetter([](
auto a) {
return a.x.isDebug(); })
473 .addSetter([](
auto a) { a.x.setIsDebug(a.v); });
475 p << b.addString(
"CodeVersion")
476 .addDescription(
"Version (x.y.z) of the code")
477 .addSetter([](
auto a) { a.x.setCodeVersion(
VersionInfo(a.v)); })
478 .addGetter([](
auto a) {
return a.x.codeVersion().versionAsString(); });
480 p << b.addStringList(
"DynamicLibraries")
481 .addDescription(
"Dynamic libraries to load at startup")
482 .addSetter([](
auto a)
485 a.x.addDynamicLibrary(s);
487 .addGetter([](
auto a) {
return a.x.dynamicLibrariesName(); });
493ARCANE_REGISTER_PROPERTY_CLASS(ApplicationInfoProperties,());
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.
Informations sur 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.
void setCommandLineArguments(const CommandLineArguments &args)
Positionne les arguments de la ligne de commande.
int * m_argc
Nombre d'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.
int versionMajor() const
Retourne le numéro de version majeure de l'application.
int versionMinor() const
Retourne le numéro de version mineure de l'application.
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.
char *** m_argv
Tableau des arguments de la ligne de commande.
int versionPatch() const
Retourne le numéro de version patch de l'application.
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.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Informations sur une version.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< String > StringCollection
Collection de chaînes de caractères.
List< String > StringList
Tableau de chaînes de caractères unicode.
Span< const std::byte > ByteConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères.