32#ifndef _RWSTD_LOC_NUM_GET_H_INCLUDED
33#define _RWSTD_LOC_NUM_GET_H_INCLUDED
37# pragma GCC system_header
53template <
class _CharT,
class _InputIter = istreambuf_iterator<_CharT> >
54struct num_get: _RW::__rw_facet
56 typedef _CharT char_type;
57 typedef _InputIter iter_type;
59 static _RW::__rw_facet_id id;
61 explicit num_get (_RWSTD_SIZE_T __refs = 0)
62 : _RW::__rw_facet (__refs) { }
64#ifndef _RWSTD_NO_NATIVE_BOOL
66 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
69 return do_get (__begin, __end, __flags, __err, __val);
74 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
77 return do_get (__begin, __end, __flags, __err, __val);
80#ifndef _RWSTD_NO_EXT_NUM_GET
84 get (iter_type, iter_type, ios_base&,
_RWSTD_IOSTATE&,
short&)
const;
88 get (iter_type, iter_type, ios_base&,
_RWSTD_IOSTATE&,
int&)
const;
92 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
95 return do_get (__begin, __end, __flags, __err, __val);
98 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
101 return do_get (__begin, __end, __flags, __err, __val);
104 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
107 return do_get (__begin, __end, __flags, __err, __val);
110 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
113 return do_get (__begin, __end, __flags, __err, __val);
116 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
119 return do_get (__begin, __end, __flags, __err, __val);
122#ifndef _RWSTD_LONG_DOUBLE
124 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
127 return do_get (__begin, __end, __flags, __err, __val);
132 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
135 return do_get (__begin, __end, __flags, __err, __val);
139#ifdef _RWSTD_LONG_LONG
142 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
145 return do_get (__begin, __end, __flags, __err, __val);
149 iter_type get (iter_type __begin, iter_type __end, ios_base &__flags,
153 return do_get (__begin, __end, __flags, __err, __val);
160#ifndef _RWSTD_NO_NATIVE_BOOL
163 do_get (iter_type, iter_type, ios_base&,
_RWSTD_IOSTATE&,
bool&)
const;
168 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
170 return _C_get (__begin, __end, __flags, __err, _C_ushort, &__val);
174 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
176 return _C_get (__begin, __end, __flags, __err, _C_uint, &__val);
180 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
182 return _C_get (__begin, __end, __flags, __err, _C_long, &__val);
186 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
188 return _C_get (__begin, __end, __flags, __err, _C_ulong, &__val);
192 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
194 return _C_get (__begin, __end, __flags, __err, _C_float, &__val);
198 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
200 return _C_get (__begin, __end, __flags, __err, _C_double, &__val);
203#ifndef _RWSTD_LONG_DOUBLE
206 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
208 return _C_get (__begin, __end, __flags, __err, _C_ldouble, &__val);
214 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
216 return _C_get (__begin, __end, __flags, __err, _C_pvoid, &__val);
219#ifdef _RWSTD_LONG_LONG
223 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
225 return _C_get (__begin, __end, __flags, __err, _C_llong, &__val);
230 do_get (iter_type __begin, iter_type __end, ios_base &__flags,
232 return _C_get (__begin, __end, __flags, __err, _C_ullong, &__val);
241 _C_get (iter_type, iter_type, ios_base&,
246#ifndef _RWSTD_NO_SPECIALIZED_FACET_ID
249_RW::__rw_facet_id num_get<char, istreambuf_iterator<char> >::id;
251# ifndef _RWSTD_NO_WCHAR_T
254_RW::__rw_facet_id num_get<wchar_t, istreambuf_iterator<wchar_t> >::id;
268#if _RWSTD_SHRT_MAX < _RWSTD_LONG_MAX
274 || (__flags & _RW::__rw_basefield) == _RW::__rw_dec) {
276 __shrt_max = long (_RWSTD_SHRT_MAX);
277 __shrt_min = long (_RWSTD_SHRT_MIN);
282 __shrt_max = long (_RWSTD_USHRT_MAX);
283 __shrt_min = long (_RWSTD_USHRT_MIN);
287 if (__lval < __shrt_min) {
288 __err |= _RW::__rw_failbit;
289 return short (_RWSTD_SHRT_MIN);
291 else if (__lval > __shrt_max) {
292 __err |= _RW::__rw_failbit;
293 return short (_RWSTD_SHRT_MAX);
310#if _RWSTD_INT_MAX < _RWSTD_LONG_MAX
316 || (__flags & _RW::__rw_basefield) == _RW::__rw_dec) {
318 __int_max = long (_RWSTD_INT_MAX);
319 __int_min = long (_RWSTD_INT_MIN);
324 __int_max = long (_RWSTD_UINT_MAX);
325 __int_min = long (_RWSTD_UINT_MIN);
329 if (__lval < __int_min) {
330 __err |= _RW::__rw_failbit;
331 return int (_RWSTD_INT_MIN);
333 else if (__lval > __int_max) {
334 __err |= _RW::__rw_failbit;
335 return int (_RWSTD_INT_MAX);
351#if _RWSTD_DEFINE_TEMPLATE_FIRST (_NUM_GET)
357# pragma warning (push)
358# pragma warning (disable: 4231)
364#if _RWSTD_INSTANTIATE (_NUM_GET, _CHAR)
370#if _RWSTD_INSTANTIATE (_NUM_GET, _WCHAR_T)
380# pragma warning (pop)
384#if _RWSTD_DEFINE_TEMPLATE_LAST (_NUM_GET)
#define _RWSTD_SPECIALIZED_CLASS
#define _RWSTD_INSTANTIATE_1(arg)
#define _RWSTD_UNUSED(arg)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_ASSERT_RANGE(ign1, ign2)