30 #ifndef _LOCALE_FACETS_TCC 31 #define _LOCALE_FACETS_TCC 1 33 #pragma GCC system_header 35 namespace std _GLIBCXX_VISIBILITY(default)
37 _GLIBCXX_BEGIN_NAMESPACE_VERSION
41 template<
typename _Facet>
45 operator() (
const locale& __loc)
const;
49 template<
typename _CharT>
50 struct __use_cache<__numpunct_cache<_CharT> >
52 const __numpunct_cache<_CharT>*
53 operator() (
const locale& __loc)
const 56 const locale::facet** __caches = __loc._M_impl->_M_caches;
59 __numpunct_cache<_CharT>* __tmp = 0;
62 __tmp =
new __numpunct_cache<_CharT>;
63 __tmp->_M_cache(__loc);
68 __throw_exception_again;
70 __loc._M_impl->_M_install_cache(__tmp, __i);
72 return static_cast<const __numpunct_cache<_CharT>*
>(__caches[__i]);
76 template<
typename _CharT>
78 __numpunct_cache<_CharT>::_M_cache(
const locale& __loc)
80 const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
83 _CharT* __truename = 0;
84 _CharT* __falsename = 0;
87 const string& __g = __np.grouping();
88 _M_grouping_size = __g.size();
89 __grouping =
new char[_M_grouping_size];
90 __g.copy(__grouping, _M_grouping_size);
91 _M_use_grouping = (_M_grouping_size
92 &&
static_cast<signed char>(__grouping[0]) > 0
94 != __gnu_cxx::__numeric_traits<char>::__max));
96 const basic_string<_CharT>& __tn = __np.truename();
97 _M_truename_size = __tn.size();
98 __truename =
new _CharT[_M_truename_size];
99 __tn.copy(__truename, _M_truename_size);
101 const basic_string<_CharT>& __fn = __np.falsename();
102 _M_falsename_size = __fn.size();
103 __falsename =
new _CharT[_M_falsename_size];
104 __fn.copy(__falsename, _M_falsename_size);
106 _M_decimal_point = __np.decimal_point();
107 _M_thousands_sep = __np.thousands_sep();
109 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
110 __ct.widen(__num_base::_S_atoms_out,
111 __num_base::_S_atoms_out
112 + __num_base::_S_oend, _M_atoms_out);
113 __ct.widen(__num_base::_S_atoms_in,
114 __num_base::_S_atoms_in
115 + __num_base::_S_iend, _M_atoms_in);
117 _M_grouping = __grouping;
118 _M_truename = __truename;
119 _M_falsename = __falsename;
124 delete [] __grouping;
125 delete [] __truename;
126 delete [] __falsename;
127 __throw_exception_again;
140 __verify_grouping(
const char* __grouping,
size_t __grouping_size,
141 const string& __grouping_tmp)
throw ();
143 _GLIBCXX_BEGIN_NAMESPACE_LDBL
145 template<
typename _CharT,
typename _InIter>
146 _GLIBCXX_DEFAULT_ABI_TAG
148 num_get<_CharT, _InIter>::
149 _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
152 typedef char_traits<_CharT> __traits_type;
153 typedef __numpunct_cache<_CharT> __cache_type;
154 __use_cache<__cache_type> __uc;
155 const locale& __loc = __io._M_getloc();
156 const __cache_type* __lc = __uc(__loc);
157 const _CharT* __lit = __lc->_M_atoms_in;
158 char_type __c = char_type();
161 bool __testeof = __beg == __end;
167 const bool __plus = __c == __lit[__num_base::_S_iplus];
168 if ((__plus || __c == __lit[__num_base::_S_iminus])
169 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
170 && !(__c == __lc->_M_decimal_point))
172 __xtrc += __plus ?
'+' :
'-';
173 if (++__beg != __end)
181 bool __found_mantissa =
false;
185 if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
186 || __c == __lc->_M_decimal_point)
188 else if (__c == __lit[__num_base::_S_izero])
190 if (!__found_mantissa)
193 __found_mantissa =
true;
197 if (++__beg != __end)
207 bool __found_dec =
false;
208 bool __found_sci =
false;
209 string __found_grouping;
210 if (__lc->_M_use_grouping)
211 __found_grouping.reserve(32);
212 const char_type* __lit_zero = __lit + __num_base::_S_izero;
214 if (!__lc->_M_allocated)
218 const int __digit = _M_find(__lit_zero, 10, __c);
221 __xtrc +=
'0' + __digit;
222 __found_mantissa =
true;
224 else if (__c == __lc->_M_decimal_point
225 && !__found_dec && !__found_sci)
230 else if ((__c == __lit[__num_base::_S_ie]
231 || __c == __lit[__num_base::_S_iE])
232 && !__found_sci && __found_mantissa)
239 if (++__beg != __end)
242 const bool __plus = __c == __lit[__num_base::_S_iplus];
243 if (__plus || __c == __lit[__num_base::_S_iminus])
244 __xtrc += __plus ?
'+' :
'-';
257 if (++__beg != __end)
267 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
269 if (!__found_dec && !__found_sci)
275 __found_grouping +=
static_cast<char>(__sep_pos);
289 else if (__c == __lc->_M_decimal_point)
291 if (!__found_dec && !__found_sci)
296 if (__found_grouping.size())
297 __found_grouping += static_cast<char>(__sep_pos);
306 const char_type* __q =
307 __traits_type::find(__lit_zero, 10, __c);
310 __xtrc +=
'0' + (__q - __lit_zero);
311 __found_mantissa =
true;
314 else if ((__c == __lit[__num_base::_S_ie]
315 || __c == __lit[__num_base::_S_iE])
316 && !__found_sci && __found_mantissa)
319 if (__found_grouping.size() && !__found_dec)
320 __found_grouping += static_cast<char>(__sep_pos);
325 if (++__beg != __end)
328 const bool __plus = __c == __lit[__num_base::_S_iplus];
329 if ((__plus || __c == __lit[__num_base::_S_iminus])
330 && !(__lc->_M_use_grouping
331 && __c == __lc->_M_thousands_sep)
332 && !(__c == __lc->_M_decimal_point))
333 __xtrc += __plus ?
'+' :
'-';
347 if (++__beg != __end)
355 if (__found_grouping.size())
358 if (!__found_dec && !__found_sci)
359 __found_grouping +=
static_cast<char>(__sep_pos);
361 if (!std::__verify_grouping(__lc->_M_grouping,
362 __lc->_M_grouping_size,
370 template<
typename _CharT,
typename _InIter>
371 template<
typename _ValueT>
372 _GLIBCXX_DEFAULT_ABI_TAG
374 num_get<_CharT, _InIter>::
375 _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
378 typedef char_traits<_CharT> __traits_type;
379 using __gnu_cxx::__add_unsigned;
380 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
381 typedef __numpunct_cache<_CharT> __cache_type;
382 __use_cache<__cache_type> __uc;
383 const locale& __loc = __io._M_getloc();
384 const __cache_type* __lc = __uc(__loc);
385 const _CharT* __lit = __lc->_M_atoms_in;
386 char_type __c = char_type();
395 bool __testeof = __beg == __end;
398 bool __negative =
false;
402 __negative = __c == __lit[__num_base::_S_iminus];
403 if ((__negative || __c == __lit[__num_base::_S_iplus])
404 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
405 && !(__c == __lc->_M_decimal_point))
407 if (++__beg != __end)
416 bool __found_zero =
false;
420 if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
421 || __c == __lc->_M_decimal_point)
423 else if (__c == __lit[__num_base::_S_izero]
424 && (!__found_zero || __base == 10))
428 if (__basefield == 0)
433 else if (__found_zero
434 && (__c == __lit[__num_base::_S_ix]
435 || __c == __lit[__num_base::_S_iX]))
437 if (__basefield == 0)
441 __found_zero =
false;
450 if (++__beg != __end)
462 const size_t __len = (__base == 16 ? __num_base::_S_iend
463 - __num_base::_S_izero :
__base);
466 string __found_grouping;
467 if (__lc->_M_use_grouping)
468 __found_grouping.reserve(32);
469 bool __testfail =
false;
470 bool __testoverflow =
false;
471 const __unsigned_type __max =
472 (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
473 ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
474 : __gnu_cxx::__numeric_traits<_ValueT>::__max;
475 const __unsigned_type __smax = __max /
__base;
476 __unsigned_type __result = 0;
478 const char_type* __lit_zero = __lit + __num_base::_S_izero;
480 if (!__lc->_M_allocated)
484 __digit = _M_find(__lit_zero, __len, __c);
488 if (__result > __smax)
489 __testoverflow =
true;
493 __testoverflow |= __result > __max - __digit;
498 if (++__beg != __end)
508 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
514 __found_grouping +=
static_cast<char>(__sep_pos);
523 else if (__c == __lc->_M_decimal_point)
527 const char_type* __q =
528 __traits_type::find(__lit_zero, __len, __c);
532 __digit = __q - __lit_zero;
535 if (__result > __smax)
536 __testoverflow =
true;
540 __testoverflow |= __result > __max - __digit;
546 if (++__beg != __end)
554 if (__found_grouping.size())
557 __found_grouping +=
static_cast<char>(__sep_pos);
559 if (!std::__verify_grouping(__lc->_M_grouping,
560 __lc->_M_grouping_size,
567 if ((!__sep_pos && !__found_zero && !__found_grouping.size())
573 else if (__testoverflow)
576 && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
577 __v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
579 __v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
583 __v = __negative ? -__result : __result;
592 template<
typename _CharT,
typename _InIter>
596 ios_base::iostate& __err,
bool& __v)
const 604 __beg = _M_extract_int(__beg, __end, __io, __err, __l);
605 if (__l == 0 || __l == 1)
620 typedef __numpunct_cache<_CharT> __cache_type;
621 __use_cache<__cache_type> __uc;
623 const __cache_type* __lc = __uc(__loc);
627 bool __donef = __lc->_M_falsename_size == 0;
628 bool __donet = __lc->_M_truename_size == 0;
629 bool __testeof =
false;
631 while (!__donef || !__donet)
642 __testf = __c == __lc->_M_falsename[__n];
644 if (!__testf && __donet)
648 __testt = __c == __lc->_M_truename[__n];
650 if (!__testt && __donef)
653 if (!__testt && !__testf)
659 __donef = !__testf || __n >= __lc->_M_falsename_size;
660 __donet = !__testt || __n >= __lc->_M_truename_size;
662 if (__testf && __n == __lc->_M_falsename_size && __n)
665 if (__testt && __n == __lc->_M_truename_size)
670 else if (__testt && __n == __lc->_M_truename_size && __n)
688 template<
typename _CharT,
typename _InIter>
692 ios_base::iostate& __err,
float& __v)
const 696 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
697 std::__convert_to_v(__xtrc.
c_str(), __v, __err, _S_get_c_locale());
703 template<
typename _CharT,
typename _InIter>
707 ios_base::iostate& __err,
double& __v)
const 711 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
712 std::__convert_to_v(__xtrc.
c_str(), __v, __err, _S_get_c_locale());
718 #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ 719 template<
typename _CharT,
typename _InIter>
723 ios_base::iostate& __err,
double& __v)
const 727 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
728 std::__convert_to_v(__xtrc.
c_str(), __v, __err, _S_get_c_locale());
735 template<
typename _CharT,
typename _InIter>
739 ios_base::iostate& __err,
long double& __v)
const 743 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
744 std::__convert_to_v(__xtrc.
c_str(), __v, __err, _S_get_c_locale());
750 template<
typename _CharT,
typename _InIter>
754 ios_base::iostate& __err,
void*& __v)
const 757 typedef ios_base::fmtflags fmtflags;
758 const fmtflags __fmt = __io.
flags();
761 typedef __gnu_cxx::__conditional_type<(
sizeof(
void*)
762 <=
sizeof(
unsigned long)),
763 unsigned long,
unsigned long long>::__type _UIntPtrType;
766 __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
771 __v =
reinterpret_cast<void*
>(__ul);
777 template<
typename _CharT,
typename _OutIter>
781 _CharT* __new,
const _CharT* __cs,
int& __len)
const 785 __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
787 __len =
static_cast<int>(__w);
790 _GLIBCXX_END_NAMESPACE_LDBL
792 template<
typename _CharT,
typename _ValueT>
794 __int_to_char(_CharT* __bufend, _ValueT __v,
const _CharT* __lit,
795 ios_base::fmtflags __flags,
bool __dec)
797 _CharT* __buf = __bufend;
798 if (__builtin_expect(__dec,
true))
803 *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
813 *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
822 const int __case_offset = __uppercase ? __num_base::_S_oudigits
823 : __num_base::_S_odigits;
826 *--__buf = __lit[(__v & 0xf) + __case_offset];
831 return __bufend - __buf;
834 _GLIBCXX_BEGIN_NAMESPACE_LDBL
836 template<
typename _CharT,
typename _OutIter>
839 _M_group_int(
const char* __grouping,
size_t __grouping_size, _CharT __sep,
840 ios_base&, _CharT* __new, _CharT* __cs,
int& __len)
const 842 _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
843 __grouping_size, __cs, __cs + __len);
847 template<
typename _CharT,
typename _OutIter>
848 template<
typename _ValueT>
854 using __gnu_cxx::__add_unsigned;
855 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
856 typedef __numpunct_cache<_CharT> __cache_type;
857 __use_cache<__cache_type> __uc;
859 const __cache_type* __lc = __uc(__loc);
860 const _CharT* __lit = __lc->_M_atoms_out;
861 const ios_base::fmtflags __flags = __io.
flags();
864 const int __ilen = 5 *
sizeof(_ValueT);
865 _CharT* __cs =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
873 const __unsigned_type __u = ((__v > 0 || !__dec)
874 ? __unsigned_type(__v)
875 : -__unsigned_type(__v));
876 int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
877 __cs += __ilen - __len;
880 if (__lc->_M_use_grouping)
884 _CharT* __cs2 =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
887 _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
888 __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
893 if (__builtin_expect(__dec,
true))
899 && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
900 *--__cs = __lit[__num_base::_S_oplus], ++__len;
903 *--__cs = __lit[__num_base::_S_ominus], ++__len;
908 *--__cs = __lit[__num_base::_S_odigits], ++__len;
913 *--__cs = __lit[__num_base::_S_ox + __uppercase];
915 *--__cs = __lit[__num_base::_S_odigits];
922 if (__w > static_cast<streamsize>(__len))
924 _CharT* __cs3 =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
926 _M_pad(__fill, __w, __io, __cs3, __cs, __len);
933 return std::__write(__s, __cs, __len);
936 template<
typename _CharT,
typename _OutIter>
940 _CharT __sep,
const _CharT* __p, _CharT* __new,
941 _CharT* __cs,
int& __len)
const 946 const int __declen = __p ? __p - __cs : __len;
947 _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
949 __cs, __cs + __declen);
952 int __newlen = __p2 - __new;
956 __newlen += __len - __declen;
971 template<
typename _CharT,
typename _OutIter>
972 template<
typename _ValueT>
978 typedef __numpunct_cache<_CharT> __cache_type;
979 __use_cache<__cache_type> __uc;
981 const __cache_type* __lc = __uc(__loc);
986 const int __max_digits =
987 __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
993 __num_base::_S_format_float(__io, __fbuf, __mod);
995 #ifdef _GLIBCXX_USE_C99 997 const bool __use_prec =
1002 int __cs_size = __max_digits * 3;
1003 char* __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
1005 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
1006 __fbuf, __prec, __v);
1008 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
1012 if (__len >= __cs_size)
1014 __cs_size = __len + 1;
1015 __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
1017 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
1018 __fbuf, __prec, __v);
1020 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
1026 const int __max_exp =
1027 __gnu_cxx::__numeric_traits<_ValueT>::__max_exponent10;
1035 const int __cs_size = __fixed ? __max_exp + __prec + 4
1036 : __max_digits * 2 + __prec;
1037 char* __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
1038 __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf,
1044 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
1046 _CharT* __ws =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
1048 __ctype.
widen(__cs, __cs + __len, __ws);
1055 __wp = __ws + (__p - __cs);
1056 *__wp = __lc->_M_decimal_point;
1062 if (__lc->_M_use_grouping
1063 && (__wp || __len < 3 || (__cs[1] <=
'9' && __cs[2] <=
'9' 1064 && __cs[1] >=
'0' && __cs[2] >=
'0')))
1068 _CharT* __ws2 =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
1072 if (__cs[0] ==
'-' || __cs[0] ==
'+')
1079 _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
1080 __lc->_M_thousands_sep, __wp, __ws2 + __off,
1081 __ws + __off, __len);
1089 if (__w > static_cast<streamsize>(__len))
1091 _CharT* __ws3 =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
1093 _M_pad(__fill, __w, __io, __ws3, __ws, __len);
1100 return std::__write(__s, __ws, __len);
1103 template<
typename _CharT,
typename _OutIter>
1108 const ios_base::fmtflags __flags = __io.
flags();
1111 const long __l = __v;
1112 __s = _M_insert_int(__s, __io, __fill, __l);
1116 typedef __numpunct_cache<_CharT> __cache_type;
1117 __use_cache<__cache_type> __uc;
1119 const __cache_type* __lc = __uc(__loc);
1121 const _CharT* __name = __v ? __lc->_M_truename
1122 : __lc->_M_falsename;
1123 int __len = __v ? __lc->_M_truename_size
1124 : __lc->_M_falsename_size;
1127 if (__w > static_cast<streamsize>(__len))
1131 =
static_cast<_CharT*
>(__builtin_alloca(
sizeof(_CharT)
1139 __s = std::__write(__s, __name, __len);
1140 __s = std::__write(__s, __ps, __plen);
1144 __s = std::__write(__s, __ps, __plen);
1145 __s = std::__write(__s, __name, __len);
1150 __s = std::__write(__s, __name, __len);
1155 template<
typename _CharT,
typename _OutIter>
1159 {
return _M_insert_float(__s, __io, __fill,
char(), __v); }
1161 #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ 1162 template<
typename _CharT,
typename _OutIter>
1166 {
return _M_insert_float(__s, __io, __fill,
char(), __v); }
1169 template<
typename _CharT,
typename _OutIter>
1173 long double __v)
const 1174 {
return _M_insert_float(__s, __io, __fill,
'L', __v); }
1176 template<
typename _CharT,
typename _OutIter>
1180 const void* __v)
const 1182 const ios_base::fmtflags __flags = __io.
flags();
1187 typedef __gnu_cxx::__conditional_type<(
sizeof(
const void*)
1188 <=
sizeof(
unsigned long)),
1189 unsigned long,
unsigned long long>::__type _UIntPtrType;
1191 __s = _M_insert_int(__s, __io, __fill,
1192 reinterpret_cast<_UIntPtrType>(__v));
1193 __io.
flags(__flags);
1197 _GLIBCXX_END_NAMESPACE_LDBL
1206 template<
typename _CharT,
typename _Traits>
1208 __pad<_CharT, _Traits>::_S_pad(
ios_base& __io, _CharT __fill,
1209 _CharT* __news,
const _CharT* __olds,
1212 const size_t __plen =
static_cast<size_t>(__newlen - __oldlen);
1218 _Traits::copy(__news, __olds, __oldlen);
1219 _Traits::assign(__news + __oldlen, __plen, __fill);
1230 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
1232 if (__ctype.
widen(
'-') == __olds[0]
1233 || __ctype.
widen(
'+') == __olds[0])
1235 __news[0] = __olds[0];
1239 else if (__ctype.
widen(
'0') == __olds[0]
1241 && (__ctype.
widen(
'x') == __olds[1]
1242 || __ctype.
widen(
'X') == __olds[1]))
1244 __news[0] = __olds[0];
1245 __news[1] = __olds[1];
1251 _Traits::assign(__news, __plen, __fill);
1252 _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
1255 template<
typename _CharT>
1257 __add_grouping(_CharT* __s, _CharT __sep,
1258 const char* __gbeg,
size_t __gsize,
1259 const _CharT* __first,
const _CharT* __last)
1264 while (__last - __first > __gbeg[__idx]
1265 && static_cast<signed char>(__gbeg[__idx]) > 0
1266 && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
1268 __last -= __gbeg[__idx];
1269 __idx < __gsize - 1 ? ++__idx : ++__ctr;
1272 while (__first != __last)
1273 *__s++ = *__first++;
1278 for (
char __i = __gbeg[__idx]; __i > 0; --__i)
1279 *__s++ = *__first++;
1285 for (
char __i = __gbeg[__idx]; __i > 0; --__i)
1286 *__s++ = *__first++;
1294 #if _GLIBCXX_EXTERN_TEMPLATE 1297 extern template class _GLIBCXX_NAMESPACE_LDBL
num_get<char>;
1298 extern template class _GLIBCXX_NAMESPACE_LDBL
num_put<char>;
1303 use_facet<ctype<char> >(
const locale&);
1306 const numpunct<char>&
1307 use_facet<numpunct<char> >(
const locale&);
1310 const num_put<char>&
1311 use_facet<num_put<char> >(
const locale&);
1314 const num_get<char>&
1315 use_facet<num_get<char> >(
const locale&);
1319 has_facet<ctype<char> >(
const locale&);
1323 has_facet<numpunct<char> >(
const locale&);
1327 has_facet<num_put<char> >(
const locale&);
1331 has_facet<num_get<char> >(
const locale&);
1333 #ifdef _GLIBCXX_USE_WCHAR_T 1342 use_facet<ctype<wchar_t> >(
const locale&);
1345 const numpunct<wchar_t>&
1346 use_facet<numpunct<wchar_t> >(
const locale&);
1349 const num_put<wchar_t>&
1350 use_facet<num_put<wchar_t> >(
const locale&);
1353 const num_get<wchar_t>&
1354 use_facet<num_get<wchar_t> >(
const locale&);
1358 has_facet<ctype<wchar_t> >(
const locale&);
1362 has_facet<numpunct<wchar_t> >(
const locale&);
1366 has_facet<num_put<wchar_t> >(
const locale&);
1370 has_facet<num_get<wchar_t> >(
const locale&);
1374 _GLIBCXX_END_NAMESPACE_VERSION
_Ios_Fmtflags fmtflags
This is a bitmask type.
virtual iter_type do_get(iter_type, iter_type, ios_base &, ios_base::iostate &, bool &) const
Numeric parsing.
static const fmtflags left
Adds fill characters on the right (final positions) of certain generated output. (I.e., the thing you print is flush left.)
22.2.1.4 Class ctype_byname specializations.
static const fmtflags showbase
Generates a prefix indicating the numeric base of generated integer output.
Basis for explicit traits specializations.
virtual iter_type do_put(iter_type __s, ios_base &__io, char_type __fill, bool __v) const
Numeric formatting.
The ctype<wchar_t> specialization.This class defines classification and conversion functions for the ...
fmtflags flags() const
Access to format flags.
_CharT char_type
Public typedefs.
_Ios_Iostate iostate
This is a bitmask type.
Primary class template num_get.This facet encapsulates the code to parse and return a number from a s...
streamsize precision() const
Flags access.
ptrdiff_t streamsize
Integral type for I/O operation counts and buffer sizes.
const locale & _M_getloc() const
Locale access.
class numpunct_byname [22.2.3.2].
The ctype<char> specialization.This class defines classification and conversion functions for the cha...
static locale::id id
Numpunct facet id.
class ctype_byname [22.2.1.2].
streamsize width() const
Flags access.
The base of the I/O class hierarchy.This class defines everything that can be defined about I/O that ...
static const iostate failbit
Indicates that an input operation failed to read the expected characters, or that an output operation...
static const fmtflags internal
Adds fill characters at a designated internal point in certain generated output, or identical to righ...
Primary class template numpunct.This facet stores several pieces of information related to printing a...
void reserve(size_type __res_arg=0)
Attempt to preallocate enough memory for specified number of characters.
static const fmtflags basefield
A mask of dec|oct|hex. Useful for the 2-arg form of setf.
_CharT char_type
Public typedefs.
static const fmtflags floatfield
A mask of scientific|fixed. Useful for the 2-arg form of setf.
static const fmtflags showpos
Generates a + sign in non-negative generated numeric output.
static const fmtflags hex
Converts integer input or generates integer output in hexadecimal base.
const _CharT * c_str() const noexcept
Return const pointer to null-terminated contents.
static const iostate goodbit
Indicates all is well.
static const fmtflags fixed
Generate floating-point output in fixed-point notation.
char_type widen(char __c) const
Widen char to char_type.
_InIter iter_type
Public typedefs.
Primary class template ctype facet.This template class defines classification and conversion function...
_Siter_base< _Iterator >::iterator_type __base(_Iterator __it)
_OutIter iter_type
Public typedefs.
static const fmtflags boolalpha
Insert/extract bool in alphabetic rather than numeric format.
Container class for localization functionality.The locale class is first a class wrapper for C librar...
static const fmtflags uppercase
Replaces certain lowercase letters with their uppercase equivalents in generated output.
ISO C++ entities toplevel namespace is std.
Primary class template num_put.This facet encapsulates the code to convert a number to a string...
static const fmtflags adjustfield
A mask of left|right|internal. Useful for the 2-arg form of setf.
static const fmtflags oct
Converts integer input or generates integer output in octal base.
static const iostate eofbit
Indicates that an input operation reached the end of an input sequence.