14#include "arcane/utils/CommandLineArguments.h"
15#include "arcane/utils/String.h"
16#include "arcane/utils/PlatformUtils.h"
17#include "arcane/utils/List.h"
18#include "arcane/utils/ParameterList.h"
49 Impl(
int* argc,
char*** argv)
58 m_argc_orig =
new int;
62 m_argv_orig =
new char**;
63 char*** argv = m_argv_orig;
64 *argv =
new char*[
nb_arg+1];
65 m_argv0 = ::strdup(
"arcane");
67 for(Integer i=0; i<
nb_arg; ++i )
68 (*argv)[i+1] = (
char*)m_args[i].localstr();
75 m_argc_orig =
new int;
79 m_argv_orig =
new char**;
80 char*** argv = m_argv_orig;
82 m_argv0 = ::strdup(
"arcane");
91 delete[] (*m_argv_orig);
97 void addReference() { ++m_nb_ref; }
98 void removeReference()
103 Int32 v = std::atomic_fetch_add(&m_nb_ref,-1);
107 void parseParameters(
const CommandLineArguments& command_line_args)
112 command_line_args.fillArgs(args);
113 for( Integer i=0, n=args.count(); i<n; ++i ){
114 String arg = args[i];
115 if (!arg.startsWith(
"-A,"))
117 String arg_value = arg.substring(3);
118 if (arg_value.null() || arg_value.empty())
120 UniqueArray<String> values;
121 arg_value.split(values,
',');
122 for(
const auto& x : values ){
127 String getParameter(
const String& param_name)
138 std::atomic<Int32> m_nb_ref;
142 int* m_argc_orig =
nullptr;
143 char*** m_argv_orig =
nullptr;
144 char* m_argv0 =
nullptr;
152CommandLineArguments::
153CommandLineArguments(
int* argc,
char*** argv)
156 m_p->parseParameters(*
this);
162CommandLineArguments::
163CommandLineArguments()
166 m_p->parseParameters(*
this);
172CommandLineArguments::
174: m_p(new Impl(aargs))
176 m_p->parseParameters(*
this);
182CommandLineArguments::
183CommandLineArguments(
const CommandLineArguments& rhs)
191CommandLineArguments& CommandLineArguments::
192operator=(
const CommandLineArguments& rhs)
201CommandLineArguments::
202~CommandLineArguments()
209int* CommandLineArguments::
210commandLineArgc()
const
218char*** CommandLineArguments::
219commandLineArgv()
const
230 int nargc = *m_p->m_argc;
231 char**
nargv = *m_p->m_argv;
233 for(
int i=0; i<
nargc; ++i )
252 m_p->m_parameter_list.addParameterLine(line);
270 return m_p->m_parameter_list;
Paramètres de la ligne de commande.
int * m_argc
Nombre d'arguments de la ligne de commande.
char *** m_argv
Tableau des arguments de la ligne de commande.
const ParameterList & parameters() const
Liste des paramètres.
void addParameterLine(const String &line)
Ajoute un paramètre.
void fillArgs(StringList &args) const
Remplit args avec arguments de la ligne de commande.
String getParameter(const String ¶m_name) const
Récupère le paramètre de nom param_name.
void fillParameters(StringList ¶m_names, StringList &values) const
Récupère la liste des paramètres et leur valeur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void fillParameters(StringList ¶m_names, StringList &values) const
Récupère la liste des paramètres et leur valeur.
bool addParameterLine(const String &line)
Analyse la ligne line.
String getParameterOrNull(const String ¶m_name) const
Récupère le paramètre de nom param_name.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
List< String > StringList
Tableau de chaînes de caractères unicode.