30#ifndef _LOCALE_FACETS_NONIO_TCC
31#define _LOCALE_FACETS_NONIO_TCC 1
34#pragma GCC system_header
41 template<
typename _CharT,
bool _Intl>
69 template<
typename _CharT,
bool _Intl>
83 : _M_len(__str.
size()), _M_str(
new _CharT[_M_len])
84 { __str.
copy(_M_str, _M_len); }
86 ~_Scoped_str() {
delete[] _M_str; }
89 _M_release(
const _CharT*& __p,
size_t& __n)
101 const string& __g = __mp.
grouping();
102 const size_t __g_size = __g.
size();
103 char*
const __grouping =
new char[__g_size];
104 __g.
copy(__grouping, __g_size);
111 &&
static_cast<signed char>(__grouping[0]) > 0
135 template<
typename _CharT,
typename _InIter>
151 const __cache_type* __lc = __uc(__loc);
155 bool __negative =
false;
159 const bool __mandatory_sign = (__lc->_M_positive_sign_size
160 && __lc->_M_negative_sign_size);
162 string __grouping_tmp;
163 if (__lc->_M_use_grouping)
170 bool __testvalid =
true;
172 bool __testdecfound =
false;
180 for (
int __i = 0; __i < 4 && __testvalid; ++__i)
182 const part __which =
static_cast<part
>(__p.
field[__i]);
192 || (__i == 1 && (__mandatory_sign
193 || (
static_cast<part
>(__p.
field[0])
195 || (
static_cast<part
>(__p.
field[2])
197 || (__i == 2 && ((
static_cast<part
>(__p.
field[3])
200 && (
static_cast<part
>(__p.
field[3])
203 const size_type __len = __lc->_M_curr_symbol_size;
205 for (; __beg != __end && __j < __len
206 && *__beg == __lc->_M_curr_symbol[__j];
207 ++__beg, (void)++__j);
215 if (__lc->_M_positive_sign_size && __beg != __end
216 && *__beg == __lc->_M_positive_sign[0])
218 __sign_size = __lc->_M_positive_sign_size;
221 else if (__lc->_M_negative_sign_size && __beg != __end
222 && *__beg == __lc->_M_negative_sign[0])
225 __sign_size = __lc->_M_negative_sign_size;
228 else if (__lc->_M_positive_sign_size
229 && !__lc->_M_negative_sign_size)
233 else if (__mandatory_sign)
239 for (; __beg != __end; ++__beg)
242 const char_type* __q = __traits_type::find(__lit_zero,
249 else if (__c == __lc->_M_decimal_point
252 if (__lc->_M_frac_digits <= 0)
257 __testdecfound =
true;
259 else if (__lc->_M_use_grouping
260 && __c == __lc->_M_thousands_sep
266 __grouping_tmp +=
static_cast<char>(__n);
291 for (; __beg != __end
298 if (__sign_size > 1 && __testvalid)
300 const char_type* __sign = __negative ? __lc->_M_negative_sign
301 : __lc->_M_positive_sign;
303 for (; __beg != __end && __i < __sign_size
304 && *__beg == __sign[__i]; ++__beg, (void)++__i);
306 if (__i != __sign_size)
313 if (__res.
size() > 1)
318 __res.
erase(0, __only_zeros ? __res.
size() - 1 : __first);
322 if (__negative && __res[0] !=
'0')
326 if (__grouping_tmp.
size())
329 __grouping_tmp +=
static_cast<char>(__testdecfound ? __last_pos
332 __lc->_M_grouping_size,
338 if (__testdecfound && __n != __lc->_M_frac_digits)
354#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
355 && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
356 template<
typename _CharT,
typename _InIter>
363 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
364 : _M_extract<false>(__beg, __end, __io, __err, __str);
370 template<
typename _CharT,
typename _InIter>
383 template<
typename _CharT,
typename _InIter>
401 __ctype.
widen(__str.data(), __str.data() + __len, &
__digits[0]);
406#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \
407 && defined __LONG_DOUBLE_IEEE128__
408 template<
typename _CharT,
typename _InIter>
415 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
416 : _M_extract<false>(__beg, __end, __io, __err, __str);
422 template<
typename _CharT,
typename _OutIter>
437 const __cache_type* __lc = __uc(__loc);
449 __p = __lc->_M_pos_format;
450 __sign = __lc->_M_positive_sign;
451 __sign_size = __lc->_M_positive_sign_size;
455 __p = __lc->_M_neg_format;
456 __sign = __lc->_M_negative_sign;
457 __sign_size = __lc->_M_negative_sign_size;
475 long __paddec = __len - __lc->_M_frac_digits;
478 if (__lc->_M_frac_digits < 0)
480 if (__lc->_M_grouping_size)
486 __lc->_M_grouping_size,
487 __beg, __beg + __paddec);
488 __value.
erase(__vend - &__value[0]);
491 __value.
assign(__beg, __paddec);
495 if (__lc->_M_frac_digits > 0)
497 __value += __lc->_M_decimal_point;
499 __value.
append(__beg + __paddec, __lc->_M_frac_digits);
504 __value.
append(__beg, __len);
511 __len = __value.
size() + __sign_size;
513 ? __lc->_M_curr_symbol_size : 0);
522 for (
int __i = 0; __i < 4; ++__i)
524 const part __which =
static_cast<part
>(__p.
field[__i]);
529 __res.
append(__lc->_M_curr_symbol,
530 __lc->_M_curr_symbol_size);
547 __res.
append(__width - __len, __fill);
553 __res.
append(__width - __len, __fill);
560 __res.
append(__sign + 1, __sign_size - 1);
563 __len = __res.
size();
568 __res.
append(__width - __len, __fill);
571 __res.
insert(0, __width - __len, __fill);
582#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
583 && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
584 template<
typename _CharT,
typename _OutIter>
588 double __units)
const
589 {
return this->do_put(__s, __intl, __io, __fill, (
long double) __units); }
592 template<
typename _CharT,
typename _OutIter>
596 long double __units)
const
600#if _GLIBCXX_USE_C99_STDIO
603 char* __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
607 "%.*Lf", 0, __units);
609 if (__len >= __cs_size)
611 __cs_size = __len + 1;
612 __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
614 "%.*Lf", 0, __units);
618 const int __cs_size =
620 char* __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
630 template<
typename _CharT,
typename _OutIter>
638#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \
639 && defined __LONG_DOUBLE_IEEE128__
647__glibcxx_snprintfibm128(
char*,
size_t,
const char*, ...) __asm__(
"snprintf");
649 template<typename _CharT, typename _OutIter>
652 __do_put(iter_type __s,
bool __intl,
ios_base& __io, char_type __fill,
653 __ibm128 __units)
const
655 const locale __loc = __io.getloc();
659 char* __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
660 const __c_locale __old = __gnu_cxx::__uselocale(_S_get_c_locale());
664 int __len = __glibcxx_snprintfibm128(__cs, __cs_size,
"%.*Lf", 0,
667 if (__len >= __cs_size)
669 __cs_size = __len + 1;
670 __cs =
static_cast<char*
>(__builtin_alloca(__cs_size));
671 __len = __glibcxx_snprintfibm128(__cs, __cs_size,
"%.*Lf", 0,
674 __gnu_cxx::__uselocale(__old);
675 string_type __digits(__len, char_type());
676 __ctype.
widen(__cs, __cs + __len, &__digits[0]);
677 return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
678 : _M_insert<false>(__s, __io, __fill, __digits);
687 template<
typename _CharT,
typename _InIter>
694 template<
typename _CharT,
typename _InIter>
699 const _CharT* __format,
709 for (; __beg != __end && __i < __len && !__tmperr; ++__i)
711 if (__ctype.narrow(__format[__i], 0) ==
'%')
714 char __c = __ctype.narrow(__format[++__i], 0);
716 if (__c ==
'E' || __c ==
'O')
717 __c = __ctype.narrow(__format[++__i], 0);
732 __tm->tm_wday = __mem % 7;
744 __months, 24, __io, __tmperr);
747 __tm->tm_mon = __mem % 12;
757 __tm, __dt[0], __state);
781 __tm->tm_mday = __mem;
789 __ctype.widen(__cs, __cs + 9, __wcs);
791 __tm, __wcs, __state);
801 __tm->tm_hour = __mem;
811 __tm->tm_hour = __mem % 12;
821 __tm->tm_yday = __mem - 1;
831 __tm->tm_mon = __mem - 1;
840 __tm->tm_min = __mem;
844 while (__beg != __end
852 if (!__ampm[0][0] || !__ampm[1][0])
856 if (!__tmperr && __mem)
864 __tm, __ampm_format, __state);
869 __ctype.widen(__cs, __cs + 6, __wcs);
871 __tm, __wcs, __state);
883 __tm->tm_sec = __mem;
888 __ctype.widen(__cs, __cs + 9, __wcs);
890 __tm, __wcs, __state);
908 __tm->tm_wday = __mem;
927 __tm, __dates[0], __state);
934 __tm, __times[0], __state);
948 __c = __ctype.narrow(*__beg,
'*');
949 if (__c >=
'0' && __c <=
'9')
952 __mem = __mem * 10 + (__c -
'0');
955 __c = __ctype.narrow(*__beg,
'*');
956 if (__c >=
'0' && __c <=
'9')
959 __mem = __mem * 10 + (__c -
'0');
969 __tm->tm_year = __mem;
978 __tm->tm_year = __mem - 1900;
993 if (__beg != __end && !__tmperr && __tmp == 0
994 && (*__beg == __ctype.widen(
'-')
995 || *__beg == __ctype.widen(
'+')))
1007 if (*__beg == __ctype.widen(
'%'))
1020 while (__beg != __end
1028 if (__ctype.tolower(__format[__i]) == __ctype.tolower(*__beg)
1029 || __ctype.toupper(__format[__i]) == __ctype.toupper(*__beg))
1036 if (__tmperr || __i != __len)
1042 template<
typename _CharT,
typename _InIter>
1047 const _CharT* __format)
const
1054 template<
typename _CharT,
typename _InIter>
1058 int __min,
int __max,
size_t __len,
1066 for (; __beg != __end && __i < __len; ++__beg, (void)++__i)
1068 const char __c = __ctype.
narrow(*__beg,
'*');
1069 if (__c >=
'0' && __c <=
'9')
1071 __value = __value * 10 + (__c -
'0');
1072 if (__value > __max)
1078 if (__i && __value >= __min && __value <= __max)
1091 template<
typename _CharT,
typename _InIter>
1095 const _CharT** __names,
size_t __indexlen,
1103 =
static_cast<size_t*
>(__builtin_alloca(2 *
sizeof(
size_t)
1105 size_t* __lengths = __matches + __indexlen;
1106 size_t __nmatches = 0;
1108 bool __testvalid =
true;
1110 bool __begupdated =
false;
1119 for (
size_t __i1 = 0; __i1 < __indexlen; ++__i1)
1120 if (__cl == __ctype.
tolower(__names[__i1][0])
1121 || __cu == __ctype.
toupper(__names[__i1][0]))
1123 __lengths[__nmatches]
1124 = __traits_type::length(__names[__i1]);
1125 __matches[__nmatches++] = __i1;
1129 while (__nmatches > 1)
1132 size_t __minlen = __lengths[0];
1133 for (
size_t __i2 = 1; __i2 < __nmatches; ++__i2)
1134 __minlen =
std::min(__minlen, __lengths[__i2]);
1137 if (__pos == __minlen)
1145 bool __match_longer =
false;
1152 for (
size_t __i3 = 0; __i3 < __nmatches; ++__i3)
1154 __name = __names[__matches[__i3]];
1155 if (__lengths[__i3] > __pos
1156 && (__ctype.
tolower(__name[__pos]) == __cl
1157 || __ctype.
toupper(__name[__pos]) == __cu))
1159 __match_longer =
true;
1164 for (
size_t __i4 = 0; __i4 < __nmatches;)
1165 if (__match_longer == (__lengths[__i4] == __pos))
1167 __matches[__i4] = __matches[--__nmatches];
1168 __lengths[__i4] = __lengths[__nmatches];
1174 __minlen = __lengths[0];
1175 for (
size_t __i5 = 1; __i5 < __nmatches; ++__i5)
1176 __minlen =
std::min(__minlen, __lengths[__i5]);
1182 if (__nmatches == 2 && (__indexlen & 1) == 0)
1184 if (__matches[0] < __indexlen / 2)
1186 if (__matches[1] == __matches[0] + __indexlen / 2)
1189 else if (__matches[1] == __matches[0] - __indexlen / 2)
1191 __matches[0] = __matches[1];
1192 __lengths[0] = __lengths[1];
1196 __begupdated =
true;
1200 if (__pos < __minlen && __beg != __end)
1205 for (
size_t __i6 = 0; __i6 < __nmatches;)
1207 __name = __names[__matches[__i6]];
1208 if (__ctype.
tolower(__name[__pos]) != __cl
1209 && __ctype.
toupper(__name[__pos]) != __cu)
1211 __matches[__i6] = __matches[--__nmatches];
1212 __lengths[__i6] = __lengths[__nmatches];
1222 if (__nmatches == 1)
1230 __name = __names[__matches[0]];
1231 const size_t __len = __lengths[0];
1232 while (__pos < __len
1236 || (__ctype.
toupper(__name[__pos])
1238 ++__beg, (void)++__pos;
1241 __member = __matches[0];
1243 __testvalid =
false;
1246 __testvalid =
false;
1253 template<
typename _CharT,
typename _InIter>
1257 const _CharT** __names,
size_t __indexlen,
1264 int* __matches =
static_cast<int*
>(__builtin_alloca(2 *
sizeof(
int)
1266 size_t __nmatches = 0;
1267 size_t* __matches_lengths = 0;
1273 for (
size_t __i = 0; __i < 2 * __indexlen; ++__i)
1274 if (__c == __names[__i][0]
1275 || __c == __ctype.
toupper(__names[__i][0]))
1276 __matches[__nmatches++] = __i;
1285 =
static_cast<size_t*
>(__builtin_alloca(
sizeof(
size_t)
1287 for (
size_t __i = 0; __i < __nmatches; ++__i)
1288 __matches_lengths[__i]
1289 = __traits_type::length(__names[__matches[__i]]);
1292 for (; __beg != __end; ++__beg, (void)++__pos)
1294 size_t __nskipped = 0;
1296 for (
size_t __i = 0; __i < __nmatches;)
1298 const char_type* __name = __names[__matches[__i]];
1299 if (__pos >= __matches_lengths[__i])
1300 ++__nskipped, ++__i;
1301 else if (!(__name[__pos] == __c))
1304 __matches[__i] = __matches[__nmatches];
1305 __matches_lengths[__i] = __matches_lengths[__nmatches];
1310 if (__nskipped == __nmatches)
1314 if ((__nmatches == 1 && __matches_lengths[0] == __pos)
1315 || (__nmatches == 2 && (__matches_lengths[0] == __pos
1316 || __matches_lengths[1] == __pos)))
1317 __member = (__matches[0] >= (
int)__indexlen
1318 ? __matches[0] - (
int)__indexlen : __matches[0]);
1325 template<
typename _CharT,
typename _InIter>
1337 __tm, __times[0], __state);
1344 template<
typename _CharT,
typename _InIter>
1356 __tm, __dates[0], __state);
1363 template<
typename _CharT,
typename _InIter>
1380 __tm->tm_wday = __tmpwday;
1389 template<
typename _CharT,
typename _InIter>
1406 __tm->tm_mon = __tmpmon;
1415 template<
typename _CharT,
typename _InIter>
1432 __c = __ctype.
narrow(*__beg,
'*');
1436 if (__c >=
'0' && __c <=
'9')
1439 __tmpyear = __tmpyear * 10 + (__c -
'0');
1442 __c = __ctype.
narrow(*__beg,
'*');
1443 if (__c >=
'0' && __c <=
'9')
1446 __tmpyear = __tmpyear * 10 + (__c -
'0');
1451 else if (__tmpyear < 69)
1453 __tm->tm_year = __tmpyear;
1463#if __cplusplus >= 201103L
1464 template<
typename _CharT,
typename _InIter>
1475 bool __use_state =
false;
1476#if __GNUC__ >= 5 && !defined(_GLIBCXX_CLANG)
1477#pragma GCC diagnostic push
1478#pragma GCC diagnostic ignored "-Wpmf-conversions"
1487#pragma GCC diagnostic pop
1490 while (__fmt != __fmtend &&
1498 else if (__ctype.
narrow(*__fmt, 0) ==
'%')
1503 if (++__fmt == __fmtend)
1508 const char __c = __ctype.
narrow(*__fmt, 0);
1509 if (__c !=
'E' && __c !=
'O')
1511 else if (++__fmt != __fmtend)
1514 __format = __ctype.
narrow(*__fmt, 0);
1524 __new_fmt[0] = __fmt_start[0];
1525 __new_fmt[1] = __fmt_start[1];
1528 __new_fmt[2] = __fmt_start[2];
1534 __new_fmt, __state);
1539 __s = this->
do_get(__s, __end, __io, __err, __tm, __format,
1546 while (__fmt != __fmtend &&
1550 while (__s != __end &&
1572 template<
typename _CharT,
typename _InIter>
1578 char __format,
char __mod)
const
1585 __fmt[0] = __ctype.
widen(
'%');
1588 __fmt[1] = __format;
1594 __fmt[2] = __format;
1609 template<
typename _CharT,
typename _OutIter>
1613 const _CharT* __beg,
const _CharT* __end)
const
1617 for (; __beg != __end; ++__beg)
1618 if (__ctype.
narrow(*__beg, 0) !=
'%')
1623 else if (++__beg != __end)
1627 const char __c = __ctype.
narrow(*__beg, 0);
1628 if (__c !=
'E' && __c !=
'O')
1630 else if (++__beg != __end)
1633 __format = __ctype.
narrow(*__beg, 0);
1637 __s = this->
do_put(__s, __io, __fill, __tm, __format, __mod);
1644 template<
typename _CharT,
typename _OutIter>
1648 char __format,
char __mod)
const
1656 const size_t __maxlen = 128;
1665 __fmt[0] = __ctype.
widen(
'%');
1668 __fmt[1] = __format;
1674 __fmt[2] = __format;
1678 __tp._M_put(__res, __maxlen, __fmt, __tm);
1687#if _GLIBCXX_EXTERN_TEMPLATE
1688#pragma GCC diagnostic push
1689#pragma GCC diagnostic ignored "-Wc++11-extensions"
1690#pragma GCC diagnostic ignored "-Wlong-long"
1797#ifdef _GLIBCXX_USE_WCHAR_T
1904#pragma GCC diagnostic pop
#define __throw_exception_again
#define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11
#define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11
#define _GLIBCXX_VISIBILITY(V)
#define _GLIBCXX_END_NAMESPACE_VERSION
#define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11
#define _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does.
class __attribute((__abi_tag__("cxx11"))) failure typedef _Ios_Fmtflags fmtflags
These are thrown to indicate problems with io.
bool has_facet(const locale &__loc) noexcept
Test for the presence of a facet.
const _Facet & use_facet(const locale &__loc)
Return a facet.
void __convert_to_v(const char *, _Tp &, ios_base::iostate &, const __c_locale &)
ostreambuf_iterator< _CharT > __write(ostreambuf_iterator< _CharT > __s, const _CharT *__ws, int __len)
_CharT * __add_grouping(_CharT *__s, _CharT __sep, const char *__gbeg, size_t __gsize, const _CharT *__first, const _CharT *__last)
const _Facet * __try_use_facet(const locale &__loc) noexcept
int __convert_from_v(const __c_locale &__cloc, char *__out, const int __size, const char *__fmt,...)
bool __verify_grouping(const char *__grouping, size_t __grouping_size, const string &__grouping_tmp)
ISO C++ entities toplevel namespace is std.
constexpr const _CharT * c_str() const noexcept
Return const pointer to null-terminated contents.
_Alloc_traits::size_type size_type
constexpr size_type size() const noexcept
Returns the number of characters in the string, not including any null-termination.
constexpr void reserve(size_type __res_arg)
Attempt to preallocate enough memory for specified number of characters.
constexpr const _CharT * data() const noexcept
Return const pointer to contents.
constexpr basic_string & assign(const basic_string &__str)
Set value to contents of another string.
constexpr size_type copy(_CharT *__s, size_type __n, size_type __pos=0) const
Copy substring into C string.
constexpr basic_string & append(const basic_string &__str)
Append a string to this string.
constexpr iterator begin() noexcept
constexpr size_type find_first_not_of(const basic_string &__str, size_type __pos=0) const noexcept
Find position of a character not in string.
constexpr iterator insert(const_iterator __p, size_type __n, _CharT __c)
Insert multiple characters.
constexpr bool empty() const noexcept
static const size_type npos
constexpr basic_string & erase(size_type __pos=0, size_type __n=npos)
Remove characters.
constexpr void swap(basic_string &__s) noexcept
Swap contents with another string.
Managing sequences of characters and character-like objects.
static constexpr std::size_t length(const char_type *__s)
Basis for explicit traits specializations.
_Ios_Iostate iostate
This is a bitmask type.
static const fmtflags showbase
Generates a prefix indicating the numeric base of generated integer output.
static const fmtflags internal
Adds fill characters at a designated internal point in certain generated output, or identical to righ...
fmtflags flags() const
Access to format flags.
static const iostate eofbit
Indicates that an input operation reached the end of an input sequence.
static const iostate goodbit
Indicates all is well.
const locale & _M_getloc() const
Locale access.
streamsize width() const
Flags access.
static const fmtflags left
Adds fill characters on the right (final positions) of certain generated output. (I....
locale getloc() const
Locale access.
static const iostate failbit
Indicates that an input operation failed to read the expected characters, or that an output operation...
static const fmtflags adjustfield
A mask of left|right|internal. Useful for the 2-arg form of setf.
The base of the I/O class hierarchy.
Container class for localization functionality.
static __c_locale _S_get_c_locale()
Localization functionality base class.
void _M_install_cache(const facet *, size_t)
const char_type * scan_not(mask __m, const char_type *__lo, const char_type *__hi) const
Find char_type not matching a mask.
char_type tolower(char_type __c) const
Convert to lowercase.
char_type toupper(char_type __c) const
Convert to uppercase.
char_type widen(char __c) const
Widen char to char_type.
char narrow(char_type __c, char __dfault) const
Narrow char_type to char.
bool is(mask __m, char_type __c) const
Test char_type classification.
Primary class template ctype facet.
const _Facet * operator()(const locale &__loc) const
static const _CharT * _S_timezones[14]
void _M_date_time_formats(const _CharT **__dt) const
void _M_months_abbreviated(const _CharT **__months) const
void _M_days_abbreviated(const _CharT **__days) const
void _M_am_pm_format(const _CharT *) const
void _M_am_pm(const _CharT **__ampm) const
void _M_date_formats(const _CharT **__date) const
void _M_days(const _CharT **__days) const
void _M_months(const _CharT **__months) const
void _M_time_formats(const _CharT **__time) const
unsigned int _M_have_mday
unsigned int _M_have_uweek
unsigned int _M_have_wweek
unsigned int _M_have_century
unsigned int _M_want_century
unsigned int _M_want_xday
unsigned int _M_have_yday
unsigned int _M_have_wday
void _M_finalize_state(tm *__tm)
iter_type _M_extract_wday_or_month(iter_type __beg, iter_type __end, int &__member, const _CharT **__names, size_t __indexlen, ios_base &__io, ios_base::iostate &__err) const
iter_type _M_extract_num(iter_type __beg, iter_type __end, int &__member, int __min, int __max, size_t __len, ios_base &__io, ios_base::iostate &__err) const
_InIter iter_type
Public typedefs.
iter_type _M_extract_name(iter_type __beg, iter_type __end, int &__member, const _CharT **__names, size_t __indexlen, ios_base &__io, ios_base::iostate &__err) const
_CharT char_type
Public typedefs.
iter_type do_get(iter_type __s, iter_type __end, ios_base &__f, ios_base::iostate &__err, tm *__tm, char __format, char __modifier) const
Parse input string according to format.
virtual dateorder do_date_order() const
Return preferred order of month, day, and year.
time_get(size_t __refs=0)
Constructor performs initialization.
iter_type _M_extract_via_format(iter_type __beg, iter_type __end, ios_base &__io, ios_base::iostate &__err, tm *__tm, const _CharT *__format) const
Primary class template time_get.
class time_get_byname [22.2.5.2].
virtual iter_type do_put(iter_type __s, ios_base &__io, char_type __fill, const tm *__tm, char __format, char __mod) const
Format and output a time or date.
_CharT char_type
Public typedefs.
_OutIter iter_type
Public typedefs.
time_put(size_t __refs=0)
Constructor performs initialization.
Primary class template time_put.
class time_put_byname [22.2.5.4].
static const char * _S_atoms
money_base::pattern _M_pos_format
size_t _M_negative_sign_size
void _M_cache(const locale &__loc)
_CharT _M_atoms[money_base::_S_end]
money_base::pattern _M_neg_format
const _CharT * _M_positive_sign
size_t _M_curr_symbol_size
const _CharT * _M_negative_sign
size_t _M_positive_sign_size
const _CharT * _M_curr_symbol
string_type curr_symbol() const
Return currency symbol string.
static locale::id id
Numpunct facet id.
string_type positive_sign() const
Return positive sign string.
char_type thousands_sep() const
Return thousands separator character.
char_type decimal_point() const
Return decimal point character.
string_type negative_sign() const
Return negative sign string.
pattern neg_format() const
Return pattern for money values.
int frac_digits() const
Return number of digits in fraction.
string grouping() const
Return grouping specification.
pattern pos_format() const
Return pattern for money values.
Primary class template moneypunct.
class moneypunct_byname [22.2.6.4].
basic_string< _CharT > string_type
Public typedefs.
_CharT char_type
Public typedefs.
money_get(size_t __refs=0)
Constructor performs initialization.
iter_type _M_extract(iter_type __s, iter_type __end, ios_base &__io, ios_base::iostate &__err, string &__digits) const
_InIter iter_type
Public typedefs.
Primary class template money_get.
basic_string< _CharT > string_type
Public typedefs.
iter_type _M_insert(iter_type __s, ios_base &__io, char_type __fill, const string_type &__digits) const
money_put(size_t __refs=0)
Constructor performs initialization.
_OutIter iter_type
Public typedefs.
_CharT char_type
Public typedefs.
Primary class template money_put.
Primary class template messages.
class messages_byname [22.2.7.2].
static const _Value __max