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" 
   44    NameValuePair(
const String& n,
const String& v) : name(n), value(v){}
 
 
   49  Impl(
int* argc,
char*** argv)
 
   54  , m_need_destroy(false)
 
   64  , m_need_destroy(true)
 
   68    m_argc_orig = 
new int;
 
   72    m_argv_orig = 
new char**;
 
   73    char*** argv = m_argv_orig;
 
   74    *argv = 
new char*[nb_arg+1];
 
   75    m_argv0 = ::strdup(
"arcane");
 
   77    for(
Integer i=0; i<nb_arg; ++i )
 
   78      (*argv)[i+1] = (
char*)m_args[i].localstr();
 
   87  , m_need_destroy(true)
 
   90    m_argc_orig = 
new int;
 
   94    m_argv_orig = 
new char**;
 
   95    char*** argv = m_argv_orig;
 
   97    m_argv0 = ::strdup(
"arcane");
 
  106        delete[] (*m_argv_orig);
 
  112  void addReference() { ++m_nb_ref; }
 
  113  void removeReference()
 
  118    Int32 v = std::atomic_fetch_add(&m_nb_ref,-1);
 
  122  void parseParameters(
const CommandLineArguments& command_line_args)
 
  127    command_line_args.fillArgs(args);
 
  128    if (args.count() == 1) {
 
  132    for (
Integer i = 0, n = args.count(); i < n; ++i) {
 
  133      String arg = args[i];
 
  134      if (arg.startsWith(
"-h") || arg.startsWith(
"--help")) {
 
  139      if (!arg.startsWith(
"-A,"))
 
  141      String arg_value = arg.substring(3);
 
  142      if (arg_value.null() || arg_value.empty())
 
  144      UniqueArray<String> values;
 
  145      arg_value.split(values,
',');
 
  146      for( 
const auto& x : values ){
 
  147        m_parameter_list.addParameterLine(x);
 
  151  String getParameter(
const String& param_name)
 
  153    return m_parameter_list.getParameterOrNull(param_name);
 
  158    m_parameter_list.fillParameters(param_names,values);
 
  161  bool needHelp()
 const 
  167  std::atomic<Int32> m_nb_ref;
 
  171  int* m_argc_orig = 
nullptr;
 
  172  char*** m_argv_orig = 
nullptr;
 
  173  char* m_argv0 = 
nullptr;
 
 
  182CommandLineArguments::
 
  183CommandLineArguments(
int* argc,
char*** argv)
 
  184: m_p(new 
Impl(argc,argv))
 
  186  m_p->parseParameters(*
this);
 
 
  192CommandLineArguments::
 
  193CommandLineArguments()
 
  196  m_p->parseParameters(*
this);
 
  202CommandLineArguments::
 
  204: m_p(new Impl(aargs))
 
  206  m_p->parseParameters(*
this);
 
  212CommandLineArguments::
 
  231CommandLineArguments::
 
  232~CommandLineArguments()
 
  239int* CommandLineArguments::
 
  240commandLineArgc()
 const 
  248char*** CommandLineArguments::
 
  249commandLineArgv()
 const 
  260  int nargc = *m_p->m_argc;
 
  261  char** nargv = *m_p->m_argv;
 
  263  for( 
int i=0; i<nargc; ++i )
 
 
  273  return m_p->getParameter(param_name);
 
 
  282  m_p->m_parameter_list.addParameterLine(line);
 
 
  291  m_p->fillParameters(param_names,values);
 
 
  300  return m_p->m_parameter_list;
 
 
  309  return m_p->needHelp();
 
 
Integer count() const
Nombre d'éléments de la collection.
 
int * m_argc
Nombre d'arguments de la ligne de commande.
 
char *** m_argv
Tableau des arguments de la ligne de commande.
 
Arguments de la ligne de commande.
 
const ParameterList & parameters() const
Liste des paramètres.
 
void addParameterLine(const String &line)
Ajoute un paramètre.
 
bool needHelp() const
Méthode permettant de savoir si l'utilisateur a demandé de l'aide dans la ligne de commande.
 
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.
 
Chaîne de caractères unicode.
 
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
 
Int32 Integer
Type représentant un entier.
 
List< String > StringList
Tableau de chaînes de caractères unicode.
 
std::int32_t Int32
Type entier signé sur 32 bits.