コード例 #1
0
_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;
}
コード例 #2
0
_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;
}
コード例 #3
0
_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;
}