locale_facets.tcc (time_get<>::do_get_time, [...]): Use only once _M_extract_via_format...

2004-06-13  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (time_get<>::do_get_time,
	time_get<>::do_get_date): Use only once _M_extract_via_format,
	instead of going through "%X"/"%x" and calling it two times
	(+ using widen).

From-SVN: r83059
This commit is contained in:
Paolo Carlini 2004-06-13 09:52:14 +00:00 committed by Paolo Carlini
parent 9f680e794f
commit fc6b41718d
2 changed files with 19 additions and 14 deletions

View File

@ -1,3 +1,10 @@
2004-06-13 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (time_get<>::do_get_time,
time_get<>::do_get_date): Use only once _M_extract_via_format,
instead of going through "%X"/"%x" and calling it two times
(+ using widen).
2004-06-12 Paolo Carlini <pcarlini@suse.de>
* include/ext/algorithm: Trivial formatting fixes.

View File

@ -1724,10 +1724,8 @@ namespace std
time_get<_CharT, _InIter>::do_date_order() const
{ return time_base::no_order; }
// Recursively expand a strftime format string and parse it. Starts w/ %x
// and %X from do_get_time() and do_get_date(), which translate to a more
// specific string, which may contain yet more strings. I.e. %x => %r =>
// %H:%M:%S => extracted characters.
// Expand a strftime format string and parse it. E.g., do_get_date() may
// pass %m/%d/%Y => extracted characters.
template<typename _CharT, typename _InIter>
_InIter
time_get<_CharT, _InIter>::
@ -2056,12 +2054,12 @@ namespace std
do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
ios_base::iostate& __err, tm* __tm) const
{
_CharT __wcs[3];
const char* __cs = "%X";
const locale& __loc = __io._M_getloc();
ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
__ctype.widen(__cs, __cs + 3, __wcs);
__beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs);
const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __times[2];
__tp._M_time_formats(__times);
__beg = _M_extract_via_format(__beg, __end, __io, __err,
__tm, __times[0]);
if (__beg == __end)
__err |= ios_base::eofbit;
return __beg;
@ -2073,12 +2071,12 @@ namespace std
do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
ios_base::iostate& __err, tm* __tm) const
{
_CharT __wcs[3];
const char* __cs = "%x";
const locale& __loc = __io._M_getloc();
ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
__ctype.widen(__cs, __cs + 3, __wcs);
__beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs);
const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __dates[2];
__tp._M_date_formats(__dates);
__beg = _M_extract_via_format(__beg, __end, __io, __err,
__tm, __dates[0]);
if (__beg == __end)
__err |= ios_base::eofbit;
return __beg;