_InIt time_get<_Ch, _InIt>::do_get_year(_InIt __s, _InIt __end, ios_base&, ios_base::iostate& __err, tm* __t) const { if (__s == __end) { __err = ios_base::failbit | ios_base::eofbit; return __s; } bool __pr = __get_decimal_integer(__s, __end, __t->tm_year); __t->tm_year -= 1900; __err = __pr ? ios_base::goodbit : ios_base::failbit; if (__s == __end) __err |= ios_base::eofbit; return __s; }
_InputIter money_get<_CharT, _InputIter>::do_get(_InputIter __s, _InputIter __end, bool __intl, ios_base& __str, ios_base::iostate& __err, _STLP_LONG_DOUBLE& __units) const { string_type __buf; bool __is_positive = true; __s = _S_do_get(__s, __end, __intl, __str, __err, __buf, __is_positive, (_CharT*)0); if (__err == ios_base::goodbit || __err == ios_base::eofbit) { typename string_type::iterator __b = __buf.begin(), __e = __buf.end(); if (!__is_positive) ++__b; // Can't use atold, since it might be wchar_t. Don't get confused by name below : // it's perfectly capable of reading long double. __get_decimal_integer(__b, __e, __units, (_CharT*)0); if (!__is_positive) { __units = -__units; } } return __s; }
_InIt2 _STLP_CALL __get_formatted_time _STLP_WEAK (_InIt1 __first, _InIt1 __last, _InIt2 __format, _InIt2 __format_end, /* _Ch, */ const _Time_Info& __table, ios_base::iostate& __err, tm* __t) { while(__first != __last && __format != __format_end) { if (*__format == '%') { ++__format; char __c = *__format; switch (__c) { case 'a': { const string* __pr = __match(__first, __last, (string*)__table._M_dayname + 0 , (string*)__table._M_dayname + 7); if (__pr == (string*)__table._M_dayname + 7) return __format; __t->tm_wday = (int)(__pr - (string*)__table._M_dayname); break; } case 'A': { const string* __pr = __match(__first, __last, (string*)__table._M_dayname + 7, (string*)__table._M_dayname + 14); if (__pr == (string*)__table._M_dayname + 14) return __format; __t->tm_wday = (int)(__pr - (string*)__table._M_dayname - 7); break; } case 'b': { const string* __pr = __match(__first, __last, (string*)__table._M_monthname + 0, (string*)__table._M_monthname + 12); if (__pr == (string*)__table._M_monthname + 12) return __format; __t->tm_mon = (int)(__pr - (string*)__table._M_monthname); break; } case 'B': { const string* __pr = __match(__first, __last, (string*)__table._M_monthname + 12, (string*)__table._M_monthname + 24); if (__pr == (string*)__table._M_monthname + 24) return __format; __t->tm_mon = (int)(__pr - (string*)__table._M_monthname - 12); break; } case 'd': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_mday); if (!__pr || __t->tm_mday < 1 || __t->tm_mday > 31) { __err |= ios_base::failbit; return __format; } break; } case 'H': case 'I': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_hour); if (!__pr) return __format; break; } case 'j': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_yday); if (!__pr) return __format; break; } case 'm': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_mon); --__t->tm_mon; if (!__pr || __t->tm_mon < 0 || __t->tm_mon > 11) { __err |= ios_base::failbit; return __format; } break; } case 'M': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_min); if (!__pr) return __format; break; } case 'p': { const string* __pr = __match(__first, __last, (string*)__table._M_am_pm + 0, (string*)__table._M_am_pm + 2); if (__pr == (string*)__table._M_am_pm + 2) return __format; if (__pr == (string*)__table._M_am_pm + 1) __t->tm_hour += 12; break; } case 'S': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_sec); if (!__pr) return __format; break; } case 'y': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_year); if (!__pr) return __format; break; } case 'Y': { bool __pr = __get_decimal_integer(__first, __last, __t->tm_year); __t->tm_year -= 1900; if (!__pr) return __format; break; } default: break; } } else { if (*__first++ != *__format) break; } ++__format; } return __format; }