14#include "arcane/utils/ValueConvert.h"
16#include "arcane/utils/OStringStream.h"
17#include "arcane/utils/NotSupportedException.h"
18#include "arcane/utils/internal/ValueConvertInternal.h"
20#include "arccore/base/internal/ConvertInternal.h"
41 return reinterpret_cast<const char*
>(s.bytes().data());
48impl::StringViewInputStream::
54 char* begin_ptr =
const_cast<char*
>(
reinterpret_cast<const char*
>(b.data()));
55 char* end_ptr = begin_ptr + b.size();
56 setg(begin_ptr, begin_ptr, end_ptr);
65template <> ARCANE_UTILS_EXPORT
bool
66builtInGetValue(
double& v, StringView s)
68 return Convert::Impl::StringViewToIntegral::getValue(v,s);
74template <> ARCANE_UTILS_EXPORT
bool
75builtInGetValue(BFloat16& v, StringView s)
78 bool r = builtInGetValue(z, s);
83template <> ARCANE_UTILS_EXPORT
bool
84builtInGetValue(Float16& v, StringView s)
87 bool r = builtInGetValue(z, s);
92template <> ARCANE_UTILS_EXPORT
bool
93builtInGetValue(Float128& v, StringView s)
99 bool r = builtInGetValue(z, s);
104template <> ARCANE_UTILS_EXPORT
bool
105builtInGetValue(
float& v, StringView s)
108 bool r = builtInGetValue(z, s);
113template <> ARCANE_UTILS_EXPORT
bool
114builtInGetValue(
long& v, StringView s)
116 return Convert::Impl::StringViewToIntegral::getValue(v,s);
119template <> ARCANE_UTILS_EXPORT
bool
120builtInGetValue(
int& v, StringView s)
122 return Convert::Impl::StringViewToIntegral::getValue(v,s);
125template <> ARCANE_UTILS_EXPORT
bool
126builtInGetValue(
short& v, StringView s)
129 bool r = builtInGetValue(z, s);
134template <> ARCANE_UTILS_EXPORT
bool
135builtInGetValue(
unsigned long& v, StringView s)
137 const char* ptr = _stringViewData(s);
139 v = ::strtoul(ptr, &ptr2, 0);
140 return (ptr2 != (ptr + s.length()));
143template <> ARCANE_UTILS_EXPORT
bool
144builtInGetValue(
unsigned int& v, StringView s)
147 bool r = builtInGetValue(z, s);
152template <> ARCANE_UTILS_EXPORT
bool
153builtInGetValue(
unsigned short& v, StringView s)
156 bool r = builtInGetValue(z, s);
157 v = (
unsigned short)z;
161template <> ARCANE_UTILS_EXPORT
bool
162builtInGetValue(
long long& v, StringView s)
164 return Convert::Impl::StringViewToIntegral::getValue(v,s);
167template <> ARCANE_UTILS_EXPORT
bool
168builtInGetValue(Real2& v, StringView s)
170 if (Convert::Impl::ConvertPolicy::isUseSameConvertForAllReal()) {
171 s = Convert::Impl::_removeLeadingSpaces(s);
173 const bool is_verbose = Convert::Impl::ConvertPolicy::verbosity() > 0;
175 std::cout <<
"Try Read Real2: '" << s <<
"'\n";
176 Int64 p = Convert::Impl::StringViewToDoubleConverter::_getDoubleValue(v.x, s);
179 s = Convert::Impl::_removeLeadingSpaces(s, p);
181 std::cout <<
"VX=" << v.x <<
" remaining_s='" << s <<
"'\n";
182 p = Convert::Impl::StringViewToDoubleConverter::_getDoubleValue(v.y, s);
183 return (p == (-1) || (p != s.size()));
185 return impl::builtInGetValueGeneric(v, s);
188template <> ARCANE_UTILS_EXPORT
bool
189builtInGetValue(Real3& v, StringView s)
191 if (Convert::Impl::ConvertPolicy::isUseSameConvertForAllReal()){
192 s = Convert::Impl::_removeLeadingSpaces(s);
194 const bool is_verbose = Convert::Impl::ConvertPolicy::verbosity() > 0;
196 std::cout <<
"Try Read Real3: '" << s <<
"'\n";
197 Int64 p = Convert::Impl::StringViewToDoubleConverter::_getDoubleValue(v.x, s);
198 if (p == (-1) || (p == s.size()))
200 s = Convert::Impl::_removeLeadingSpaces(s, p);
202 std::cout <<
"VX=" << v.x <<
" remaining_s='" << s <<
"'\n";
203 p = Convert::Impl::StringViewToDoubleConverter::_getDoubleValue(v.y, s);
204 if (p == (-1) || (p == s.size()))
206 s = Convert::Impl::_removeLeadingSpaces(s, p);
208 std::cout <<
"VY=" << v.x <<
" remaining_s='" << s <<
"'\n";
209 p = Convert::Impl::StringViewToDoubleConverter::_getDoubleValue(v.z, s);
210 return (p == (-1) || (p != s.size()));
212 return impl::builtInGetValueGeneric(v, s);
215template <> ARCANE_UTILS_EXPORT
bool
216builtInGetValue(Real2x2& v, StringView s)
218 return impl::builtInGetValueGeneric(v, s);
221template <> ARCANE_UTILS_EXPORT
bool
222builtInGetValue(Real3x3& v, StringView s)
224 return impl::builtInGetValueGeneric(v, s);
227template <> ARCANE_UTILS_EXPORT
bool
228builtInGetValue(Int128& v, StringView s)
234 const char* ptr = _stringViewData(s);
236 v2 = ::strtoll(ptr, &ptr2, 0);
238 return (ptr2 != (ptr + s.length()));
241template <> ARCANE_UTILS_EXPORT
bool
242builtInGetValue(
unsigned long long& v, StringView s)
244 const char* ptr = _stringViewData(s);
246 v = ::strtoull(ptr, &ptr2, 0);
247 return (ptr2 != (ptr + s.length()));
253#ifdef ARCANE_REAL_NOT_BUILTIN
254template <> ARCANE_UTILS_EXPORT
bool
255builtInGetValue(Real& v, StringView s)
259 if (builtInGetValue(vz,s))
262 cout <<
"** CONVERT DOUBLE TO REAL s=" << s <<
" vz=" << vz <<
" v=" << v <<
'\n';
266 if (builtInGetValue(vz, s))
268 v =
Real((
char*)s.localstr(), 1000);
269 cout <<
"** CONVERT DOUBLE TO REAL s=" << s <<
'\n';
278builtInGetValue(String& v, StringView s)
289 bool _builtInGetBoolArrayValue(BoolArray& v, StringView s)
298 if (builtInGetValue(sa, s))
300 for (Integer i = 0, is = sa.size(); i < is; ++i) {
301 bool read_val =
false;
302 if (builtInGetValue(read_val, sa[i]))
310 _builtInGetStringArrayValue(StringArray& v, StringView s)
313 String read_val = String();
314 impl::StringViewInputStream svis(s);
315 std::istream& sbuf = svis.stream();
316 while (!sbuf.eof()) {
323 read_val = StringView(s2.c_str());
330template <> ARCANE_UTILS_EXPORT
bool
331builtInGetValue(RealArray& v, StringView s)
333 return builtInGetArrayValue(v, s);
336template <> ARCANE_UTILS_EXPORT
bool
337builtInGetValue(Real2Array& v, StringView s)
339 return builtInGetArrayValue(v, s);
342template <> ARCANE_UTILS_EXPORT
bool
343builtInGetValue(Real3Array& v, StringView s)
345 return builtInGetArrayValue(v, s);
348template <> ARCANE_UTILS_EXPORT
bool
349builtInGetValue(Real2x2Array& v, StringView s)
351 return builtInGetArrayValue(v, s);
354template <> ARCANE_UTILS_EXPORT
bool
355builtInGetValue(Real3x3Array& v, StringView s)
357 return builtInGetArrayValue(v, s);
360template <> ARCANE_UTILS_EXPORT
bool
361builtInGetValue(Int8Array& v, StringView s)
363 return builtInGetArrayValue(v, s);
366template <> ARCANE_UTILS_EXPORT
bool
367builtInGetValue(Int16Array& v, StringView s)
369 return builtInGetArrayValue(v, s);
372template <> ARCANE_UTILS_EXPORT
bool
373builtInGetValue(Int32Array& v, StringView s)
375 return builtInGetArrayValue(v, s);
378template <> ARCANE_UTILS_EXPORT
bool
379builtInGetValue(Int64Array& v, StringView s)
381 return builtInGetArrayValue(v, s);
384template <> ARCANE_UTILS_EXPORT
bool
385builtInGetValue(BoolArray& v, StringView s)
387 return _builtInGetBoolArrayValue(v, s);
390template <> ARCANE_UTILS_EXPORT
bool
391builtInGetValue(StringArray& v, StringView s)
393 return _builtInGetStringArrayValue(v, s);
399template <> ARCANE_UTILS_EXPORT
bool
400builtInGetValue(RealUniqueArray& v, StringView s)
402 return builtInGetArrayValue(v, s);
405template <> ARCANE_UTILS_EXPORT
bool
406builtInGetValue(Real2UniqueArray& v, StringView s)
408 return builtInGetArrayValue(v, s);
411template <> ARCANE_UTILS_EXPORT
bool
412builtInGetValue(Real3UniqueArray& v, StringView s)
414 return builtInGetArrayValue(v, s);
417template <> ARCANE_UTILS_EXPORT
bool
418builtInGetValue(Real2x2UniqueArray& v, StringView s)
420 return builtInGetArrayValue(v, s);
423template <> ARCANE_UTILS_EXPORT
bool
424builtInGetValue(Real3x3UniqueArray& v, StringView s)
426 return builtInGetArrayValue(v, s);
429template <> ARCANE_UTILS_EXPORT
bool
430builtInGetValue(Int8UniqueArray& v, StringView s)
432 return builtInGetArrayValue(v, s);
435template <> ARCANE_UTILS_EXPORT
bool
436builtInGetValue(Int16UniqueArray& v, StringView s)
438 return builtInGetArrayValue(v, s);
441template <> ARCANE_UTILS_EXPORT
bool
442builtInGetValue(Int32UniqueArray& v, StringView s)
444 return builtInGetArrayValue(v, s);
447template <> ARCANE_UTILS_EXPORT
bool
448builtInGetValue(Int64UniqueArray& v, StringView s)
450 return builtInGetArrayValue(v, s);
453template <> ARCANE_UTILS_EXPORT
bool
454builtInGetValue(BoolUniqueArray& v, StringView s)
456 return _builtInGetBoolArrayValue(v, s);
459template <> ARCANE_UTILS_EXPORT
bool
460builtInGetValue(StringUniqueArray& v, StringView s)
462 return _builtInGetStringArrayValue(v, s);
468template <> ARCANE_UTILS_EXPORT
bool
469builtInGetValue(RealSharedArray& v, StringView s)
471 return builtInGetArrayValue(v, s);
474template <> ARCANE_UTILS_EXPORT
bool
475builtInGetValue(Real2SharedArray& v, StringView s)
477 return builtInGetArrayValue(v, s);
480template <> ARCANE_UTILS_EXPORT
bool
481builtInGetValue(Real3SharedArray& v, StringView s)
483 return builtInGetArrayValue(v, s);
486template <> ARCANE_UTILS_EXPORT
bool
487builtInGetValue(Real2x2SharedArray& v, StringView s)
489 return builtInGetArrayValue(v, s);
492template <> ARCANE_UTILS_EXPORT
bool
493builtInGetValue(Real3x3SharedArray& v, StringView s)
495 return builtInGetArrayValue(v, s);
498template <> ARCANE_UTILS_EXPORT
bool
499builtInGetValue(Int8SharedArray& v, StringView s)
501 return builtInGetArrayValue(v, s);
504template <> ARCANE_UTILS_EXPORT
bool
505builtInGetValue(Int16SharedArray& v, StringView s)
507 return builtInGetArrayValue(v, s);
510template <> ARCANE_UTILS_EXPORT
bool
511builtInGetValue(Int32SharedArray& v, StringView s)
513 return builtInGetArrayValue(v, s);
516template <> ARCANE_UTILS_EXPORT
bool
517builtInGetValue(Int64SharedArray& v, StringView s)
519 return builtInGetArrayValue(v, s);
522template <> ARCANE_UTILS_EXPORT
bool
523builtInGetValue(BoolSharedArray& v, StringView s)
525 return _builtInGetBoolArrayValue(v, s);
528template <> ARCANE_UTILS_EXPORT
bool
529builtInGetValue(StringSharedArray& v, StringView s)
531 return _builtInGetStringArrayValue(v, s);
539 template <
class T>
inline bool
540 _builtInPutValue(
const T& v, String& s)
544 if (ostr().fail() || ostr().bad())
549 template <
class T>
inline bool
550 _builtInPutArrayValue(Span<const T> v, String& s)
553 for (Int64 i = 0, n = v.size(); i < n; ++i) {
558 if (ostr().fail() || ostr().bad())
570 return _builtInPutValue(v, s);
572bool builtInPutValue(
double v, String& s)
574 return _builtInPutValue(v, s);
578 return _builtInPutValue(v, s);
582 return _builtInPutValue(v, s);
586 return _builtInPutValue(v, s);
590 return _builtInPutValue(v, s);
594 return _builtInPutValue(v, s);
598 return _builtInPutValue(v, s);
602 return _builtInPutValue(v, s);
606 return _builtInPutValue(v, s);
610 return _builtInPutValue(v, s);
612#ifdef ARCANE_REAL_NOT_BUILTIN
615 return _builtInPutValue(v, s);
620 return _builtInPutValue(v, s);
624 return _builtInPutValue(v, s);
628 return _builtInPutValue(v, s);
632 return _builtInPutValue(v, s);
637 return _builtInPutArrayValue(v, s);
641 return _builtInPutArrayValue(v, s);
645 return _builtInPutArrayValue(v, s);
649 return _builtInPutArrayValue(v, s);
653 return _builtInPutArrayValue(v, s);
657 return _builtInPutArrayValue(v, s);
661 return _builtInPutArrayValue(v, s);
665 return _builtInPutArrayValue(v, s);
669 return _builtInPutArrayValue(v, s);
673 return _builtInPutArrayValue(v, s);
Vue sur une chaîne de caractères UTF-8.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
bool builtInPutValue(const String &v, String &s)
Converti la valeur v dans la chaîne s.
double Real
Type représentant un réel.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.