Commit 1ab65677 by Benjamin Kosnik Committed by Benjamin Kosnik

time_members_gnu.h (__timepunct::_M_get_helper): Add.


2001-09-28  Benjamin Kosnik  <bkoz@redhat.com>

	* config/locale/time_members_gnu.h (__timepunct::_M_get_helper): Add.
	(__timepunct::_M_put_helper): Add.
	* config/locale/time_members_generic.h: Same.
	* include/bits/locale_facets.h (__match_parallel): Remove. Format.
	(__timepunct): Add data members.
	(__timepunct::_M_days): Add.
	(__timepunct::_M_days_abbreviated): Add.
	(__timepunct::_M_months): Add.
	(__timepunct::_M_months_abbreviated): Add.
	(__timepunct::_M_initialize_timepunct): Add.
	* include/bits/locale_facets.tcc: Same.
	* src/locale-inst.cc: Remove instantiations for __match_parallel.
	* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add CTIME_CC.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/22_locale/time_put_members_char.cc: Mark XFAIL.
	* testsuite/22_locale/time_put_members_char.cc (test01): New file.
	* testsuite/22_locale/time_get.cc: New file.

From-SVN: r45868
parent 5bc10877
2001-09-28 Benjamin Kosnik <bkoz@redhat.com>
* config/locale/time_members_gnu.h (__timepunct::_M_get_helper): Add.
(__timepunct::_M_put_helper): Add.
* config/locale/time_members_generic.h: Same.
* include/bits/locale_facets.h (__match_parallel): Remove. Format.
(__timepunct): Add data members.
(__timepunct::_M_days): Add.
(__timepunct::_M_days_abbreviated): Add.
(__timepunct::_M_months): Add.
(__timepunct::_M_months_abbreviated): Add.
(__timepunct::_M_initialize_timepunct): Add.
* include/bits/locale_facets.tcc: Same.
* src/locale-inst.cc: Remove instantiations for __match_parallel.
* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Add CTIME_CC.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* testsuite/22_locale/time_put_members_char.cc: Mark XFAIL.
* testsuite/22_locale/time_put_members_char.cc (test01): New file.
* testsuite/22_locale/time_get.cc: New file.
2001-09-28 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use
......
......@@ -1064,6 +1064,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_generic.cc
CNUMERIC_CC=config/locale/numpunct_members_generic.cc
CTIME_H=config/locale/time_members_generic.h
CTIME_CC=config/locale/time_members_generic.cc
;;
xgnu)
AC_MSG_RESULT(gnu)
......@@ -1093,6 +1094,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_gnu.cc
CNUMERIC_CC=config/locale/numpunct_members_gnu.cc
CTIME_H=config/locale/time_members_gnu.h
CTIME_CC=config/locale/time_members_gnu.cc
;;
xieee_1003.1)
AC_MSG_RESULT(generic)
......@@ -1109,6 +1111,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_generic.cc
CNUMERIC_CC=config/locale/numpunct_members_generic.cc
CTIME_H=config/locale/time_members_generic.h
CTIME_CC=config/locale/time_members_generic.cc
;;
*)
echo "$enable_clocale is an unknown locale package" 1>&2
......@@ -1131,6 +1134,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
AC_LINK_FILES($CMESSAGES_CC, src/messages.cc)
AC_LINK_FILES($CMONEY_CC, src/moneypunct.cc)
AC_LINK_FILES($CNUMERIC_CC, src/numpunct.cc)
AC_LINK_FILES($CTIME_CC, src/time.cc)
])
......
......@@ -1076,6 +1076,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_generic.cc
CNUMERIC_CC=config/locale/numpunct_members_generic.cc
CTIME_H=config/locale/time_members_generic.h
CTIME_CC=config/locale/time_members_generic.cc
;;
xgnu)
AC_MSG_RESULT(gnu)
......@@ -1105,6 +1106,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_gnu.cc
CNUMERIC_CC=config/locale/numpunct_members_gnu.cc
CTIME_H=config/locale/time_members_gnu.h
CTIME_CC=config/locale/time_members_gnu.cc
;;
xieee_1003.1)
AC_MSG_RESULT(generic)
......@@ -1121,6 +1123,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
CMONEY_CC=config/locale/moneypunct_members_generic.cc
CNUMERIC_CC=config/locale/numpunct_members_generic.cc
CTIME_H=config/locale/time_members_generic.h
CTIME_CC=config/locale/time_members_generic.cc
;;
*)
echo "$enable_clocale is an unknown locale package" 1>&2
......@@ -1143,6 +1146,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
AC_LINK_FILES($CMESSAGES_CC, src/messages.cc)
AC_LINK_FILES($CMONEY_CC, src/moneypunct.cc)
AC_LINK_FILES($CNUMERIC_CC, src/numpunct.cc)
AC_LINK_FILES($CTIME_CC, src/time.cc)
])
......
// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
//
// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
#include <locale>
namespace std
{
template<>
void
__timepunct<char>::_M_initialize_timepunct(__c_locale)
{
// "C" locale
_M_date_format = "%m/%d/%Y";
_M_date_era_format = "%m/%d/%Y";
_M_time_format = "%H:%M:%S";
_M_time_era_format = "%H:%M:%S";
_M_am = "AM";
_M_pm = "PM";
// Day names, starting with "C"'s Sunday.
_M_day1 = "Sunday";
_M_day2 = "Monday";
_M_day3 = "Tuesday";
_M_day4 = "Wednesday";
_M_day5 = "Thursday";
_M_day6 = "Friday";
_M_day7 = "Saturday";
// Abbreviated day names, starting with "C"'s Sun.
_M_day_a1 = "Sun";
_M_day_a2 = "Mon";
_M_day_a3 = "Tue";
_M_day_a4 = "Wed";
_M_day_a5 = "Thu";
_M_day_a6 = "Fri";
_M_day_a7 = "Sat";
// Month names, starting with "C"'s January.
_M_month01 = "January";
_M_month02 = "February";
_M_month03 = "March";
_M_month04 = "April";
_M_month05 = "May";
_M_month06 = "June";
_M_month07 = "July";
_M_month08 = "August";
_M_month09 = "September";
_M_month10 = "October";
_M_month11 = "November";
_M_month12 = "December";
// Abbreviated month names, starting with "C"'s Jan.
_M_month_a01 = "Jan";
_M_month_a02 = "Feb";
_M_month_a03 = "Mar";
_M_month_a04 = "Apr";
_M_month_a05 = "May";
_M_month_a06 = "Jun";
_M_month_a07 = "July";
_M_month_a08 = "Aug";
_M_month_a09 = "Sep";
_M_month_a10 = "Oct";
_M_month_a11 = "Nov";
_M_month_a12 = "Dec";
}
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
__timepunct<wchar_t>::_M_initialize_timepunct(__c_locale)
{ }
#endif
}
......@@ -36,10 +36,19 @@
template<typename _CharT>
void
__timepunct<_CharT>::_M_put_helper(char* __s, size_t __maxlen,
const char* __format,
const tm* __tm) const
__timepunct<_CharT>::
_M_put_helper(char* __s, size_t __maxlen, const char* __format,
const tm* __tm) const
{
setlocale(LC_ALL, _M_name_timepunct);
strftime(__s, __maxlen, __format, __tm);
}
template<typename _CharT>
void
__timepunct<_CharT>::
_M_get_helper(const char*, const char*, tm*) const
{
setlocale(LC_ALL, _M_name_timepunct);
// strptime(__s, __format, __tm);
}
// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
//
// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
#include <locale>
namespace std
{
template<>
void
__timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
{
if (!__cloc)
{
// "C" locale
_M_date_format = "%m/%d/%Y";
_M_date_era_format = "%m/%d/%Y";
_M_time_format = "%H:%M:%S";
_M_time_era_format = "%H:%M:%S";
_M_am = "AM";
_M_pm = "PM";
// Day names, starting with "C"'s Sunday.
_M_day1 = "Sunday";
_M_day2 = "Monday";
_M_day3 = "Tuesday";
_M_day4 = "Wednesday";
_M_day5 = "Thursday";
_M_day6 = "Friday";
_M_day7 = "Saturday";
// Abbreviated day names, starting with "C"'s Sun.
_M_day_a1 = "Sun";
_M_day_a2 = "Mon";
_M_day_a3 = "Tue";
_M_day_a4 = "Wed";
_M_day_a5 = "Thu";
_M_day_a6 = "Fri";
_M_day_a7 = "Sat";
// Month names, starting with "C"'s January.
_M_month01 = "January";
_M_month02 = "February";
_M_month03 = "March";
_M_month04 = "April";
_M_month05 = "May";
_M_month06 = "June";
_M_month07 = "July";
_M_month08 = "August";
_M_month09 = "September";
_M_month10 = "October";
_M_month11 = "November";
_M_month12 = "December";
// Abbreviated month names, starting with "C"'s Jan.
_M_month_a01 = "Jan";
_M_month_a02 = "Feb";
_M_month_a03 = "Mar";
_M_month_a04 = "Apr";
_M_month_a05 = "May";
_M_month_a06 = "Jun";
_M_month_a07 = "July";
_M_month_a08 = "Aug";
_M_month_a09 = "Sep";
_M_month_a10 = "Oct";
_M_month_a11 = "Nov";
_M_month_a12 = "Dec";
}
else
{
_M_c_locale_timepunct = _S_clone_c_locale(__cloc);
_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
_M_am = __nl_langinfo_l(AM_STR, __cloc);
_M_pm = __nl_langinfo_l(PM_STR, __cloc);
// Day names, starting with "C"'s Sunday.
_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
// Abbreviated day names, starting with "C"'s Sun.
_M_day_a1 = __nl_langinfo_l(ABDAY_1, __cloc);
_M_day_a2 = __nl_langinfo_l(ABDAY_2, __cloc);
_M_day_a3 = __nl_langinfo_l(ABDAY_3, __cloc);
_M_day_a4 = __nl_langinfo_l(ABDAY_4, __cloc);
_M_day_a5 = __nl_langinfo_l(ABDAY_5, __cloc);
_M_day_a6 = __nl_langinfo_l(ABDAY_6, __cloc);
_M_day_a7 = __nl_langinfo_l(ABDAY_7, __cloc);
// Month names, starting with "C"'s January.
_M_month01 = __nl_langinfo_l(MON_1, __cloc);
_M_month02 = __nl_langinfo_l(MON_2, __cloc);
_M_month03 = __nl_langinfo_l(MON_3, __cloc);
_M_month04 = __nl_langinfo_l(MON_4, __cloc);
_M_month05 = __nl_langinfo_l(MON_5, __cloc);
_M_month06 = __nl_langinfo_l(MON_6, __cloc);
_M_month07 = __nl_langinfo_l(MON_7, __cloc);
_M_month08 = __nl_langinfo_l(MON_8, __cloc);
_M_month09 = __nl_langinfo_l(MON_9, __cloc);
_M_month10 = __nl_langinfo_l(MON_10, __cloc);
_M_month11 = __nl_langinfo_l(MON_11, __cloc);
_M_month12 = __nl_langinfo_l(MON_12, __cloc);
// Abbreviated month names, starting with "C"'s Jan.
_M_month_a01 = __nl_langinfo_l(ABMON_1, __cloc);
_M_month_a02 = __nl_langinfo_l(ABMON_2, __cloc);
_M_month_a03 = __nl_langinfo_l(ABMON_3, __cloc);
_M_month_a04 = __nl_langinfo_l(ABMON_4, __cloc);
_M_month_a05 = __nl_langinfo_l(ABMON_5, __cloc);
_M_month_a06 = __nl_langinfo_l(ABMON_6, __cloc);
_M_month_a07 = __nl_langinfo_l(ABMON_7, __cloc);
_M_month_a08 = __nl_langinfo_l(ABMON_8, __cloc);
_M_month_a09 = __nl_langinfo_l(ABMON_9, __cloc);
_M_month_a10 = __nl_langinfo_l(ABMON_10, __cloc);
_M_month_a11 = __nl_langinfo_l(ABMON_11, __cloc);
_M_month_a12 = __nl_langinfo_l(ABMON_12, __cloc);
}
}
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
__timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
{
if (!__cloc)
{
// "C" locale
}
else
{
_M_c_locale_timepunct = _S_clone_c_locale(__cloc);
}
}
#endif
}
......@@ -36,9 +36,9 @@
template<typename _CharT>
void
__timepunct<_CharT>::_M_put_helper(char* __s, size_t __maxlen,
const char* __format,
const tm* __tm) const
__timepunct<_CharT>::
_M_put_helper(char* __s, size_t __maxlen, const char* __format,
const tm* __tm) const
{
#if 0
// Requires glibc 2.3
......@@ -51,3 +51,20 @@
strftime(__s, __maxlen, __format, __tm);
#endif
}
template<typename _CharT>
void
__timepunct<_CharT>::
_M_get_helper(const char* __s, const char* __format, tm* __tm) const
{
#if 0
// Requires glibc 2.3
if (_M_c_locale_timepunct)
__strptime_l(__s, _M_c_locale_timepunct, __format, __tm);
else
strptime(__s, __format, __tm);
#else
setlocale(LC_ALL, _M_name_timepunct);
strptime(__s, __format, __tm);
#endif
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -63,7 +63,7 @@ sources = \
basic_file.cc bitset.cc c++locale.cc cmath.cc codecvt.cc \
complex_io.cc functexcept.cc globals.cc ios.cc limits.cc \
locale.cc locale-inst.cc localename.cc \
collate.cc messages.cc moneypunct.cc numpunct.cc \
collate.cc messages.cc moneypunct.cc numpunct.cc time.cc \
misc-inst.cc stdexcept.cc stl-inst.cc string-inst.cc strstream.cc \
valarray-inst.cc wstring-inst.cc
......
......@@ -189,7 +189,7 @@ sources = \
basic_file.cc bitset.cc c++locale.cc cmath.cc codecvt.cc \
complex_io.cc functexcept.cc globals.cc ios.cc limits.cc \
locale.cc locale-inst.cc localename.cc \
collate.cc messages.cc moneypunct.cc numpunct.cc \
collate.cc messages.cc moneypunct.cc numpunct.cc time.cc \
misc-inst.cc stdexcept.cc stl-inst.cc string-inst.cc strstream.cc \
valarray-inst.cc wstring-inst.cc
......@@ -271,7 +271,7 @@ LIBS = @LIBS@
libstdc___la_OBJECTS = basic_file.lo bitset.lo c++locale.lo cmath.lo \
codecvt.lo complex_io.lo functexcept.lo globals.lo ios.lo limits.lo \
locale.lo locale-inst.lo localename.lo collate.lo messages.lo \
moneypunct.lo numpunct.lo misc-inst.lo stdexcept.lo stl-inst.lo \
moneypunct.lo numpunct.lo time.lo misc-inst.lo stdexcept.lo stl-inst.lo \
string-inst.lo strstream.lo valarray-inst.lo wstring-inst.lo
CXXFLAGS = @CXXFLAGS@
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
......
......@@ -122,13 +122,9 @@ namespace std
// collate
template class collate<char>;
template class collate_byname<char>;
template class _Weekdaynames<char, int>;
template class _Monthnames<char, int>;
#ifdef _GLIBCPP_USE_WCHAR_T
template class collate<wchar_t>;
template class collate_byname<wchar_t>;
template class _Weekdaynames<wchar_t, int>;
template class _Monthnames<wchar_t, int>;
#endif
// use_facet
......@@ -243,30 +239,17 @@ namespace std
const vec_pfacet::value_type&);
//
// locale
//
typedef istreambuf_iterator<char, char_traits<char> > istreambuf_iter;
typedef ostreambuf_iterator<char, char_traits<char> > ostreambuf_iter;
template
istreambuf_iter
__match_parallel<istreambuf_iter, char>
(istreambuf_iter, istreambuf_iter, int, const string*, int*, int&, bool&);
#ifdef _GLIBCPP_USE_WCHAR_T
typedef istreambuf_iterator<wchar_t,char_traits<wchar_t> > wistreambuf_iter;
typedef ostreambuf_iterator<wchar_t,char_traits<wchar_t> > wostreambuf_iter;
template
wistreambuf_iter
__match_parallel<wistreambuf_iter, wchar_t>
(wistreambuf_iter, wistreambuf_iter, int, const wstring*, int*, int&, bool&);
#endif
//
// locale
//
template
bool
locale::operator()(const string&, const string&) const;
......
......@@ -434,6 +434,25 @@ namespace std
: ctype<char>(new mask[table_size], true, __refs)
{ }
// Definitions for static const data members of time_base
template<>
const char*
__timepunct<char>::_S_timezones[14] =
{
"GMT", "HST", "AKST", "PST", "MST", "CST", "EST", "AST", "NST", "CET",
"IST", "EET", "CST", "JST"
};
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
const wchar_t*
__timepunct<wchar_t>::_S_timezones[14] =
{
L"GMT", L"HST", L"AKST", L"PST", L"MST", L"CST", L"EST", L"AST",
L"NST", L"CET", L"IST", L"EET", L"CST", L"JST"
};
#endif
// Definitions for static const data members of money_base
const money_base::pattern
money_base::_S_default_pattern = {{symbol, sign, none, value}};
......
// 2001-09-21 Benjamin Kosnik <bkoz@redhat.com>
// Copyright (C) 2001 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// 22.2.5.1 Template class time_get
#include <locale>
void test01()
{
// Check for required base class.
typedef std::time_get<char> test_type;
typedef std::locale::facet base_type1;
typedef std::time_base base_type2;
const test_type& obj = std::use_facet<test_type>(std::locale());
const base_type1* base1 = &obj;
const base_type2* base2 = &obj;
// Check for required typedefs
typedef test_type::char_type char_type;
typedef test_type::iter_type iter_type;
}
// Should be able to instantiate this for other types besides char, wchar_t
class gnu_time_get: public std::time_get<unsigned char>
{ };
void test02()
{
gnu_time_get facet01;
}
int main()
{
test01();
test02();
return 0;
}
......@@ -24,7 +24,9 @@
#include <sstream>
#include <testsuite_hooks.h>
// test string version
// XXX This test is not working for non-glibc locale models.
// { dg-do run { xfail *-*-* } }
void test01()
{
using namespace std;
......@@ -42,11 +44,11 @@ void test01()
VERIFY( loc_hk != loc_de );
VERIFY( loc_de != loc_fr );
// cache the moneypunct facets, for quicker gdb inspection
const time_put<char>& timp_c = use_facet<time_put<char> >(loc_c);
const time_put<char>& timp_de = use_facet<time_put<char> >(loc_de);
const time_put<char>& timp_hk = use_facet<time_put<char> >(loc_hk);
const time_put<char>& timp_fr = use_facet<time_put<char> >(loc_fr);
// cache the __timepunct facets, for quicker gdb inspection
const __timepunct<char>& time_c = use_facet<__timepunct<char> >(loc_c);
const __timepunct<char>& time_de = use_facet<__timepunct<char> >(loc_de);
const __timepunct<char>& time_hk = use_facet<__timepunct<char> >(loc_hk);
const __timepunct<char>& time_fr = use_facet<__timepunct<char> >(loc_fr);
// create an ostream-derived object, cache the time_put facet
const string empty;
......@@ -71,23 +73,75 @@ void test01()
VERIFY( result1 == "Sun" );
oss.str(empty);
iterator_type os_it21 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
string result21 = oss.str(); // "04/04/71"
oss.str(empty);
iterator_type os_it22 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
string result22 = oss.str(); // "12:00:00"
oss.str(empty);
iterator_type os_it31 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
string result31 = oss.str(); // "04/04/71"
oss.str(empty);
iterator_type os_it32 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
string result32 = oss.str(); // "12:00:00"
oss.str(empty);
oss.imbue(loc_de);
iterator_type os_it02 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'a');
string result2 = oss.str();
VERIFY( result2 == "Son" );
oss.str(empty); // "%d.%m.%Y"
iterator_type os_it23 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
string result23 = oss.str(); // "04.04.1971"
oss.str(empty); // "%T"
iterator_type os_it24 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
string result24 = oss.str(); // "12:00:00"
oss.str(empty);
iterator_type os_it33 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
string result33 = oss.str(); // "04.04.1971"
oss.str(empty);
iterator_type os_it34 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
string result34 = oss.str(); // "12:00:00"
oss.str(empty);
oss.imbue(loc_hk);
iterator_type os_it03 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'a');
string result3 = oss.str();
VERIFY( result3 == "Sun" );
oss.str(empty); // "%A, %B %d, %Y"
iterator_type os_it25 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
string result25 = oss.str(); // "Sunday, April 04, 1971"
oss.str(empty); // "%I:%M:%S %Z"
iterator_type os_it26 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
string result26 = oss.str(); // "12:00:00 PST"
oss.str(empty);
iterator_type os_it35 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
string result35 = oss.str(); // "Sunday, April 04, 1971"
oss.str(empty);
iterator_type os_it36 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
string result36 = oss.str(); // "12:00:00 PST"
oss.str(empty);
oss.imbue(loc_fr);
iterator_type os_it04 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'a');
string result4 = oss.str();
VERIFY( result4 == "dim" );
oss.str(empty); // "%d.%m.%Y"
iterator_type os_it27 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
string result27 = oss.str(); // "04.04.1971"
oss.str(empty); // "%T"
iterator_type os_it28 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
string result28 = oss.str(); // "12:00:00"
oss.str(empty);
iterator_type os_it37 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
string result37 = oss.str(); // "04.04.1971"
oss.str(empty);
iterator_type os_it38 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
string result38 = oss.str(); // "12:00:00"
// 2
oss.str(empty);
oss.imbue(loc_c);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment