19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_NUM_GET_C 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NUM_GET_C 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_NUM_GET_H 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_num_get.h> 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_LIMITS 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_limits.h> 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DECLSPEC unsigned char _STLP_CALL __digit_val_table(unsigned); 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DECLSPEC const char* _STLP_CALL __narrow_atoms(); 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// __do_get_integer, __do_get_float and its helper functions. 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL __get_fdigit(char __c, const char*) 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return __c >= '0' && __c <= '9'; } 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *__digits) { 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__c == __sep) { 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __c = ',' ; 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return true ; 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __get_fdigit(__c, __digits); 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline int _STLP_CALL 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__get_digit_from_table(unsigned __index) 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (__index > 127 ? 0xFF : __digit_val_table(__index)); } 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _CharT> 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockint 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__get_base_or_zero(_InputIter& __in_ite, _InputIter& __end, 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::fmtflags __flags, const ctype<_CharT>& __c_type) { 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __atoms[5]; 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __c_type.widen(__narrow_atoms(), __narrow_atoms() + 5, __atoms); 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __negative = false; 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __c = *__in_ite; 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__c == __atoms[1] /* __xminus_char */ ) { 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __negative = true; 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else if (__c == __atoms[0] /* __xplus_char */ ) 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __base; 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __valid_zero = 0; 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::fmtflags __basefield = __flags & ios_base::basefield; 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block switch (__basefield) { 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block case ios_base::oct: 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 8; 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block case ios_base::dec: 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 10; 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block case ios_base::hex: 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 16; 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite != __end && *__in_ite == __atoms[2] /* __zero_char */ ) { 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite != __end && 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (*__in_ite == __atoms[3] /* __x_char */ || *__in_ite == __atoms[4] /* __X_char */ )) 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __valid_zero = 1; // That zero is valid by itself. 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block default: 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite != __end && *__in_ite == __atoms[2] /* __zero_char */ ) { 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite != __end && 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (*__in_ite == __atoms[3] /* __x_char */ || *__in_ite == __atoms[4] /* __X_char */ )) { 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 16; 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 8; 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __valid_zero = 1; // That zero is still valid by itself. 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __base = 10; 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return (__base << 2) | ((int)__negative << 1) | __valid_zero; 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _Integer, class _CharT> 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__get_integer(_InputIter& __first, _InputIter& __last, 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __base, _Integer& __val, 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __got, bool __is_negative, _CharT __separator, const string& __grouping, const __true_type& /*_IsSigned*/) { 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __ovflow = false; 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __result = 0; 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __is_group = !__grouping.empty(); 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __group_sizes[64]; 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __current_group_size = 0; 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char* __group_sizes_end = __group_sizes; 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __over_base = (numeric_limits<_Integer>::min)() / __STATIC_CAST(_Integer, __base); 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for ( ; __first != __last ; ++__first) { 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT __c = *__first; 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__is_group && __c == __separator) { 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __current_group_size = 0; 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block continue; 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __n = __get_digit_from_table(__c); 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n >= __base) 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__got; 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__current_group_size; 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__result < __over_base) 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ovflow = true; // don't need to keep accumulating 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __next = __STATIC_CAST(_Integer, __base * __result - __n); 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__result != 0) 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ovflow = __ovflow || __next >= __result; 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __result = __next; 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__is_group && __group_sizes_end != __group_sizes) { 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // fbp : added to not modify value if nothing was read 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__got > 0) { 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __val = __ovflow ? __is_negative ? (numeric_limits<_Integer>::min)() 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : (numeric_limits<_Integer>::max)() 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : __is_negative ? __result 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : __STATIC_CAST(_Integer, -__result); 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // overflow is being treated as failure 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return ((__got > 0) && !__ovflow) && 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (__is_group == 0 || 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __valid_grouping(__group_sizes, __group_sizes_end, 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __grouping.data(), __grouping.data()+ __grouping.size())); 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _Integer, class _CharT> 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__get_integer(_InputIter& __first, _InputIter& __last, 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __base, _Integer& __val, 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __got, bool __is_negative, _CharT __separator, const string& __grouping, const __false_type& /*_IsSigned*/) { 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __ovflow = false; 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __result = 0; 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __is_group = !__grouping.empty(); 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __group_sizes[64]; 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __current_group_size = 0; 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char* __group_sizes_end = __group_sizes; 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __over_base = (numeric_limits<_Integer>::max)() / __STATIC_CAST(_Integer, __base); 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for ( ; __first != __last ; ++__first) { 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT __c = *__first; 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__is_group && __c == __separator) { 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __current_group_size = 0; 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block continue; 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __n = __get_digit_from_table(__c); 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n >= __base) 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__got; 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__current_group_size; 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__result > __over_base) 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ovflow = true; //don't need to keep accumulating 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Integer __next = __STATIC_CAST(_Integer, __base * __result + __n); 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__result != 0) 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ovflow = __ovflow || __next <= __result; 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __result = __next; 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__is_group && __group_sizes_end != __group_sizes) { 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // fbp : added to not modify value if nothing was read 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__got > 0) { 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __val = __ovflow ? (numeric_limits<_Integer>::max)() 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : (__is_negative ? __STATIC_CAST(_Integer, -__result) 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : __result); 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // overflow is being treated as failure 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return ((__got > 0) && !__ovflow) && 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (__is_group == 0 || 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __valid_grouping(__group_sizes, __group_sizes_end, 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __grouping.data(), __grouping.data()+ __grouping.size())); 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _Integer, class _CharT> 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val, _CharT* /*dummy*/) { 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block string __grp; 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Here there is no grouping so separator is not important, we just pass the default character. 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __get_integer(__first, __last, 10, __val, 0, false, _CharT() /*separator*/, __grp, __false_type()); 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _Integer, class _CharT> 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter _STLP_CALL 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__do_get_integer(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, 248e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::iostate& __err, _Integer& __val, _CharT* /*__pc*/) { 249e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale __loc = __str.getloc(); 250e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); 251e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__HP_aCC) && (__HP_aCC == 1) 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool _IsSigned = !((_Integer)(-1) > 0); 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __bool2type<numeric_limits<_Integer>::is_signed>::_Ret _IsSigned; 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 258e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const int __base_or_zero = __get_base_or_zero(__in_ite, __end, __str.flags(), __ctype); 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __got = __base_or_zero & 1; 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __result; 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite == __end) { // We may have already read a 0. If so, 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__got > 0) { // the result is 0 even if we're at eof. 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __val = 0; 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __result = true; 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __result = false; 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 273e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc); 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const bool __negative = (__base_or_zero & 2) != 0; 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const int __base = __base_or_zero >> 2; 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__HP_aCC) && (__HP_aCC == 1) 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (_IsSigned) 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), __true_type() ); 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 281e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), __false_type() ); 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 283e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), _IsSigned()); 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __err = __STATIC_CAST(ios_base::iostate, __result ? ios_base::goodbit : ios_base::failbit); 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite == __end) 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __err |= ios_base::eofbit; 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __in_ite; 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// __read_float and its helper functions. 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _CharT> 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter _STLP_CALL 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__copy_sign(_InputIter __first, _InputIter __last, __iostring& __v, 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __xplus, _CharT __xminus) { 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) { 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __c = *__first; 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__c == __xplus) 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__first; 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else if (__c == __xminus) { 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __v.push_back('-'); 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__first; 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __first; 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _CharT> 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__copy_digits(_InputIter& __first, _InputIter __last, 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iostring& __v, const _CharT* __digits) { 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __ok = false; 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for ( ; __first != __last; ++__first) { 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __c = *__first; 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__get_fdigit(__c, __digits)) { 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __v.push_back((char)__c); 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ok = true; 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __ok; 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _CharT> 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__copy_grouped_digits(_InputIter& __first, _InputIter __last, 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iostring& __v, const _CharT * __digits, 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __sep, const string& __grouping, 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool& __grouping_ok) { 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __ok = false; 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __group_sizes[64]; 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char*__group_sizes_end = __group_sizes; 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __current_group_size = 0; 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for ( ; __first != __last; ++__first) { 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __c = *__first; 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __tmp = __get_fdigit_or_sep(__c, __sep, __digits); 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__tmp) { 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__c == ',') { 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __current_group_size = 0; 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ok = true; 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __v.push_back((char)__c); 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__current_group_size; 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block break; 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__group_sizes_end != __group_sizes) 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__group_sizes_end++ = __current_group_size; 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __grouping_ok = __valid_grouping(__group_sizes, __group_sizes_end, __grouping.data(), __grouping.data() + __grouping.size()); 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __ok; 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIter, class _CharT> 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbool _STLP_CALL 368e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__read_float(__iostring& __buf, _InputIter& __in_ite, _InputIter& __end, 369e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const ctype<_CharT> &__ct, const numpunct<_CharT> &__numpunct) { 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Create a string, copying characters of the form 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // [+-]? [0-9]* .? [0-9]* ([eE] [+-]? [0-9]+)? 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 373e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott string __grouping = __numpunct.grouping(); 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __digits_before_dot /* = false */; 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __digits_after_dot = false; 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __ok; 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool __grouping_ok = true; 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __dot = __numpunct.decimal_point(); 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __sep = __numpunct.thousands_sep(); 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __digits[10]; 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __xplus; 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __xminus; 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __pow_e; 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _CharT __pow_E; 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Initialize_get_float(__ct, __xplus, __xminus, __pow_e, __pow_E, __digits); 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Get an optional sign 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __in_ite = __copy_sign(__in_ite, __end, __buf, __xplus, __xminus); 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Get an optional string of digits. 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!__grouping.empty()) 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __digits_before_dot = __copy_grouped_digits(__in_ite, __end, __buf, __digits, 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __sep, __grouping, __grouping_ok); 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __digits_before_dot = __copy_digits(__in_ite, __end, __buf, __digits); 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Get an optional decimal point, and an optional string of digits. 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__in_ite != __end && *__in_ite == __dot) { 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __buf.push_back('.'); 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __digits_after_dot = __copy_digits(__in_ite, __end, __buf, __digits); 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // There have to be some digits, somewhere. 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ok = __digits_before_dot || __digits_after_dot; 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Get an optional exponent. 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__ok && __in_ite != __end && (*__in_ite == __pow_e || *__in_ite == __pow_E)) { 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __buf.push_back('e'); 4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__in_ite; 4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __in_ite = __copy_sign(__in_ite, __end, __buf, __xplus, __xminus); 4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ok = __copy_digits(__in_ite, __end, __buf, __digits); 4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // If we have an exponent then the sign 4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // is optional but the digits aren't. 4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __ok; 4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 425e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _InputIter, class _Float, class _CharT> 426e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_InputIter _STLP_CALL 427e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__do_get_float(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, 428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::iostate& __err, _Float& __val, _CharT* /*__pc*/) { 429e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale __loc = __str.getloc(); 430e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const ctype<_CharT> &__ctype = use_facet<ctype<_CharT> >(__loc); 431e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const numpunct<_CharT> &__numpunct = use_facet<numpunct<_CharT> >(__loc); 432e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 433e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __iostring __buf ; 434e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool __ok = __read_float(__buf, __in_ite, __end, __ctype, __numpunct); 435e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__ok) { 436e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __string_to_float(__buf, __val); 437e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err = ios_base::goodbit; 438e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 439e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott else { 440e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err = ios_base::failbit; 441e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 442e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__in_ite == __end) 443e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err |= ios_base::eofbit; 444e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __in_ite; 445e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 446e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 447e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _InputIter, class _CharT> 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_InputIter _STLP_CALL 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__do_get_alphabool(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, 450e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::iostate& __err, bool& __x, _CharT* /*__pc*/) { 451e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__str.getloc()); 452e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > __truename = __np.truename(); 453e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > __falsename = __np.falsename(); 454e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool __true_ok = true; 455e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool __false_ok = true; 456e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 457e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t __n = 0; 458e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for ( ; __in_ite != __end; ++__in_ite) { 459e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _CharT __c = *__in_ite; 460e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __true_ok = __true_ok && (__c == __truename[__n]); 461e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __false_ok = __false_ok && (__c == __falsename[__n]); 462e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++__n; 463e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 464e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if ((!__true_ok && !__false_ok) || 465e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (__true_ok && __n >= __truename.size()) || 466e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (__false_ok && __n >= __falsename.size())) { 467e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++__in_ite; 468e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 469e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 470e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 471e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__true_ok && __n < __truename.size()) __true_ok = false; 472e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__false_ok && __n < __falsename.size()) __false_ok = false; 473e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 474e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__true_ok || __false_ok) { 475e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err = ios_base::goodbit; 476e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __x = __true_ok; 477e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 478e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott else 479e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err = ios_base::failbit; 480e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 481e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__in_ite == __end) 482e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __err |= ios_base::eofbit; 483e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 484e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __in_ite; 485e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 486e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// 4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// num_get<>, num_put<> 4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// 4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIterator> 4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocklocale::id num_get<_CharT, _InputIterator>::id; 4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_BOOL) 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, 500e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base& __s, ios_base::iostate& __err, bool& __x) const { 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__s.flags() & ios_base::boolalpha) { 502e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return _STLP_PRIV __do_get_alphabool(__in_ite, __end, __s, __err, __x, (_CharT*)0); 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block long __lx; 506e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _InputIter __tmp = _STLP_PRIV __do_get_integer(__in_ite, __end, __s, __err, __lx, (_CharT*)0 ); 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!(__err & ios_base::failbit)) { 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__lx == 0) 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = false; 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else if (__lx == 1) 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = true; 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __err |= ios_base::failbit; 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 518e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_FIX_LIBRARY_ISSUES) 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, short& __val) const 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, int& __val) const 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, long& __val) const 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block unsigned short& __val) const 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block unsigned int& __val) const 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block unsigned long& __val) const 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 566e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott float& __val) const 567e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 573e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double& __val) const 574e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_LONG_DOUBLE) 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 581e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott long double& __val) const 582e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 583e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 588e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ios_base::iostate& __err, 589e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void*& __p) const { 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_LONG_LONG) && !defined (__MRC__) //*ty 12/07/2001 - MrCpp can not cast from long long to void* 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block unsigned _STLP_LONG_LONG __val; 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block unsigned long __val; 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 595e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott iter_type __tmp = _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); 596e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!(__err & ios_base::failbit)) 597e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __p = __REINTERPRET_CAST(void*, __val); 598e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __tmp; 599e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_LONG_LONG) 6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 6039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 6049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 606e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_LONG_LONG& __val) const 607e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _InputIter> 6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIter 6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknum_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::iostate& __err, 613e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned _STLP_LONG_LONG& __val) const 614e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } 615e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 6169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 6189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_NUMERIC_FACETS_C */ 6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 624