14#include "arcane/utils/ValueConvert.h"
16#include "arcane/utils/Convert.h"
17#include "arcane/utils/Iostream.h"
18#include "arcane/utils/NotImplementedException.h"
19#include "arcane/utils/OStringStream.h"
20#include "arcane/utils/PlatformUtils.h"
21#include "arcane/utils/FatalErrorException.h"
22#include "arcane/utils/internal/ValueConvertInternal.h"
34#ifdef ARCANE_REAL_NOT_BUILTIN
35template<> ARCANE_UTILS_EXPORT
bool
36builtInGetValue(
Real& v,
const String& s)
40 if (builtInGetValue(vz,s))
43 cout <<
"** CONVERT DOUBLE TO REAL s=" << s <<
" vz=" << vz <<
" v=" << v <<
'\n';
47 if (builtInGetValue(vz,s))
49 v =
Real((
char*)s.localstr(),1000);
50 cout <<
"** CONVERT DOUBLE TO REAL s=" << s <<
'\n';
59builtInGetValue(String& v,
const String& s)
69bool _builtInGetBoolArrayValue(
BoolArray& v,
const String& s)
78 if (builtInGetValue(sa,s))
80 for( Integer i=0, is=sa.size(); i<is; ++i ){
81 bool read_val =
false;
82 if (builtInGetValue(read_val,sa[i]))
90_builtInGetStringArrayValue(
StringArray& v,
const String& s)
93 String read_val = String();
94 std::istringstream sbuf(s.localstr());
102 read_val = StringView(s2.c_str());
109template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealArray& v,
const String& s)
111 return builtInGetArrayValue(v,s);
114template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2Array& v,
const String& s)
116 return builtInGetArrayValue(v,s);
119template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3Array& v,
const String& s)
121 return builtInGetArrayValue(v,s);
124template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2x2Array& v,
const String& s)
126 return builtInGetArrayValue(v,s);
129template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3Array& v,
const String& s)
131 return builtInGetArrayValue(v,s);
134template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int32Array& v,
const String& s)
136 return builtInGetArrayValue(v,s);
139template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int64Array& v,
const String& s)
141 return builtInGetArrayValue(v,s);
144template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolArray& v,
const String& s)
146 return _builtInGetBoolArrayValue(v,s);
149template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringArray& v,
const String& s)
151 return _builtInGetStringArrayValue(v,s);
157template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealUniqueArray& v,
const String& s)
159 return builtInGetArrayValue(v,s);
162template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2UniqueArray& v,
const String& s)
164 return builtInGetArrayValue(v,s);
167template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3UniqueArray& v,
const String& s)
169 return builtInGetArrayValue(v,s);
172template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2x2UniqueArray& v,
const String& s)
174 return builtInGetArrayValue(v,s);
177template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3UniqueArray& v,
const String& s)
179 return builtInGetArrayValue(v,s);
182template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int16UniqueArray& v,
const String& s)
184 return builtInGetArrayValue(v,s);
187template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int32UniqueArray& v,
const String& s)
189 return builtInGetArrayValue(v,s);
192template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int64UniqueArray& v,
const String& s)
194 return builtInGetArrayValue(v,s);
197template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolUniqueArray& v,
const String& s)
199 return _builtInGetBoolArrayValue(v,s);
202template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringUniqueArray& v,
const String& s)
204 return _builtInGetStringArrayValue(v,s);
210template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealSharedArray& v,
const String& s)
212 return builtInGetArrayValue(v,s);
215template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2SharedArray& v,
const String& s)
217 return builtInGetArrayValue(v,s);
222 return builtInGetArrayValue(v,s);
227 return builtInGetArrayValue(v,s);
230template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3SharedArray& v,
const String& s)
232 return builtInGetArrayValue(v,s);
235template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int16SharedArray& v,
const String& s)
237 return builtInGetArrayValue(v,s);
242 return builtInGetArrayValue(v,s);
247 return builtInGetArrayValue(v,s);
250template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolSharedArray& v,
const String& s)
252 return _builtInGetBoolArrayValue(v,s);
255template<> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringSharedArray& v,
const String& s)
257 return _builtInGetStringArrayValue(v,s);
265template<
class T>
inline bool
266_builtInPutValue(
const T& v,String& s)
270 if (ostr().fail() || ostr().bad())
275template<
class T>
inline bool
276_builtInPutArrayValue(Span<const T> v,String& s)
279 for(
Int64 i=0, n=v.size(); i<n; ++i ){
284 if (ostr().fail() || ostr().bad())
294{
return _builtInPutValue(v,s); }
296{
return _builtInPutValue(v,s); }
298{
return _builtInPutValue(v,s); }
300{
return _builtInPutValue(v,s); }
302{
return _builtInPutValue(v,s); }
304{
return _builtInPutValue(v,s); }
306{
return _builtInPutValue(v,s); }
308{
return _builtInPutValue(v,s); }
310{
return _builtInPutValue(v,s); }
312{
return _builtInPutValue(v,s); }
313#ifdef ARCANE_REAL_NOT_BUILTIN
315{
return _builtInPutValue(v,s); }
318{
return _builtInPutValue(v,s); }
320{
return _builtInPutValue(v,s); }
322{
return _builtInPutValue(v,s); }
324{
return _builtInPutValue(v,s); }
327{
return _builtInPutArrayValue(v,s); }
329{
return _builtInPutArrayValue(v,s); }
331{
return _builtInPutArrayValue(v,s); }
333{
return _builtInPutArrayValue(v,s); }
335{
return _builtInPutArrayValue(v,s); }
337{
return _builtInPutArrayValue(v,s); }
339{
return _builtInPutArrayValue(v,s); }
341{
return _builtInPutArrayValue(v,s); }
343{
return _builtInPutArrayValue(v,s); }
345{
return _builtInPutArrayValue(v,s); }
351static char global_hexa[16] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
352 'a',
'b',
'c',
'd',
'e',
'f' };
360_toHexaString(Span<const std::byte> input)
362 UniqueArray<Byte> out_buf;
364 out_buf.resize((len*2)+1);
366 int v = std::to_integer<int>(input[i]);
367 out_buf[(i*2)] = global_hexa[v/16];
368 out_buf[(i*2)+1] = global_hexa[v%16];
370 out_buf[
len*2] =
'\0';
371 return String(out_buf);
399 for (Integer i=0; i<8; ++i ){
401 output[(i*2)] = global_hexa[v/16];
402 output[(i*2)+1] = global_hexa[v%16];
422template<
typename T> std::optional<T>
428 bool is_bad = builtInGetValue(v,s);
434template<
typename T> std::optional<T>
442 ARCANE_FATAL(
"Invalid value '{0}' for environment variable {1}. Can not convert to type '{2}'",
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
static std::optional< T > tryParseFromEnvironment(StringView s, bool throw_if_invalid)
Convertit la valeur de la variable d'environnement s en le type T.
static std::optional< T > tryParse(StringView s)
Convertit s en le type T.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par référence.
Vue sur une chaîne de caractères UTF-8.
constexpr bool empty() const ARCCORE_NOEXCEPT
Vrai si la chaîne est nulle ou vide.
Chaîne de caractères unicode.
Integer len(const char *s)
Retourne la longueur de la chaîne s.
String toHexaString(ByteConstArrayView input)
Converti un tableau d'octet en sa représentation hexadécimale.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Array< Real2 > Real2Array
Tableau dynamique à une dimension de vecteurs de rang 2.
UniqueArray< Real2x2 > Real2x2UniqueArray
Tableau dynamique à une dimension de tenseurs de rang 2.
Array< Int64 > Int64Array
Tableau dynamique à une dimension d'entiers 64 bits.
bool builtInPutValue(const String &v, String &s)
Converti la valeur v dans la chaîne s.
SharedArray< Real > RealSharedArray
Tableau dynamique à une dimension de réels.
UniqueArray< Real3x3 > Real3x3UniqueArray
Tableau dynamique à une dimension de tenseurs de rang 3.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
Array< String > StringArray
Tableau dynamique à une dimension de chaînes de caractères.
Array< bool > BoolArray
Tableau dynamique à une dimension de booléens.
Array< Real3x3 > Real3x3Array
Tableau dynamique à une dimension de tenseurs de rang 3.
UniqueArray< Real3 > Real3UniqueArray
Tableau dynamique à une dimension de vecteurs de rang 3.
UniqueArray< Int16 > Int16UniqueArray
Tableau dynamique à une dimension d'entiers 16 bits.
UniqueArray< bool > BoolUniqueArray
Tableau dynamique à une dimension de booléens.
SharedArray< String > StringSharedArray
Tableau dynamique à une dimension de chaînes de caractères.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
SharedArray< Real3x3 > Real3x3SharedArray
Tableau dynamique à une dimension de tenseurs de rang 3.
SharedArray< bool > BoolSharedArray
Tableau dynamique à une dimension de booléens.
UniqueArray< Real > RealUniqueArray
Tableau dynamique à une dimension de réels.
unsigned char Byte
Type d'un octet.
Array< Real2x2 > Real2x2Array
Tableau dynamique à une dimension de tenseurs de rang 2.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Array< Real > RealArray
Tableau dynamique à une dimension de réels.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
SharedArray< Int16 > Int16SharedArray
Tableau dynamique à une dimension d'entiers 16 bits.
UniqueArray< Real2 > Real2UniqueArray
Tableau dynamique à une dimension de vecteurs de rang 2.
SharedArray< Real2 > Real2SharedArray
Tableau dynamique à une dimension de vecteurs de rang 2.
Array< Real3 > Real3Array
Tableau dynamique à une dimension de vecteurs de rang 3.