12#ifndef ARCANE_UTILS_VALUECONVERT_H
13#define ARCANE_UTILS_VALUECONVERT_H
17#include "arcane/utils/Iostream.h"
18#include "arcane/utils/String.h"
19#include "arcane/utils/Array.h"
20#include "arcane/utils/NumericTypes.h"
21#include "arcane/utils/Convert.h"
42:
private std::streambuf
50 std::istream& stream() {
return m_stream; }
55 std::istream m_stream;
67template <
class T>
inline bool
72 std::istream& sbuf = svis.stream();
74 if (sbuf.fail() || sbuf.bad())
96template <
class T>
inline bool
99 return impl::builtInGetValueGeneric(v, s);
105template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(String& v, StringView s);
106template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
double& v, StringView s);
107template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
float& v, StringView s);
108template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
int& v, StringView s);
109template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
unsigned int& v, StringView s);
110template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
long& v, StringView s);
111template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
long long& v, StringView s);
112template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
short& v, StringView s);
113template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
unsigned short& v, StringView s);
114template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
unsigned long& v, StringView s);
115template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
unsigned long long& v, StringView s);
116template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float16& v, StringView s);
117template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BFloat16& v, StringView s);
118template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float128& v, StringView s);
119template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int128& v, StringView s);
120#ifdef ARCANE_REAL_NOT_BUILTIN
121template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Real& v, StringView s);
123template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Real2& v, StringView s);
124template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Real3& v, StringView s);
125template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Real2x2& v, StringView s);
126template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Real3x3& v, StringView s);
128template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealArray& v, StringView s);
129template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2Array& v, StringView s);
130template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3Array& v, StringView s);
131template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2x2Array& v, StringView s);
132template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3Array& v, StringView s);
133template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int8Array& v, StringView s);
134template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int16Array& v, StringView s);
135template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int32Array& v, StringView s);
136template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int64Array& v, StringView s);
137template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BFloat16Array& v, StringView s);
138template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float16Array& v, StringView s);
139template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float32Array& v, StringView s);
140template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Array<Float128>& v, StringView s);
141template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(Array<Int128>& v, StringView s);
142template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolArray& v, StringView s);
143template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringArray& v, StringView s);
145template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealSharedArray& v, StringView s);
146template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2SharedArray& v, StringView s);
147template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3SharedArray& v, StringView s);
148template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2x2SharedArray& v, StringView s);
149template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3SharedArray& v, StringView s);
150template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int8SharedArray& v, StringView s);
151template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int16SharedArray& v, StringView s);
152template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int32SharedArray& v, StringView s);
153template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int64SharedArray& v, StringView s);
155template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float16SharedArray& v, StringView s);
156template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float32SharedArray& v, StringView s);
157template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(SharedArray<Float128>& v, StringView s);
158template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(SharedArray<Int128>& v, StringView s);
159template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolSharedArray& v, StringView s);
160template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringSharedArray& v, StringView s);
162template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
RealUniqueArray& v, StringView s);
163template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2UniqueArray& v, StringView s);
164template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3UniqueArray& v, StringView s);
165template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real2x2UniqueArray& v, StringView s);
166template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Real3x3UniqueArray& v, StringView s);
167template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int8UniqueArray& v, StringView s);
168template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int16UniqueArray& v, StringView s);
169template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int32UniqueArray& v, StringView s);
170template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Int64UniqueArray& v, StringView s);
172template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float16UniqueArray& v, StringView s);
173template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
Float32UniqueArray& v, StringView s);
174template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(UniqueArray<Float128>& v, StringView s);
175template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(UniqueArray<Int128>& v, StringView s);
176template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
BoolUniqueArray& v, StringView s);
177template <> ARCANE_UTILS_EXPORT
bool builtInGetValue(
StringUniqueArray& v, StringView s);
194 if (s ==
"false" || s ==
"faux" || s ==
"0") {
199 if (s ==
"true" || s ==
"vrai" || s ==
"1") {
215template <
class T>
inline bool
218 return builtInGetValue(v, s.
view());
222template <>
inline bool
238template <
class T>
inline bool
239builtInGetValue(T& v,
const char* s)
264ARCANE_UTILS_EXPORT
bool builtInPutValue(
unsigned long long v, String& s);
265#ifdef ARCANE_REAL_NOT_BUILTIN
272ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Real> v, String& s);
273ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Real2> v, String& s);
274ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Real3> v, String& s);
275ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Real2x2> v, String& s);
276ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Real3x3> v, String& s);
277ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Int16> v, String& s);
278ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Int32> v, String& s);
279ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const Int64> v, String& s);
280ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const bool> v, String& s);
281ARCANE_UTILS_EXPORT
bool builtInPutValue(Span<const String> v, String& s);
287inline const char* typeToName(
bool)
291inline const char* typeToName(Real)
295inline const char* typeToName(Real2)
299inline const char* typeToName(Real3)
303inline const char* typeToName(Real2x2)
307inline const char* typeToName(Real3x3)
311inline const char* typeToName(
short)
315inline const char* typeToName(
unsigned short)
317 return "unsigned short";
319inline const char* typeToName(
int)
323inline const char* typeToName(
long)
327inline const char* typeToName(
unsigned long)
329 return "unsigned long";
331inline const char* typeToName(
unsigned long long)
333 return "unsigned long long";
335inline const char* typeToName(
const String&)
339inline const char* typeToName(
long long)
343inline const char* typeToName(
unsigned int)
345 return "unsigned integer";
347inline const char* typeToName(
BFloat16)
351inline const char* typeToName(
Float16)
355inline const char* typeToName(
Float32)
359inline const char* typeToName(
Float128)
363inline const char* typeToName(
Int128)
371inline const char* typeToName(
const BoolArray&)
375inline const char* typeToName(
const RealArray&)
379inline const char* typeToName(
const Real2Array&)
383inline const char* typeToName(
const Real3Array&)
395inline const char* typeToName(
const Int16Array&)
399inline const char* typeToName(
const Int32Array&)
403inline const char* typeToName(
const Int64Array&)
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.
StringView view() const
Retourne une vue sur la chaîne actuelle.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
SharedArray< Int64 > Int64SharedArray
Tableau dynamique à une dimension d'entiers 64 bits.
Array< Real2 > Real2Array
Tableau dynamique à une dimension de vecteurs de rang 2.
Arccore::Float128 Float128
Type représentant un floattan sur 128 bits.
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.
SharedArray< Float32 > Float32SharedArray
Tableau dynamique à une dimension de 'float'.
UniqueArray< Float32 > Float32UniqueArray
Tableau dynamique à une dimension de 'float'.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
UniqueArray< BFloat16 > BFloat16UniqueArray
Tableau dynamique à une dimension de 'bfloat16'.
Array< String > StringArray
Tableau dynamique à une dimension de chaînes de caractères.
UniqueArray< Float16 > Float16UniqueArray
Tableau dynamique à une dimension de 'float16'.
SharedArray< Float16 > Float16SharedArray
Tableau dynamique à une dimension de 'float16'.
Array< bool > BoolArray
Tableau dynamique à une dimension de booléens.
SharedArray< Int8 > Int8SharedArray
Tableau dynamique à une dimension d'entiers 16 bits.
Arccore::Float16 Float16
Type 'Float16' (binary16)
Array< Real3x3 > Real3x3Array
Tableau dynamique à une dimension de tenseurs de rang 3.
Array< Int16 > Int16Array
Tableau dynamique à une dimension d'entiers 16 bits.
Array< Float16 > Float16Array
Tableau dynamique à une dimension de 'float16'.
Array< BFloat16 > BFloat16Array
Tableau dynamique à une dimension de 'bfloat16'.
UniqueArray< Real3 > Real3UniqueArray
Tableau dynamique à une dimension de vecteurs de rang 3.
SharedArray< Real3 > Real3SharedArray
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.
Array< Int8 > Int8Array
Tableau dynamique à une dimension d'entiers 8 bits.
Arccore::BFloat16 BFloat16
Type 'Brain Float16'.
SharedArray< String > StringSharedArray
Tableau dynamique à une dimension de chaînes de caractères.
SharedArray< BFloat16 > BFloat16SharedArray
Tableau dynamique à une dimension de 'bfloat16'.
SharedArray< Int32 > Int32SharedArray
Tableau dynamique à une dimension d'entiers 32 bits.
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.
float Float32
Type flottant IEEE-753 simple précision (binary32)
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.
SharedArray< Real2x2 > Real2x2SharedArray
Tableau dynamique à une dimension de tenseurs de rang 2.
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< Float32 > Float32Array
Tableau dynamique à une dimension de 'float'.
UniqueArray< Int8 > Int8UniqueArray
Tableau dynamique à une dimension d'entiers 16 bits.
Arccore::Int128 Int128
Type représentant un entier sur 128 bits.
Array< Real3 > Real3Array
Tableau dynamique à une dimension de vecteurs de rang 3.