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)
50 : m_nb_ref(0), m_args(),
m_argc(argc),
m_argv(argv), m_need_destroy(false)
55 : m_nb_ref(0), m_args(aargs),
m_argc(nullptr),
m_argv(nullptr), m_need_destroy(true)
57 Integer nb_arg = aargs.
count();
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();
76 delete[] (*m_argv_orig);
82 void addReference() { ++m_nb_ref; }
83 void removeReference()
88 Int32 v = std::atomic_fetch_add(&m_nb_ref,-1);
92 void parseParameters(
const CommandLineArguments& command_line_args)
97 command_line_args.fillArgs(args);
98 for( Integer i=0, n=args.count(); i<n; ++i ){
100 if (!arg.startsWith(
"-A,"))
102 String arg_value = arg.substring(3);
103 if (arg_value.null() || arg_value.empty())
105 UniqueArray<String> values;
106 arg_value.split(values,
',');
107 for(
const auto& x : values ){
112 String getParameter(
const String& param_name)
123 std::atomic<Int32> m_nb_ref;
127 int* m_argc_orig =
nullptr;
128 char*** m_argv_orig =
nullptr;
129 char* m_argv0 =
nullptr;
139: m_p(new
Impl(argc,argv))
141 m_p->parseParameters(*
this);
149: m_p(new Impl(aargs))
151 m_p->parseParameters(*
this);
166CommandLineArguments& CommandLineArguments::
167operator=(
const CommandLineArguments& rhs)
176CommandLineArguments::
177~CommandLineArguments()
184int* CommandLineArguments::
185commandLineArgc()
const
193char*** CommandLineArguments::
194commandLineArgv()
const
205 int nargc = *m_p->m_argc;
206 char** nargv = *m_p->m_argv;
208 for(
int i=0; i<nargc; ++i )
218 return m_p->getParameter(param_name);
227 m_p->m_parameter_list.addParameterLine(line);
236 m_p->fillParameters(param_names,values);
245 return m_p->m_parameter_list;
Integer count() const
Nombre d'éléments de la collection.
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.
CommandLineArguments(int *argc, char ***argv)
Créé une instance à partir des arguments (argc,argv)
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.
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.