locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// Locale support -*- C++ -*-
|
|
|
|
|
2021-01-04 10:26:59 +01:00
|
|
|
// Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
//
|
|
|
|
// 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
|
2009-04-09 17:00:19 +02:00
|
|
|
// Free Software Foundation; either version 3, or (at your option)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// 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.
|
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
|
|
// 3.1, as published by the Free Software Foundation.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
2009-04-09 17:00:19 +02:00
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
|
// <http://www.gnu.org/licenses/>.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
2010-12-19 09:21:16 +00:00
|
|
|
/** @file bits/locale_facets_nonio.h
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* This is an internal header file, included by other library headers.
|
2010-12-19 09:21:16 +00:00
|
|
|
* Do not attempt to use it directly. @headername{locale}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
//
|
|
|
|
// ISO C++ 14882: 22.1 Locales
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef _LOCALE_FACETS_NONIO_H
|
|
|
|
#define _LOCALE_FACETS_NONIO_H 1
|
|
|
|
|
locale_facets.h (class collate, [...]): Move...
2007-04-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class collate, class collate_byname):
Move...
* include/bits/locale_classes.h: ... here.
* include/bits/locale_facets.tcc (locale::combine, locale::operator(),
has_facet, use_facet, collate::_M_compare, collate::_M_transform,
collate::do_compare, collate::do_transform, collate::do_hash): Move...
* include/bits/locale_classes.tcc: ... here, new.
* include/Makefile.am: Add.
* testsuite/util/testsuite_abi.h: Include <locale>.
* include/std/locale: Tweak.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/bits/codecvt.h: Likewise.
* include/Makefile.in: Regenerate.
* include/bits/codecvt.h: Adjust extern template declarations.
* include/bits/ostream_insert.h: Likewise.
* include/bits/ostream.tcc: Likewise.
* include/bits/locale_facets.h: Do not include <bits/codecvt.h>.
* include/std/fstream: Do it here.
* include/bits/locale_facets_nonio.h: Likewise.
From-SVN: r124114
2007-04-24 18:57:12 +00:00
|
|
|
#pragma GCC system_header
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
#include <ctime> // For struct tm
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
|
|
{
|
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Time format ordering data.
|
2010-02-10 05:45:24 +00:00
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
2010-02-10 05:45:24 +00:00
|
|
|
* This class provides an enum representing different orderings of
|
|
|
|
* time: day, month, and year.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
class time_base
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum dateorder { no_order, dmy, mdy, ymd, ydm };
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT>
|
|
|
|
struct __timepunct_cache : public locale::facet
|
|
|
|
{
|
|
|
|
// List of all known timezones, with GMT first.
|
|
|
|
static const _CharT* _S_timezones[14];
|
|
|
|
|
|
|
|
const _CharT* _M_date_format;
|
|
|
|
const _CharT* _M_date_era_format;
|
|
|
|
const _CharT* _M_time_format;
|
|
|
|
const _CharT* _M_time_era_format;
|
|
|
|
const _CharT* _M_date_time_format;
|
|
|
|
const _CharT* _M_date_time_era_format;
|
|
|
|
const _CharT* _M_am;
|
|
|
|
const _CharT* _M_pm;
|
|
|
|
const _CharT* _M_am_pm_format;
|
|
|
|
|
|
|
|
// Day names, starting with "C"'s Sunday.
|
|
|
|
const _CharT* _M_day1;
|
|
|
|
const _CharT* _M_day2;
|
|
|
|
const _CharT* _M_day3;
|
|
|
|
const _CharT* _M_day4;
|
|
|
|
const _CharT* _M_day5;
|
|
|
|
const _CharT* _M_day6;
|
|
|
|
const _CharT* _M_day7;
|
|
|
|
|
|
|
|
// Abbreviated day names, starting with "C"'s Sun.
|
|
|
|
const _CharT* _M_aday1;
|
|
|
|
const _CharT* _M_aday2;
|
|
|
|
const _CharT* _M_aday3;
|
|
|
|
const _CharT* _M_aday4;
|
|
|
|
const _CharT* _M_aday5;
|
|
|
|
const _CharT* _M_aday6;
|
|
|
|
const _CharT* _M_aday7;
|
|
|
|
|
|
|
|
// Month names, starting with "C"'s January.
|
|
|
|
const _CharT* _M_month01;
|
|
|
|
const _CharT* _M_month02;
|
|
|
|
const _CharT* _M_month03;
|
|
|
|
const _CharT* _M_month04;
|
|
|
|
const _CharT* _M_month05;
|
|
|
|
const _CharT* _M_month06;
|
|
|
|
const _CharT* _M_month07;
|
|
|
|
const _CharT* _M_month08;
|
|
|
|
const _CharT* _M_month09;
|
|
|
|
const _CharT* _M_month10;
|
|
|
|
const _CharT* _M_month11;
|
|
|
|
const _CharT* _M_month12;
|
|
|
|
|
|
|
|
// Abbreviated month names, starting with "C"'s Jan.
|
|
|
|
const _CharT* _M_amonth01;
|
|
|
|
const _CharT* _M_amonth02;
|
|
|
|
const _CharT* _M_amonth03;
|
|
|
|
const _CharT* _M_amonth04;
|
|
|
|
const _CharT* _M_amonth05;
|
|
|
|
const _CharT* _M_amonth06;
|
|
|
|
const _CharT* _M_amonth07;
|
|
|
|
const _CharT* _M_amonth08;
|
|
|
|
const _CharT* _M_amonth09;
|
|
|
|
const _CharT* _M_amonth10;
|
|
|
|
const _CharT* _M_amonth11;
|
|
|
|
const _CharT* _M_amonth12;
|
|
|
|
|
|
|
|
bool _M_allocated;
|
|
|
|
|
|
|
|
__timepunct_cache(size_t __refs = 0) : facet(__refs),
|
2010-06-03 19:15:56 +00:00
|
|
|
_M_date_format(0), _M_date_era_format(0), _M_time_format(0),
|
|
|
|
_M_time_era_format(0), _M_date_time_format(0),
|
|
|
|
_M_date_time_era_format(0), _M_am(0), _M_pm(0),
|
|
|
|
_M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0),
|
|
|
|
_M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0),
|
|
|
|
_M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0),
|
|
|
|
_M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0),
|
|
|
|
_M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0),
|
|
|
|
_M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0),
|
|
|
|
_M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0),
|
|
|
|
_M_amonth02(0), _M_amonth03(0), _M_amonth04(0),
|
|
|
|
_M_amonth05(0), _M_amonth06(0), _M_amonth07(0),
|
|
|
|
_M_amonth08(0), _M_amonth09(0), _M_amonth10(0),
|
|
|
|
_M_amonth11(0), _M_amonth12(0), _M_allocated(false)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
{ }
|
|
|
|
|
|
|
|
~__timepunct_cache();
|
|
|
|
|
|
|
|
private:
|
|
|
|
__timepunct_cache&
|
|
|
|
operator=(const __timepunct_cache&);
|
|
|
|
|
|
|
|
explicit
|
|
|
|
__timepunct_cache(const __timepunct_cache&);
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT>
|
|
|
|
__timepunct_cache<_CharT>::~__timepunct_cache()
|
|
|
|
{
|
|
|
|
if (_M_allocated)
|
|
|
|
{
|
|
|
|
// Unused.
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Specializations.
|
|
|
|
template<>
|
|
|
|
const char*
|
|
|
|
__timepunct_cache<char>::_S_timezones[14];
|
|
|
|
|
|
|
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
|
|
|
template<>
|
|
|
|
const wchar_t*
|
|
|
|
__timepunct_cache<wchar_t>::_S_timezones[14];
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// Generic.
|
|
|
|
template<typename _CharT>
|
|
|
|
const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
|
|
|
|
|
|
|
|
template<typename _CharT>
|
|
|
|
class __timepunct : public locale::facet
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
|
|
|
typedef _CharT __char_type;
|
|
|
|
typedef __timepunct_cache<_CharT> __cache_type;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
__cache_type* _M_data;
|
|
|
|
__c_locale _M_c_locale_timepunct;
|
|
|
|
const char* _M_name_timepunct;
|
|
|
|
|
|
|
|
public:
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
__timepunct(size_t __refs = 0);
|
|
|
|
|
|
|
|
explicit
|
|
|
|
__timepunct(__cache_type* __cache, size_t __refs = 0);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Internal constructor. Not for general use.
|
|
|
|
*
|
|
|
|
* This is a constructor for use by the library itself to set up new
|
|
|
|
* locales.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __cloc The C locale.
|
|
|
|
* @param __s The name of a locale.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @param refs Passed to the base facet class.
|
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
__timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);
|
|
|
|
|
|
|
|
// FIXME: for error checking purposes _M_put should return the return
|
|
|
|
// value of strftime/wcsftime.
|
|
|
|
void
|
|
|
|
_M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
|
condition_variable.cc (condition_variable, [...]): Mark throw()
* src/condition_variable.cc (condition_variable,
condition_variable_any constructors): Mark throw()
* src/hash.cc (operator() for long double, string, and wstring): Mark
throw ().
* src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
_M_setup, rdbuf, str): Mark throw ().
* src/chrono.cc (new): Mark throw ().
* include/std/system_error (system_category, generic_category): Mark
throw () and const.
* include/std/chrono (now): Mark throw ().
* include/std/condition_variable (condition_variable,
~condition_variable, condition_variable_any,
~condition_variable_any): Mark throw ().
* include/std/mutex (mutex): Mark throw ().
* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
throw.
* include/bits/functional_hash.h (operator() on size_t): Mark pure and throw ().
* include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
* include/bits/locale_classes.h (_S_initialize_once,
_S_clone_c_locale): Mark throw ().
(_S_get_c_name): Mark const and throw ().
(_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark throw ().
* include/bits/locale_facets.h (__convert_to_v explicit instances):
Mark throw ().
(_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark throw ().
* include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
ios_base): Mark throw ()
* include/bits/locale_facets_nonio.h (_M_put): Mark throw.
* include/backward/strstream (strstreambuf constructors): Mark throw ().
(str, freeze, _M_setupf): Mark throw ().
(pcount): Mark pure and throw ().
(rdbuf): Mark const and throw ().
From-SVN: r146328
2009-04-18 23:19:18 +02:00
|
|
|
const tm* __tm) const throw ();
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
_M_date_formats(const _CharT** __date) const
|
|
|
|
{
|
|
|
|
// Always have default first.
|
|
|
|
__date[0] = _M_data->_M_date_format;
|
|
|
|
__date[1] = _M_data->_M_date_era_format;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_time_formats(const _CharT** __time) const
|
|
|
|
{
|
|
|
|
// Always have default first.
|
|
|
|
__time[0] = _M_data->_M_time_format;
|
|
|
|
__time[1] = _M_data->_M_time_era_format;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_date_time_formats(const _CharT** __dt) const
|
|
|
|
{
|
|
|
|
// Always have default first.
|
|
|
|
__dt[0] = _M_data->_M_date_time_format;
|
|
|
|
__dt[1] = _M_data->_M_date_time_era_format;
|
|
|
|
}
|
|
|
|
|
2017-11-30 17:29:08 +00:00
|
|
|
#if !_GLIBCXX_INLINE_VERSION
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
void
|
2017-11-30 17:29:08 +00:00
|
|
|
_M_am_pm_format(const _CharT*) const
|
|
|
|
{ /* Kept for ABI compatibility, see PR65927 */ }
|
|
|
|
#endif
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
_M_am_pm(const _CharT** __ampm) const
|
|
|
|
{
|
|
|
|
__ampm[0] = _M_data->_M_am;
|
|
|
|
__ampm[1] = _M_data->_M_pm;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_days(const _CharT** __days) const
|
|
|
|
{
|
|
|
|
__days[0] = _M_data->_M_day1;
|
|
|
|
__days[1] = _M_data->_M_day2;
|
|
|
|
__days[2] = _M_data->_M_day3;
|
|
|
|
__days[3] = _M_data->_M_day4;
|
|
|
|
__days[4] = _M_data->_M_day5;
|
|
|
|
__days[5] = _M_data->_M_day6;
|
|
|
|
__days[6] = _M_data->_M_day7;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_days_abbreviated(const _CharT** __days) const
|
|
|
|
{
|
|
|
|
__days[0] = _M_data->_M_aday1;
|
|
|
|
__days[1] = _M_data->_M_aday2;
|
|
|
|
__days[2] = _M_data->_M_aday3;
|
|
|
|
__days[3] = _M_data->_M_aday4;
|
|
|
|
__days[4] = _M_data->_M_aday5;
|
|
|
|
__days[5] = _M_data->_M_aday6;
|
|
|
|
__days[6] = _M_data->_M_aday7;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_months(const _CharT** __months) const
|
|
|
|
{
|
|
|
|
__months[0] = _M_data->_M_month01;
|
|
|
|
__months[1] = _M_data->_M_month02;
|
|
|
|
__months[2] = _M_data->_M_month03;
|
|
|
|
__months[3] = _M_data->_M_month04;
|
|
|
|
__months[4] = _M_data->_M_month05;
|
|
|
|
__months[5] = _M_data->_M_month06;
|
|
|
|
__months[6] = _M_data->_M_month07;
|
|
|
|
__months[7] = _M_data->_M_month08;
|
|
|
|
__months[8] = _M_data->_M_month09;
|
|
|
|
__months[9] = _M_data->_M_month10;
|
|
|
|
__months[10] = _M_data->_M_month11;
|
|
|
|
__months[11] = _M_data->_M_month12;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_months_abbreviated(const _CharT** __months) const
|
|
|
|
{
|
|
|
|
__months[0] = _M_data->_M_amonth01;
|
|
|
|
__months[1] = _M_data->_M_amonth02;
|
|
|
|
__months[2] = _M_data->_M_amonth03;
|
|
|
|
__months[3] = _M_data->_M_amonth04;
|
|
|
|
__months[4] = _M_data->_M_amonth05;
|
|
|
|
__months[5] = _M_data->_M_amonth06;
|
|
|
|
__months[6] = _M_data->_M_amonth07;
|
|
|
|
__months[7] = _M_data->_M_amonth08;
|
|
|
|
__months[8] = _M_data->_M_amonth09;
|
|
|
|
__months[9] = _M_data->_M_amonth10;
|
|
|
|
__months[10] = _M_data->_M_amonth11;
|
|
|
|
__months[11] = _M_data->_M_amonth12;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual
|
|
|
|
~__timepunct();
|
|
|
|
|
|
|
|
// For use at construction time only.
|
|
|
|
void
|
2010-06-03 19:15:56 +00:00
|
|
|
_M_initialize_timepunct(__c_locale __cloc = 0);
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT>
|
|
|
|
locale::id __timepunct<_CharT>::id;
|
|
|
|
|
|
|
|
// Specializations.
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
__timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
condition_variable.cc (condition_variable, [...]): Mark throw()
* src/condition_variable.cc (condition_variable,
condition_variable_any constructors): Mark throw()
* src/hash.cc (operator() for long double, string, and wstring): Mark
throw ().
* src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
_M_setup, rdbuf, str): Mark throw ().
* src/chrono.cc (new): Mark throw ().
* include/std/system_error (system_category, generic_category): Mark
throw () and const.
* include/std/chrono (now): Mark throw ().
* include/std/condition_variable (condition_variable,
~condition_variable, condition_variable_any,
~condition_variable_any): Mark throw ().
* include/std/mutex (mutex): Mark throw ().
* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
throw.
* include/bits/functional_hash.h (operator() on size_t): Mark pure and throw ().
* include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
* include/bits/locale_classes.h (_S_initialize_once,
_S_clone_c_locale): Mark throw ().
(_S_get_c_name): Mark const and throw ().
(_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark throw ().
* include/bits/locale_facets.h (__convert_to_v explicit instances):
Mark throw ().
(_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark throw ().
* include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
ios_base): Mark throw ()
* include/bits/locale_facets_nonio.h (_M_put): Mark throw.
* include/backward/strstream (strstreambuf constructors): Mark throw ().
(str, freeze, _M_setupf): Mark throw ().
(pcount): Mark pure and throw ().
(rdbuf): Mark const and throw ().
From-SVN: r146328
2009-04-18 23:19:18 +02:00
|
|
|
__timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
__timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
__timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
|
condition_variable.cc (condition_variable, [...]): Mark throw()
* src/condition_variable.cc (condition_variable,
condition_variable_any constructors): Mark throw()
* src/hash.cc (operator() for long double, string, and wstring): Mark
throw ().
* src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
_M_setup, rdbuf, str): Mark throw ().
* src/chrono.cc (new): Mark throw ().
* include/std/system_error (system_category, generic_category): Mark
throw () and const.
* include/std/chrono (now): Mark throw ().
* include/std/condition_variable (condition_variable,
~condition_variable, condition_variable_any,
~condition_variable_any): Mark throw ().
* include/std/mutex (mutex): Mark throw ().
* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
throw.
* include/bits/functional_hash.h (operator() on size_t): Mark pure and throw ().
* include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
* include/bits/locale_classes.h (_S_initialize_once,
_S_clone_c_locale): Mark throw ().
(_S_get_c_name): Mark const and throw ().
(_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark throw ().
* include/bits/locale_facets.h (__convert_to_v explicit instances):
Mark throw ().
(_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark throw ().
* include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
ios_base): Mark throw ()
* include/bits/locale_facets_nonio.h (_M_put): Mark throw.
* include/backward/strstream (strstreambuf constructors): Mark throw ().
(str, freeze, _M_setupf): Mark throw ().
(pcount): Mark pure and throw ().
(rdbuf): Mark const and throw ().
From-SVN: r146328
2009-04-18 23:19:18 +02:00
|
|
|
const tm*) const throw ();
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
#endif
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
|
|
} // namespace
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
// Include host and configuration specific timepunct functions.
|
|
|
|
#include <bits/time_members.h>
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
|
|
{
|
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template time_get.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the code to parse and return a date or
|
|
|
|
* time from a string. It is used by the istream numeric
|
|
|
|
* extraction operators.
|
|
|
|
*
|
|
|
|
* The time_get template uses protected virtual functions to provide the
|
|
|
|
* actual results. The public accessors forward the call to the virtual
|
|
|
|
* functions. These virtual functions are hooks for developers to
|
|
|
|
* implement the behavior they require from the time_get facet.
|
|
|
|
*/
|
|
|
|
template<typename _CharT, typename _InIter>
|
|
|
|
class time_get : public locale::facet, public time_base
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _InIter iter_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
time_get(size_t __refs = 0)
|
|
|
|
: facet (__refs) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return preferred order of month, day, and year.
|
|
|
|
*
|
2014-11-29 22:58:33 +00:00
|
|
|
* This function returns an enum from time_base::dateorder giving the
|
2010-02-04 18:20:34 +00:00
|
|
|
* preferred ordering if the format @a x given to time_put::put() only
|
|
|
|
* uses month, day, and year. If the format @a x for the associated
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* locale uses other fields, this function returns
|
2014-11-29 22:58:33 +00:00
|
|
|
* time_base::dateorder::noorder.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* NOTE: The library always returns noorder at the moment.
|
|
|
|
*
|
2014-11-29 22:58:33 +00:00
|
|
|
* @return A member of time_base::dateorder.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
dateorder
|
|
|
|
date_order() const
|
|
|
|
{ return this->do_date_order(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input time string.
|
|
|
|
*
|
2010-10-05 20:58:59 +00:00
|
|
|
* This function parses a time according to the format @a X and puts the
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* results into a user-supplied struct tm. The result is returned by
|
|
|
|
* calling time_get::do_get_time().
|
|
|
|
*
|
2010-10-05 20:58:59 +00:00
|
|
|
* If there is a valid time string according to format @a X, @a tm will
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* be filled in accordingly and the returned iterator will point to the
|
|
|
|
* first character beyond the time string. If an error occurs before
|
|
|
|
* the end, err |= ios_base::failbit. If parsing reads all the
|
|
|
|
* characters, err |= ios_base::eofbit.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond time string.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get_time(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const
|
|
|
|
{ return this->do_get_time(__beg, __end, __io, __err, __tm); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input date string.
|
|
|
|
*
|
2010-10-05 20:58:59 +00:00
|
|
|
* This function parses a date according to the format @a x and puts the
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* results into a user-supplied struct tm. The result is returned by
|
|
|
|
* calling time_get::do_get_date().
|
|
|
|
*
|
2010-10-05 20:58:59 +00:00
|
|
|
* If there is a valid date string according to format @a x, @a tm will
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* be filled in accordingly and the returned iterator will point to the
|
|
|
|
* first character beyond the date string. If an error occurs before
|
|
|
|
* the end, err |= ios_base::failbit. If parsing reads all the
|
|
|
|
* characters, err |= ios_base::eofbit.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond date string.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get_date(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const
|
|
|
|
{ return this->do_get_date(__beg, __end, __io, __err, __tm); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input weekday string.
|
|
|
|
*
|
|
|
|
* This function parses a weekday name and puts the results into a
|
|
|
|
* user-supplied struct tm. The result is returned by calling
|
|
|
|
* time_get::do_get_weekday().
|
|
|
|
*
|
|
|
|
* Parsing starts by parsing an abbreviated weekday name. If a valid
|
|
|
|
* abbreviation is followed by a character that would lead to the full
|
|
|
|
* weekday name, parsing continues until the full name is found or an
|
|
|
|
* error occurs. Otherwise parsing finishes at the end of the
|
|
|
|
* abbreviated name.
|
|
|
|
*
|
|
|
|
* If an error occurs before the end, err |= ios_base::failbit. If
|
|
|
|
* parsing reads all the characters, err |= ios_base::eofbit.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond weekday name.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const
|
|
|
|
{ return this->do_get_weekday(__beg, __end, __io, __err, __tm); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input month string.
|
|
|
|
*
|
|
|
|
* This function parses a month name and puts the results into a
|
|
|
|
* user-supplied struct tm. The result is returned by calling
|
|
|
|
* time_get::do_get_monthname().
|
|
|
|
*
|
|
|
|
* Parsing starts by parsing an abbreviated month name. If a valid
|
|
|
|
* abbreviation is followed by a character that would lead to the full
|
|
|
|
* month name, parsing continues until the full name is found or an
|
|
|
|
* error occurs. Otherwise parsing finishes at the end of the
|
|
|
|
* abbreviated name.
|
|
|
|
*
|
|
|
|
* If an error occurs before the end, err |= ios_base::failbit. If
|
|
|
|
* parsing reads all the characters, err |=
|
|
|
|
* ios_base::eofbit.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond month name.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get_monthname(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const
|
|
|
|
{ return this->do_get_monthname(__beg, __end, __io, __err, __tm); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input year string.
|
|
|
|
*
|
|
|
|
* This function reads up to 4 characters to parse a year string and
|
|
|
|
* puts the results into a user-supplied struct tm. The result is
|
|
|
|
* returned by calling time_get::do_get_year().
|
|
|
|
*
|
|
|
|
* 4 consecutive digits are interpreted as a full year. If there are
|
|
|
|
* exactly 2 consecutive digits, the library interprets this as the
|
|
|
|
* number of years since 1900.
|
|
|
|
*
|
|
|
|
* If an error occurs before the end, err |= ios_base::failbit. If
|
|
|
|
* parsing reads all the characters, err |= ios_base::eofbit.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond year.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get_year(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const
|
|
|
|
{ return this->do_get_year(__beg, __end, __io, __err, __tm); }
|
|
|
|
|
2014-12-22 13:45:44 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
/**
|
|
|
|
* @brief Parse input string according to format.
|
|
|
|
*
|
|
|
|
* This function calls time_get::do_get with the provided
|
|
|
|
* parameters. @see do_get() and get().
|
|
|
|
*
|
|
|
|
* @param __s Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
|
|
|
* @param __format Format specifier.
|
|
|
|
* @param __modifier Format modifier.
|
|
|
|
* @return Iterator to first char not parsed.
|
|
|
|
*/
|
|
|
|
inline
|
|
|
|
iter_type get(iter_type __s, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm, char __format,
|
|
|
|
char __modifier = 0) const
|
|
|
|
{
|
|
|
|
return this->do_get(__s, __end, __io, __err, __tm, __format,
|
|
|
|
__modifier);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input string according to format.
|
|
|
|
*
|
|
|
|
* This function parses the input string according to a
|
|
|
|
* provided format string. It does the inverse of
|
|
|
|
* time_put::put. The format string follows the format
|
|
|
|
* specified for strftime(3)/strptime(3). The actual parsing
|
|
|
|
* is done by time_get::do_get.
|
|
|
|
*
|
|
|
|
* @param __s Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
|
|
|
* @param __fmt Start of the format string.
|
|
|
|
* @param __fmtend End of the format string.
|
|
|
|
* @return Iterator to first char not parsed.
|
|
|
|
*/
|
|
|
|
iter_type get(iter_type __s, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm, const char_type* __fmt,
|
|
|
|
const char_type* __fmtend) const;
|
|
|
|
#endif // __cplusplus >= 201103L
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~time_get() { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return preferred order of month, day, and year.
|
|
|
|
*
|
2014-11-29 22:58:33 +00:00
|
|
|
* This function returns an enum from time_base::dateorder giving the
|
2010-02-04 18:20:34 +00:00
|
|
|
* preferred ordering if the format @a x given to time_put::put() only
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* uses month, day, and year. This function is a hook for derived
|
|
|
|
* classes to change the value returned.
|
|
|
|
*
|
2014-11-29 22:58:33 +00:00
|
|
|
* @return A member of time_base::dateorder.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
virtual dateorder
|
|
|
|
do_date_order() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input time string.
|
|
|
|
*
|
2010-02-04 18:20:34 +00:00
|
|
|
* This function parses a time according to the format @a x and puts the
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* results into a user-supplied struct tm. This function is a hook for
|
|
|
|
* derived classes to change the value returned. @see get_time() for
|
|
|
|
* details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond time string.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input date string.
|
|
|
|
*
|
2010-02-04 18:20:34 +00:00
|
|
|
* This function parses a date according to the format @a X and puts the
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* results into a user-supplied struct tm. This function is a hook for
|
|
|
|
* derived classes to change the value returned. @see get_date() for
|
|
|
|
* details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond date string.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input weekday string.
|
|
|
|
*
|
|
|
|
* This function parses a weekday name and puts the results into a
|
|
|
|
* user-supplied struct tm. This function is a hook for derived
|
|
|
|
* classes to change the value returned. @see get_weekday() for
|
|
|
|
* details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond weekday name.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get_weekday(iter_type __beg, iter_type __end, ios_base&,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input month string.
|
|
|
|
*
|
|
|
|
* This function parses a month name and puts the results into a
|
|
|
|
* user-supplied struct tm. This function is a hook for derived
|
|
|
|
* classes to change the value returned. @see get_monthname() for
|
|
|
|
* details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond month name.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get_monthname(iter_type __beg, iter_type __end, ios_base&,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Parse input year string.
|
|
|
|
*
|
|
|
|
* This function reads up to 4 characters to parse a year string and
|
|
|
|
* puts the results into a user-supplied struct tm. This function is a
|
|
|
|
* hook for derived classes to change the value returned. @see
|
|
|
|
* get_year() for details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __beg Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
|
|
|
* @param __io Source of the locale.
|
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator to first char beyond year.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm) const;
|
|
|
|
|
2014-12-22 13:45:44 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
/**
|
|
|
|
* @brief Parse input string according to format.
|
|
|
|
*
|
|
|
|
* This function parses the string according to the provided
|
|
|
|
* format and optional modifier. This function is a hook for
|
|
|
|
* derived classes to change the value returned. @see get()
|
|
|
|
* for more details.
|
|
|
|
*
|
|
|
|
* @param __s Start of string to parse.
|
|
|
|
* @param __end End of string to parse.
|
2015-12-10 14:02:52 +00:00
|
|
|
* @param __f Source of the locale.
|
2014-12-22 13:45:44 +00:00
|
|
|
* @param __err Error flags to set.
|
|
|
|
* @param __tm Pointer to struct tm to fill in.
|
|
|
|
* @param __format Format specifier.
|
|
|
|
* @param __modifier Format modifier.
|
|
|
|
* @return Iterator to first char not parsed.
|
|
|
|
*/
|
|
|
|
#if _GLIBCXX_USE_CXX11_ABI
|
|
|
|
virtual
|
|
|
|
#endif
|
|
|
|
iter_type
|
|
|
|
do_get(iter_type __s, iter_type __end, ios_base& __f,
|
|
|
|
ios_base::iostate& __err, tm* __tm,
|
|
|
|
char __format, char __modifier) const;
|
|
|
|
#endif // __cplusplus >= 201103L
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// Extract numeric component of length __len.
|
|
|
|
iter_type
|
|
|
|
_M_extract_num(iter_type __beg, iter_type __end, int& __member,
|
|
|
|
int __min, int __max, size_t __len,
|
|
|
|
ios_base& __io, ios_base::iostate& __err) const;
|
|
|
|
|
2010-01-05 20:05:20 +00:00
|
|
|
// Extract any unique array of string literals in a const _CharT* array.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
iter_type
|
|
|
|
_M_extract_name(iter_type __beg, iter_type __end, int& __member,
|
|
|
|
const _CharT** __names, size_t __indexlen,
|
|
|
|
ios_base& __io, ios_base::iostate& __err) const;
|
|
|
|
|
2010-01-05 20:05:20 +00:00
|
|
|
// Extract day or month name in a const _CharT* array.
|
|
|
|
iter_type
|
|
|
|
_M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
|
|
|
|
const _CharT** __names, size_t __indexlen,
|
|
|
|
ios_base& __io, ios_base::iostate& __err) const;
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// Extract on a component-by-component basis, via __format argument.
|
|
|
|
iter_type
|
|
|
|
_M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, tm* __tm,
|
|
|
|
const _CharT* __format) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, typename _InIter>
|
|
|
|
locale::id time_get<_CharT, _InIter>::id;
|
|
|
|
|
2008-03-26 06:27:35 +00:00
|
|
|
/// class time_get_byname [22.2.5.2].
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
template<typename _CharT, typename _InIter>
|
|
|
|
class time_get_byname : public time_get<_CharT, _InIter>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _InIter iter_type;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
time_get_byname(const char*, size_t __refs = 0)
|
|
|
|
: time_get<_CharT, _InIter>(__refs) { }
|
|
|
|
|
2015-01-20 11:50:51 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
explicit
|
|
|
|
time_get_byname(const string& __s, size_t __refs = 0)
|
|
|
|
: time_get_byname(__s.c_str(), __refs) { }
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
protected:
|
|
|
|
virtual
|
|
|
|
~time_get_byname() { }
|
|
|
|
};
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_CXX11
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template time_put.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the code to format and output dates and times
|
|
|
|
* according to formats used by strftime().
|
|
|
|
*
|
|
|
|
* The time_put template uses protected virtual functions to provide the
|
|
|
|
* actual results. The public accessors forward the call to the virtual
|
|
|
|
* functions. These virtual functions are hooks for developers to
|
|
|
|
* implement the behavior they require from the time_put facet.
|
|
|
|
*/
|
|
|
|
template<typename _CharT, typename _OutIter>
|
|
|
|
class time_put : public locale::facet
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _OutIter iter_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
time_put(size_t __refs = 0)
|
|
|
|
: facet(__refs) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a time or date.
|
|
|
|
*
|
|
|
|
* This function formats the data in struct tm according to the
|
|
|
|
* provided format string. The format string is interpreted as by
|
|
|
|
* strftime().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __io Source of locale.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __tm Struct tm with date and time info to format.
|
|
|
|
* @param __beg Start of format string.
|
|
|
|
* @param __end End of format string.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
|
|
|
|
const _CharT* __beg, const _CharT* __end) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a time or date.
|
|
|
|
*
|
|
|
|
* This function formats the data in struct tm according to the
|
|
|
|
* provided format char and optional modifier. The format and modifier
|
|
|
|
* are interpreted as by strftime(). It does so by returning
|
|
|
|
* time_put::do_put().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __io Source of locale.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __tm Struct tm with date and time info to format.
|
|
|
|
* @param __format Format char.
|
|
|
|
* @param __mod Optional modifier char.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
put(iter_type __s, ios_base& __io, char_type __fill,
|
|
|
|
const tm* __tm, char __format, char __mod = 0) const
|
|
|
|
{ return this->do_put(__s, __io, __fill, __tm, __format, __mod); }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~time_put()
|
|
|
|
{ }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a time or date.
|
|
|
|
*
|
|
|
|
* This function formats the data in struct tm according to the
|
|
|
|
* provided format char and optional modifier. This function is a hook
|
|
|
|
* for derived classes to change the value returned. @see put() for
|
|
|
|
* more details.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __io Source of locale.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __tm Struct tm with date and time info to format.
|
|
|
|
* @param __format Format char.
|
|
|
|
* @param __mod Optional modifier char.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
|
|
|
|
char __format, char __mod) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, typename _OutIter>
|
|
|
|
locale::id time_put<_CharT, _OutIter>::id;
|
|
|
|
|
2008-03-26 06:27:35 +00:00
|
|
|
/// class time_put_byname [22.2.5.4].
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
template<typename _CharT, typename _OutIter>
|
|
|
|
class time_put_byname : public time_put<_CharT, _OutIter>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _OutIter iter_type;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
time_put_byname(const char*, size_t __refs = 0)
|
|
|
|
: time_put<_CharT, _OutIter>(__refs)
|
2017-07-19 16:59:00 +00:00
|
|
|
{ }
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
2015-01-20 11:50:51 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
explicit
|
|
|
|
time_put_byname(const string& __s, size_t __refs = 0)
|
|
|
|
: time_put_byname(__s.c_str(), __refs) { }
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
protected:
|
|
|
|
virtual
|
|
|
|
~time_put_byname() { }
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Money format ordering data.
|
2010-02-10 05:45:24 +00:00
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This class contains an ordered array of 4 fields to represent the
|
|
|
|
* pattern for formatting a money amount. Each field may contain one entry
|
|
|
|
* from the part enum. symbol, sign, and value must be present and the
|
|
|
|
* remaining field must contain either none or space. @see
|
|
|
|
* moneypunct::pos_format() and moneypunct::neg_format() for details of how
|
|
|
|
* these fields are interpreted.
|
|
|
|
*/
|
|
|
|
class money_base
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum part { none, space, symbol, sign, value };
|
|
|
|
struct pattern { char field[4]; };
|
|
|
|
|
|
|
|
static const pattern _S_default_pattern;
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
_S_minus,
|
|
|
|
_S_zero,
|
|
|
|
_S_end = 11
|
|
|
|
};
|
|
|
|
|
|
|
|
// String literal of acceptable (narrow) input/output, for
|
|
|
|
// money_get/money_put. "-0123456789"
|
|
|
|
static const char* _S_atoms;
|
|
|
|
|
|
|
|
// Construct and return valid pattern consisting of some combination of:
|
|
|
|
// space none symbol sign value
|
condition_variable.cc (condition_variable, [...]): Mark throw()
* src/condition_variable.cc (condition_variable,
condition_variable_any constructors): Mark throw()
* src/hash.cc (operator() for long double, string, and wstring): Mark
throw ().
* src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
_M_setup, rdbuf, str): Mark throw ().
* src/chrono.cc (new): Mark throw ().
* include/std/system_error (system_category, generic_category): Mark
throw () and const.
* include/std/chrono (now): Mark throw ().
* include/std/condition_variable (condition_variable,
~condition_variable, condition_variable_any,
~condition_variable_any): Mark throw ().
* include/std/mutex (mutex): Mark throw ().
* include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
throw.
* include/bits/functional_hash.h (operator() on size_t): Mark pure and throw ().
* include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
* include/bits/locale_classes.h (_S_initialize_once,
_S_clone_c_locale): Mark throw ().
(_S_get_c_name): Mark const and throw ().
(_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark throw ().
* include/bits/locale_facets.h (__convert_to_v explicit instances):
Mark throw ().
(_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark throw ().
* include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
ios_base): Mark throw ()
* include/bits/locale_facets_nonio.h (_M_put): Mark throw.
* include/backward/strstream (strstreambuf constructors): Mark throw ().
(str, freeze, _M_setupf): Mark throw ().
(pcount): Mark pure and throw ().
(rdbuf): Mark const and throw ().
From-SVN: r146328
2009-04-18 23:19:18 +02:00
|
|
|
_GLIBCXX_CONST static pattern
|
|
|
|
_S_construct_pattern(char __precedes, char __space, char __posn) throw ();
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
struct __moneypunct_cache : public locale::facet
|
|
|
|
{
|
|
|
|
const char* _M_grouping;
|
|
|
|
size_t _M_grouping_size;
|
|
|
|
bool _M_use_grouping;
|
|
|
|
_CharT _M_decimal_point;
|
|
|
|
_CharT _M_thousands_sep;
|
|
|
|
const _CharT* _M_curr_symbol;
|
|
|
|
size_t _M_curr_symbol_size;
|
|
|
|
const _CharT* _M_positive_sign;
|
|
|
|
size_t _M_positive_sign_size;
|
|
|
|
const _CharT* _M_negative_sign;
|
|
|
|
size_t _M_negative_sign_size;
|
|
|
|
int _M_frac_digits;
|
|
|
|
money_base::pattern _M_pos_format;
|
|
|
|
money_base::pattern _M_neg_format;
|
|
|
|
|
|
|
|
// A list of valid numeric literals for input and output: in the standard
|
|
|
|
// "C" locale, this is "-0123456789". This array contains the chars after
|
|
|
|
// having been passed through the current locale's ctype<_CharT>.widen().
|
|
|
|
_CharT _M_atoms[money_base::_S_end];
|
|
|
|
|
|
|
|
bool _M_allocated;
|
|
|
|
|
|
|
|
__moneypunct_cache(size_t __refs = 0) : facet(__refs),
|
2010-06-03 19:15:56 +00:00
|
|
|
_M_grouping(0), _M_grouping_size(0), _M_use_grouping(false),
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
_M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),
|
2010-06-03 19:15:56 +00:00
|
|
|
_M_curr_symbol(0), _M_curr_symbol_size(0),
|
|
|
|
_M_positive_sign(0), _M_positive_sign_size(0),
|
|
|
|
_M_negative_sign(0), _M_negative_sign_size(0),
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
_M_frac_digits(0),
|
|
|
|
_M_pos_format(money_base::pattern()),
|
|
|
|
_M_neg_format(money_base::pattern()), _M_allocated(false)
|
|
|
|
{ }
|
|
|
|
|
|
|
|
~__moneypunct_cache();
|
|
|
|
|
|
|
|
void
|
|
|
|
_M_cache(const locale& __loc);
|
|
|
|
|
|
|
|
private:
|
|
|
|
__moneypunct_cache&
|
|
|
|
operator=(const __moneypunct_cache&);
|
|
|
|
|
|
|
|
explicit
|
|
|
|
__moneypunct_cache(const __moneypunct_cache&);
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
__moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
|
|
|
|
{
|
|
|
|
if (_M_allocated)
|
|
|
|
{
|
|
|
|
delete [] _M_grouping;
|
|
|
|
delete [] _M_curr_symbol;
|
|
|
|
delete [] _M_positive_sign;
|
|
|
|
delete [] _M_negative_sign;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template moneypunct.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the punctuation, grouping and other formatting
|
|
|
|
* features of money amount string representations.
|
|
|
|
*/
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
class moneypunct : public locale::facet, public money_base
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
|
|
|
|
|
|
|
|
private:
|
|
|
|
__cache_type* _M_data;
|
|
|
|
|
|
|
|
public:
|
|
|
|
/// This value is provided by the standard, but no reason for its
|
|
|
|
/// existence.
|
|
|
|
static const bool intl = _Intl;
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
2010-06-03 19:15:56 +00:00
|
|
|
moneypunct(size_t __refs = 0)
|
|
|
|
: facet(__refs), _M_data(0)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
{ _M_initialize_moneypunct(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is an internal constructor.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __cache Cache for optimization.
|
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
moneypunct(__cache_type* __cache, size_t __refs = 0)
|
|
|
|
: facet(__refs), _M_data(__cache)
|
|
|
|
{ _M_initialize_moneypunct(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Internal constructor. Not for general use.
|
|
|
|
*
|
|
|
|
* This is a constructor for use by the library itself to set up new
|
|
|
|
* locales.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __cloc The C locale.
|
|
|
|
* @param __s The name of a locale.
|
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
|
2010-06-03 19:15:56 +00:00
|
|
|
: facet(__refs), _M_data(0)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
{ _M_initialize_moneypunct(__cloc, __s); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return decimal point character.
|
|
|
|
*
|
|
|
|
* This function returns a char_type to use as a decimal point. It
|
|
|
|
* does so by returning returning
|
|
|
|
* moneypunct<char_type>::do_decimal_point().
|
|
|
|
*
|
|
|
|
* @return @a char_type representing a decimal point.
|
|
|
|
*/
|
|
|
|
char_type
|
|
|
|
decimal_point() const
|
|
|
|
{ return this->do_decimal_point(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return thousands separator character.
|
|
|
|
*
|
|
|
|
* This function returns a char_type to use as a thousands
|
|
|
|
* separator. It does so by returning returning
|
|
|
|
* moneypunct<char_type>::do_thousands_sep().
|
|
|
|
*
|
|
|
|
* @return char_type representing a thousands separator.
|
|
|
|
*/
|
|
|
|
char_type
|
|
|
|
thousands_sep() const
|
|
|
|
{ return this->do_thousands_sep(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return grouping specification.
|
|
|
|
*
|
|
|
|
* This function returns a string representing groupings for the
|
|
|
|
* integer part of an amount. Groupings indicate where thousands
|
|
|
|
* separators should be inserted.
|
|
|
|
*
|
|
|
|
* Each char in the return string is interpret as an integer rather
|
|
|
|
* than a character. These numbers represent the number of digits in a
|
|
|
|
* group. The first char in the string represents the number of digits
|
|
|
|
* in the least significant group. If a char is negative, it indicates
|
|
|
|
* an unlimited number of digits for the group. If more chars from the
|
|
|
|
* string are required to group a number, the last char is used
|
|
|
|
* repeatedly.
|
|
|
|
*
|
2010-02-04 18:20:34 +00:00
|
|
|
* For example, if the grouping() returns <code>\003\002</code>
|
|
|
|
* and is applied to the number 123456789, this corresponds to
|
|
|
|
* 12,34,56,789. Note that if the string was <code>32</code>, this would
|
|
|
|
* put more than 50 digits into the least significant group if
|
|
|
|
* the character set is ASCII.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* The string is returned by calling
|
|
|
|
* moneypunct<char_type>::do_grouping().
|
|
|
|
*
|
|
|
|
* @return string representing grouping specification.
|
|
|
|
*/
|
|
|
|
string
|
|
|
|
grouping() const
|
|
|
|
{ return this->do_grouping(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return currency symbol string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a currency symbol. It
|
|
|
|
* does so by returning returning
|
|
|
|
* moneypunct<char_type>::do_curr_symbol().
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a currency symbol.
|
|
|
|
*/
|
|
|
|
string_type
|
|
|
|
curr_symbol() const
|
|
|
|
{ return this->do_curr_symbol(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return positive sign string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a sign for positive
|
|
|
|
* amounts. It does so by returning returning
|
|
|
|
* moneypunct<char_type>::do_positive_sign().
|
|
|
|
*
|
|
|
|
* If the return value contains more than one character, the first
|
|
|
|
* character appears in the position indicated by pos_format() and the
|
|
|
|
* remainder appear at the end of the formatted string.
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a positive sign.
|
|
|
|
*/
|
|
|
|
string_type
|
|
|
|
positive_sign() const
|
|
|
|
{ return this->do_positive_sign(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return negative sign string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a sign for negative
|
|
|
|
* amounts. It does so by returning returning
|
|
|
|
* moneypunct<char_type>::do_negative_sign().
|
|
|
|
*
|
|
|
|
* If the return value contains more than one character, the first
|
|
|
|
* character appears in the position indicated by neg_format() and the
|
|
|
|
* remainder appear at the end of the formatted string.
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a negative sign.
|
|
|
|
*/
|
|
|
|
string_type
|
|
|
|
negative_sign() const
|
|
|
|
{ return this->do_negative_sign(); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return number of digits in fraction.
|
|
|
|
*
|
|
|
|
* This function returns the exact number of digits that make up the
|
|
|
|
* fractional part of a money amount. It does so by returning
|
|
|
|
* returning moneypunct<char_type>::do_frac_digits().
|
|
|
|
*
|
|
|
|
* The fractional part of a money amount is optional. But if it is
|
|
|
|
* present, there must be frac_digits() digits.
|
|
|
|
*
|
|
|
|
* @return Number of digits in amount fraction.
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
frac_digits() const
|
|
|
|
{ return this->do_frac_digits(); }
|
|
|
|
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/**
|
|
|
|
* @brief Return pattern for money values.
|
|
|
|
*
|
|
|
|
* This function returns a pattern describing the formatting of a
|
|
|
|
* positive or negative valued money amount. It does so by returning
|
|
|
|
* returning moneypunct<char_type>::do_pos_format() or
|
|
|
|
* moneypunct<char_type>::do_neg_format().
|
|
|
|
*
|
|
|
|
* The pattern has 4 fields describing the ordering of symbol, sign,
|
|
|
|
* value, and none or space. There must be one of each in the pattern.
|
|
|
|
* The none and space enums may not appear in the first field and space
|
|
|
|
* may not appear in the final field.
|
|
|
|
*
|
|
|
|
* The parts of a money string must appear in the order indicated by
|
|
|
|
* the fields of the pattern. The symbol field indicates that the
|
|
|
|
* value of curr_symbol() may be present. The sign field indicates
|
|
|
|
* that the value of positive_sign() or negative_sign() must be
|
|
|
|
* present. The value field indicates that the absolute value of the
|
|
|
|
* money amount is present. none indicates 0 or more whitespace
|
|
|
|
* characters, except at the end, where it permits no whitespace.
|
|
|
|
* space indicates that 1 or more whitespace characters must be
|
|
|
|
* present.
|
|
|
|
*
|
|
|
|
* For example, for the US locale and pos_format() pattern
|
2010-02-04 18:20:34 +00:00
|
|
|
* {symbol,sign,value,none}, curr_symbol() == '$'
|
|
|
|
* positive_sign() == '+', and value 10.01, and
|
|
|
|
* options set to force the symbol, the corresponding string is
|
|
|
|
* <code>$+10.01</code>.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* @return Pattern for money values.
|
|
|
|
*/
|
|
|
|
pattern
|
|
|
|
pos_format() const
|
|
|
|
{ return this->do_pos_format(); }
|
|
|
|
|
|
|
|
pattern
|
|
|
|
neg_format() const
|
|
|
|
{ return this->do_neg_format(); }
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~moneypunct();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return decimal point character.
|
|
|
|
*
|
|
|
|
* Returns a char_type to use as a decimal point. This function is a
|
|
|
|
* hook for derived classes to change the value returned.
|
|
|
|
*
|
|
|
|
* @return @a char_type representing a decimal point.
|
|
|
|
*/
|
|
|
|
virtual char_type
|
|
|
|
do_decimal_point() const
|
|
|
|
{ return _M_data->_M_decimal_point; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return thousands separator character.
|
|
|
|
*
|
|
|
|
* Returns a char_type to use as a thousands separator. This function
|
|
|
|
* is a hook for derived classes to change the value returned.
|
|
|
|
*
|
|
|
|
* @return @a char_type representing a thousands separator.
|
|
|
|
*/
|
|
|
|
virtual char_type
|
|
|
|
do_thousands_sep() const
|
|
|
|
{ return _M_data->_M_thousands_sep; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return grouping specification.
|
|
|
|
*
|
|
|
|
* Returns a string representing groupings for the integer part of a
|
|
|
|
* number. This function is a hook for derived classes to change the
|
|
|
|
* value returned. @see grouping() for details.
|
|
|
|
*
|
|
|
|
* @return String representing grouping specification.
|
|
|
|
*/
|
|
|
|
virtual string
|
|
|
|
do_grouping() const
|
|
|
|
{ return _M_data->_M_grouping; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return currency symbol string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a currency symbol.
|
|
|
|
* This function is a hook for derived classes to change the value
|
|
|
|
* returned. @see curr_symbol() for details.
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a currency symbol.
|
|
|
|
*/
|
|
|
|
virtual string_type
|
|
|
|
do_curr_symbol() const
|
|
|
|
{ return _M_data->_M_curr_symbol; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return positive sign string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a sign for positive
|
|
|
|
* amounts. This function is a hook for derived classes to change the
|
|
|
|
* value returned. @see positive_sign() for details.
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a positive sign.
|
|
|
|
*/
|
|
|
|
virtual string_type
|
|
|
|
do_positive_sign() const
|
|
|
|
{ return _M_data->_M_positive_sign; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return negative sign string.
|
|
|
|
*
|
|
|
|
* This function returns a string_type to use as a sign for negative
|
|
|
|
* amounts. This function is a hook for derived classes to change the
|
|
|
|
* value returned. @see negative_sign() for details.
|
|
|
|
*
|
|
|
|
* @return @a string_type representing a negative sign.
|
|
|
|
*/
|
|
|
|
virtual string_type
|
|
|
|
do_negative_sign() const
|
|
|
|
{ return _M_data->_M_negative_sign; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return number of digits in fraction.
|
|
|
|
*
|
|
|
|
* This function returns the exact number of digits that make up the
|
|
|
|
* fractional part of a money amount. This function is a hook for
|
|
|
|
* derived classes to change the value returned. @see frac_digits()
|
|
|
|
* for details.
|
|
|
|
*
|
|
|
|
* @return Number of digits in amount fraction.
|
|
|
|
*/
|
|
|
|
virtual int
|
|
|
|
do_frac_digits() const
|
|
|
|
{ return _M_data->_M_frac_digits; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return pattern for money values.
|
|
|
|
*
|
|
|
|
* This function returns a pattern describing the formatting of a
|
|
|
|
* positive valued money amount. This function is a hook for derived
|
|
|
|
* classes to change the value returned. @see pos_format() for
|
|
|
|
* details.
|
|
|
|
*
|
|
|
|
* @return Pattern for money values.
|
|
|
|
*/
|
|
|
|
virtual pattern
|
|
|
|
do_pos_format() const
|
|
|
|
{ return _M_data->_M_pos_format; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Return pattern for money values.
|
|
|
|
*
|
|
|
|
* This function returns a pattern describing the formatting of a
|
|
|
|
* negative valued money amount. This function is a hook for derived
|
|
|
|
* classes to change the value returned. @see neg_format() for
|
|
|
|
* details.
|
|
|
|
*
|
|
|
|
* @return Pattern for money values.
|
|
|
|
*/
|
|
|
|
virtual pattern
|
|
|
|
do_neg_format() const
|
|
|
|
{ return _M_data->_M_neg_format; }
|
|
|
|
|
|
|
|
// For use at construction time only.
|
|
|
|
void
|
2010-06-03 19:15:56 +00:00
|
|
|
_M_initialize_moneypunct(__c_locale __cloc = 0,
|
|
|
|
const char* __name = 0);
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
locale::id moneypunct<_CharT, _Intl>::id;
|
|
|
|
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
const bool moneypunct<_CharT, _Intl>::intl;
|
|
|
|
|
|
|
|
template<>
|
|
|
|
moneypunct<char, true>::~moneypunct();
|
|
|
|
|
|
|
|
template<>
|
|
|
|
moneypunct<char, false>::~moneypunct();
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
|
|
|
|
|
|
|
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
|
|
|
template<>
|
|
|
|
moneypunct<wchar_t, true>::~moneypunct();
|
|
|
|
|
|
|
|
template<>
|
|
|
|
moneypunct<wchar_t, false>::~moneypunct();
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
|
|
|
|
const char*);
|
|
|
|
|
|
|
|
template<>
|
|
|
|
void
|
|
|
|
moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
|
|
|
|
const char*);
|
|
|
|
#endif
|
|
|
|
|
2008-03-26 06:27:35 +00:00
|
|
|
/// class moneypunct_byname [22.2.6.4].
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
class moneypunct_byname : public moneypunct<_CharT, _Intl>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
|
|
|
|
|
|
|
static const bool intl = _Intl;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
moneypunct_byname(const char* __s, size_t __refs = 0)
|
|
|
|
: moneypunct<_CharT, _Intl>(__refs)
|
|
|
|
{
|
2007-05-11 18:58:08 +00:00
|
|
|
if (__builtin_strcmp(__s, "C") != 0
|
|
|
|
&& __builtin_strcmp(__s, "POSIX") != 0)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
{
|
|
|
|
__c_locale __tmp;
|
|
|
|
this->_S_create_c_locale(__tmp, __s);
|
|
|
|
this->_M_initialize_moneypunct(__tmp);
|
|
|
|
this->_S_destroy_c_locale(__tmp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-20 11:50:51 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
explicit
|
|
|
|
moneypunct_byname(const string& __s, size_t __refs = 0)
|
|
|
|
: moneypunct_byname(__s.c_str(), __refs) { }
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
protected:
|
|
|
|
virtual
|
|
|
|
~moneypunct_byname() { }
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, bool _Intl>
|
|
|
|
const bool moneypunct_byname<_CharT, _Intl>::intl;
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_CXX11
|
|
|
|
|
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template money_get.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the code to parse and return a monetary
|
|
|
|
* amount from a string.
|
|
|
|
*
|
|
|
|
* The money_get template uses protected virtual functions to
|
|
|
|
* provide the actual results. The public accessors forward the
|
|
|
|
* call to the virtual functions. These virtual functions are
|
|
|
|
* hooks for developers to implement the behavior they require from
|
|
|
|
* the money_get facet.
|
|
|
|
*/
|
|
|
|
template<typename _CharT, typename _InIter>
|
|
|
|
class money_get : public locale::facet
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _InIter iter_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
money_get(size_t __refs = 0) : facet(__refs) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Read and parse a monetary value.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This function reads characters from @a __s, interprets them as a
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* monetary value according to moneypunct and ctype facets retrieved
|
|
|
|
* from io.getloc(), and returns the result in @a units as an integral
|
|
|
|
* value moneypunct::frac_digits() * the actual amount. For example,
|
|
|
|
* the string $10.01 in a US locale would store 1001 in @a units.
|
|
|
|
*
|
|
|
|
* Any characters not part of a valid money amount are not consumed.
|
|
|
|
*
|
|
|
|
* If a money value cannot be parsed from the input stream, sets
|
|
|
|
* err=(err|io.failbit). If the stream is consumed before finishing
|
|
|
|
* parsing, sets err=(err|io.failbit|io.eofbit). @a units is
|
|
|
|
* unchanged if parsing fails.
|
|
|
|
*
|
|
|
|
* This function works by returning the result of do_get().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s Start of characters to parse.
|
|
|
|
* @param __end End of characters to parse.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __err Error field to set if parsing fails.
|
|
|
|
* @param __units Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator referencing first character beyond valid money
|
|
|
|
* amount.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, long double& __units) const
|
|
|
|
{ return this->do_get(__s, __end, __intl, __io, __err, __units); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Read and parse a monetary value.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* This function reads characters from @a __s, interprets them as
|
2010-02-04 18:20:34 +00:00
|
|
|
* a monetary value according to moneypunct and ctype facets
|
|
|
|
* retrieved from io.getloc(), and returns the result in @a
|
|
|
|
* digits. For example, the string $10.01 in a US locale would
|
|
|
|
* store <code>1001</code> in @a digits.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* Any characters not part of a valid money amount are not consumed.
|
|
|
|
*
|
|
|
|
* If a money value cannot be parsed from the input stream, sets
|
|
|
|
* err=(err|io.failbit). If the stream is consumed before finishing
|
|
|
|
* parsing, sets err=(err|io.failbit|io.eofbit).
|
|
|
|
*
|
|
|
|
* This function works by returning the result of do_get().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s Start of characters to parse.
|
|
|
|
* @param __end End of characters to parse.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __err Error field to set if parsing fails.
|
|
|
|
* @param __digits Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator referencing first character beyond valid money
|
|
|
|
* amount.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, string_type& __digits) const
|
|
|
|
{ return this->do_get(__s, __end, __intl, __io, __err, __digits); }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~money_get() { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Read and parse a monetary value.
|
|
|
|
*
|
|
|
|
* This function reads and parses characters representing a monetary
|
|
|
|
* value. This function is a hook for derived classes to change the
|
|
|
|
* value returned. @see get() for details.
|
|
|
|
*/
|
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
&& (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
virtual iter_type
|
|
|
|
__do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, double& __units) const;
|
|
|
|
#else
|
|
|
|
virtual iter_type
|
|
|
|
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, long double& __units) const;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Read and parse a monetary value.
|
|
|
|
*
|
|
|
|
* This function reads and parses characters representing a monetary
|
|
|
|
* value. This function is a hook for derived classes to change the
|
|
|
|
* value returned. @see get() for details.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, string_type& __digits) const;
|
|
|
|
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \
|
|
|
|
&& defined __LONG_DOUBLE_IEEE128__
|
|
|
|
virtual iter_type
|
|
|
|
__do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, __ibm128& __units) const;
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
&& (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
virtual iter_type
|
|
|
|
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, long double& __units) const;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
template<bool _Intl>
|
|
|
|
iter_type
|
|
|
|
_M_extract(iter_type __s, iter_type __end, ios_base& __io,
|
|
|
|
ios_base::iostate& __err, string& __digits) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, typename _InIter>
|
|
|
|
locale::id money_get<_CharT, _InIter>::id;
|
|
|
|
|
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template money_put.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the code to format and output a monetary
|
|
|
|
* amount.
|
|
|
|
*
|
|
|
|
* The money_put template uses protected virtual functions to
|
|
|
|
* provide the actual results. The public accessors forward the
|
|
|
|
* call to the virtual functions. These virtual functions are
|
|
|
|
* hooks for developers to implement the behavior they require from
|
|
|
|
* the money_put facet.
|
|
|
|
*/
|
|
|
|
template<typename _CharT, typename _OutIter>
|
|
|
|
class money_put : public locale::facet
|
|
|
|
{
|
|
|
|
public:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef _OutIter iter_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
money_put(size_t __refs = 0) : facet(__refs) { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a monetary value.
|
|
|
|
*
|
|
|
|
* This function formats @a units as a monetary value according to
|
|
|
|
* moneypunct and ctype facets retrieved from io.getloc(), and writes
|
2011-08-07 07:27:06 +00:00
|
|
|
* the resulting characters to @a __s. For example, the value 1001 in a
|
|
|
|
* US locale would write <code>$10.01</code> to @a __s.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This function works by returning the result of do_put().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __units Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
put(iter_type __s, bool __intl, ios_base& __io,
|
|
|
|
char_type __fill, long double __units) const
|
|
|
|
{ return this->do_put(__s, __intl, __io, __fill, __units); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a monetary value.
|
|
|
|
*
|
2010-02-04 18:20:34 +00:00
|
|
|
* This function formats @a digits as a monetary value
|
|
|
|
* according to moneypunct and ctype facets retrieved from
|
2011-08-07 07:27:06 +00:00
|
|
|
* io.getloc(), and writes the resulting characters to @a __s.
|
2010-02-04 18:20:34 +00:00
|
|
|
* For example, the string <code>1001</code> in a US locale
|
2011-08-07 07:27:06 +00:00
|
|
|
* would write <code>$10.01</code> to @a __s.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This function works by returning the result of do_put().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __digits Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
iter_type
|
|
|
|
put(iter_type __s, bool __intl, ios_base& __io,
|
|
|
|
char_type __fill, const string_type& __digits) const
|
|
|
|
{ return this->do_put(__s, __intl, __io, __fill, __digits); }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~money_put() { }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a monetary value.
|
|
|
|
*
|
|
|
|
* This function formats @a units as a monetary value according to
|
|
|
|
* moneypunct and ctype facets retrieved from io.getloc(), and writes
|
2011-08-07 07:27:06 +00:00
|
|
|
* the resulting characters to @a __s. For example, the value 1001 in a
|
|
|
|
* US locale would write <code>$10.01</code> to @a __s.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This function is a hook for derived classes to change the value
|
|
|
|
* returned. @see put().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __units Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
&& (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
virtual iter_type
|
|
|
|
__do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
|
|
|
|
double __units) const;
|
|
|
|
#else
|
|
|
|
virtual iter_type
|
|
|
|
do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
|
|
|
|
long double __units) const;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Format and output a monetary value.
|
|
|
|
*
|
2010-02-04 18:20:34 +00:00
|
|
|
* This function formats @a digits as a monetary value
|
|
|
|
* according to moneypunct and ctype facets retrieved from
|
2011-08-07 07:27:06 +00:00
|
|
|
* io.getloc(), and writes the resulting characters to @a __s.
|
2010-02-04 18:20:34 +00:00
|
|
|
* For example, the string <code>1001</code> in a US locale
|
2011-08-07 07:27:06 +00:00
|
|
|
* would write <code>$10.01</code> to @a __s.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This function is a hook for derived classes to change the value
|
|
|
|
* returned. @see put().
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The stream to write to.
|
|
|
|
* @param __intl Parameter to use_facet<moneypunct<CharT,intl> >.
|
|
|
|
* @param __io Source of facets and io state.
|
|
|
|
* @param __fill char_type to use for padding.
|
|
|
|
* @param __digits Place to store result of parsing.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Iterator after writing.
|
|
|
|
*/
|
|
|
|
virtual iter_type
|
|
|
|
do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
|
|
|
|
const string_type& __digits) const;
|
|
|
|
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \
|
|
|
|
&& defined __LONG_DOUBLE_IEEE128__
|
|
|
|
virtual iter_type
|
|
|
|
__do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
|
|
|
|
__ibm128 __units) const;
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
// XXX GLIBCXX_ABI Deprecated
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
|
libstdc++: Add C++ runtime support for new 128-bit long double format
This adds support for the new __ieee128 long double format on
powerpc64le targets.
Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)
In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.
The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.
libstdc++-v3/ChangeLog:
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver: Make patterns less greedy.
* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
for IEEE128 long double symbols.
* configure: Regenerate.
* configure.ac: Enable alternative 128-bit long double format on
powerpc64*-*-linux*.
* doc/Makefile.in: Regenerate.
* fragment.am: Regenerate.
* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Define inline namespace for new long
double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
same type as long double.
* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
only counting narrow character facets.
(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
vtable placeholder for __ibm128 long double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_put::__do_put): Likewise.
* include/bits/locale_facets.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(num_get::__do_get, num_put::__do_put): Define.
* include/bits/locale_facets_nonio.h
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get): Declare vtable placeholder for __ibm128 long
double type.
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_put::__do_put): Likewise.
* include/bits/locale_facets_nonio.tcc
[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
(money_get::__do_get, money_put::__do_put): Define.
* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
symbols using the old 128-bit long double format, for the cxx11 ABI.
* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
gcc4-compatible ABI.
* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
double compat aliases.
* src/c++11/cow-locale_init.cc: Add comment.
* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
unconditionally.
* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
locale-inst.cc directly, not via cxx11-locale-inst.cc.
* src/c++11/locale-inst-monetary.h: New header for monetary
category instantiations.
* src/c++11/locale-inst-numeric.h: New header for numeric category
instantiations.
* src/c++11/locale-inst.cc: Include new headers for monetary,
numeric, and long double definitions.
* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
are defined in new header now.
* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
floating_from_chars.cc.
* src/c++17/Makefile.in: Regenerate.
* src/c++17/floating_from_chars.cc (from_chars_impl): Add
if-constexpr branch for __ieee128.
(from_chars): Overload for __ieee128.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/locale_init.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
* src/c++98/localename.cc (num_facets): Adjust calculation.
(locale::_Impl::_Impl(const char*, size_t)): Call
_M_init_extra_ldbl128.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/util/testsuite_abi.cc: Add new symbol versions.
Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
CXXABI_IEEE128_1.3.13 too.
* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
regex matching expected symbols.
2020-12-16 23:25:01 +00:00
|
|
|
&& (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__)
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
virtual iter_type
|
|
|
|
do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
|
|
|
|
long double __units) const;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
template<bool _Intl>
|
|
|
|
iter_type
|
|
|
|
_M_insert(iter_type __s, ios_base& __io, char_type __fill,
|
|
|
|
const string_type& __digits) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT, typename _OutIter>
|
|
|
|
locale::id money_put<_CharT, _OutIter>::id;
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Messages facet base class providing catalog typedef.
|
2010-02-10 05:45:24 +00:00
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
struct messages_base
|
|
|
|
{
|
|
|
|
typedef int catalog;
|
|
|
|
};
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_BEGIN_NAMESPACE_CXX11
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/**
|
2010-02-10 05:45:24 +00:00
|
|
|
* @brief Primary class template messages.
|
|
|
|
* @ingroup locales
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
|
|
|
* This facet encapsulates the code to retrieve messages from
|
|
|
|
* message catalogs. The only thing defined by the standard for this facet
|
|
|
|
* is the interface. All underlying functionality is
|
|
|
|
* implementation-defined.
|
|
|
|
*
|
|
|
|
* This library currently implements 3 versions of the message facet. The
|
|
|
|
* first version (gnu) is a wrapper around gettext, provided by libintl.
|
|
|
|
* The second version (ieee) is a wrapper around catgets. The final
|
|
|
|
* version (default) does no actual translation. These implementations are
|
|
|
|
* only provided for char and wchar_t instantiations.
|
|
|
|
*
|
|
|
|
* The messages template uses protected virtual functions to
|
|
|
|
* provide the actual results. The public accessors forward the
|
|
|
|
* call to the virtual functions. These virtual functions are
|
|
|
|
* hooks for developers to implement the behavior they require from
|
|
|
|
* the messages facet.
|
|
|
|
*/
|
|
|
|
template<typename _CharT>
|
|
|
|
class messages : public locale::facet, public messages_base
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Types:
|
2021-04-06 15:52:19 +01:00
|
|
|
///@{
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
/// Public typedefs
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
2021-04-06 15:52:19 +01:00
|
|
|
///@}
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
// Underlying "C" library locale information saved from
|
|
|
|
// initialization, needed by messages_byname as well.
|
|
|
|
__c_locale _M_c_locale_messages;
|
|
|
|
const char* _M_name_messages;
|
|
|
|
|
|
|
|
public:
|
|
|
|
/// Numpunct facet id.
|
|
|
|
static locale::id id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor performs initialization.
|
|
|
|
*
|
|
|
|
* This is the constructor provided by the standard.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __refs Passed to the base facet class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
messages(size_t __refs = 0);
|
|
|
|
|
|
|
|
// Non-standard.
|
|
|
|
/**
|
|
|
|
* @brief Internal constructor. Not for general use.
|
|
|
|
*
|
|
|
|
* This is a constructor for use by the library itself to set up new
|
|
|
|
* locales.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __cloc The C locale.
|
|
|
|
* @param __s The name of a locale.
|
|
|
|
* @param __refs Refcount to pass to the base class.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
explicit
|
|
|
|
messages(__c_locale __cloc, const char* __s, size_t __refs = 0);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Open a message catalog.
|
|
|
|
*
|
|
|
|
* This function opens and returns a handle to a message catalog by
|
2011-08-07 07:27:06 +00:00
|
|
|
* returning do_open(__s, __loc).
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The catalog to open.
|
|
|
|
* @param __loc Locale to use for character set conversions.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Handle to the catalog or value < 0 if open fails.
|
|
|
|
*/
|
|
|
|
catalog
|
|
|
|
open(const basic_string<char>& __s, const locale& __loc) const
|
|
|
|
{ return this->do_open(__s, __loc); }
|
|
|
|
|
|
|
|
// Non-standard and unorthodox, yet effective.
|
|
|
|
/*
|
|
|
|
* @brief Open a message catalog.
|
|
|
|
*
|
|
|
|
* This non-standard function opens and returns a handle to a message
|
|
|
|
* catalog by returning do_open(s, loc). The third argument provides a
|
|
|
|
* message catalog root directory for gnu gettext and is ignored
|
|
|
|
* otherwise.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The catalog to open.
|
|
|
|
* @param __loc Locale to use for character set conversions.
|
|
|
|
* @param __dir Message catalog root directory.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Handle to the catalog or value < 0 if open fails.
|
|
|
|
*/
|
|
|
|
catalog
|
|
|
|
open(const basic_string<char>&, const locale&, const char*) const;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Look up a string in a message catalog.
|
|
|
|
*
|
|
|
|
* This function retrieves and returns a message from a catalog by
|
|
|
|
* returning do_get(c, set, msgid, s).
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* For gnu, @a __set and @a msgid are ignored. Returns gettext(s).
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* For default, returns s. For ieee, returns catgets(c,set,msgid,s).
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __c The catalog to access.
|
|
|
|
* @param __set Implementation-defined.
|
|
|
|
* @param __msgid Implementation-defined.
|
|
|
|
* @param __s Default return value if retrieval fails.
|
|
|
|
* @return Retrieved message or @a __s if get fails.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
string_type
|
|
|
|
get(catalog __c, int __set, int __msgid, const string_type& __s) const
|
|
|
|
{ return this->do_get(__c, __set, __msgid, __s); }
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Close a message catalog.
|
|
|
|
*
|
|
|
|
* Closes catalog @a c by calling do_close(c).
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __c The catalog to close.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
void
|
|
|
|
close(catalog __c) const
|
|
|
|
{ return this->do_close(__c); }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Destructor.
|
|
|
|
virtual
|
|
|
|
~messages();
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Open a message catalog.
|
|
|
|
*
|
|
|
|
* This function opens and returns a handle to a message catalog in an
|
|
|
|
* implementation-defined manner. This function is a hook for derived
|
|
|
|
* classes to change the value returned.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __s The catalog to open.
|
|
|
|
* @param __loc Locale to use for character set conversions.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* @return Handle to the opened catalog, value < 0 if open failed.
|
|
|
|
*/
|
|
|
|
virtual catalog
|
|
|
|
do_open(const basic_string<char>&, const locale&) const;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Look up a string in a message catalog.
|
|
|
|
*
|
|
|
|
* This function retrieves and returns a message from a catalog in an
|
|
|
|
* implementation-defined manner. This function is a hook for derived
|
|
|
|
* classes to change the value returned.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* For gnu, @a __set and @a __msgid are ignored. Returns gettext(s).
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
* For default, returns s. For ieee, returns catgets(c,set,msgid,s).
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __c The catalog to access.
|
|
|
|
* @param __set Implementation-defined.
|
|
|
|
* @param __msgid Implementation-defined.
|
|
|
|
* @param __s Default return value if retrieval fails.
|
|
|
|
* @return Retrieved message or @a __s if get fails.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
virtual string_type
|
|
|
|
do_get(catalog, int, int, const string_type& __dfault) const;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Close a message catalog.
|
|
|
|
*
|
2011-08-07 07:27:06 +00:00
|
|
|
* @param __c The catalog to close.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
*/
|
|
|
|
virtual void
|
|
|
|
do_close(catalog) const;
|
|
|
|
|
|
|
|
// Returns a locale and codeset-converted string, given a char* message.
|
|
|
|
char*
|
|
|
|
_M_convert_to_char(const string_type& __msg) const
|
|
|
|
{
|
|
|
|
// XXX
|
|
|
|
return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Returns a locale and codeset-converted string, given a char* message.
|
|
|
|
string_type
|
|
|
|
_M_convert_from_char(char*) const
|
|
|
|
{
|
2011-08-07 07:27:06 +00:00
|
|
|
// XXX
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
return string_type();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _CharT>
|
|
|
|
locale::id messages<_CharT>::id;
|
|
|
|
|
2010-02-10 05:45:24 +00:00
|
|
|
/// Specializations for required instantiations.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
template<>
|
|
|
|
string
|
|
|
|
messages<char>::do_get(catalog, int, int, const string&) const;
|
|
|
|
|
|
|
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
|
|
|
template<>
|
|
|
|
wstring
|
|
|
|
messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
|
|
|
|
#endif
|
|
|
|
|
2008-03-26 06:27:35 +00:00
|
|
|
/// class messages_byname [22.2.7.2].
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
template<typename _CharT>
|
|
|
|
class messages_byname : public messages<_CharT>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef _CharT char_type;
|
|
|
|
typedef basic_string<_CharT> string_type;
|
|
|
|
|
|
|
|
explicit
|
|
|
|
messages_byname(const char* __s, size_t __refs = 0);
|
|
|
|
|
2015-01-20 11:50:51 +00:00
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
explicit
|
|
|
|
messages_byname(const string& __s, size_t __refs = 0)
|
|
|
|
: messages_byname(__s.c_str(), __refs) { }
|
|
|
|
#endif
|
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
protected:
|
|
|
|
virtual
|
|
|
|
~messages_byname()
|
|
|
|
{ }
|
|
|
|
};
|
|
|
|
|
New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
* configure.ac: Use new macros.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
* include/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export symbols related to new std::string.
Tighten old patterns to not match new symbols.
* config/locale/generic/monetary_members.cc: Guard some definitions
to not compile with new ABI.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Prevent double-free.
* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
exports. Tighten old patterns.
* doc/xml/manual/configure.xml: Document new configure options.
* doc/html/*: Regenerate.
* include/bits/basic_string.h (__cxx11::basic_string): Define new
non-reference-counted implementation in inline namespace __cxx11.
(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
inline namespace.
(literals::string_literals::operator"): Conditionally use abi-tag.
* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
LDBL_CXX11_ABI namespace macros.
* include/bits/locale_classes.h (locale::name()): Use abi_tag when
new ABI is in use.
(locale::_S_twinned_facets): New static member.
(locale::facet::__shim): Declare new type.
(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
functions for creating shims.
(locale::_Impl::_M_facet_unchecked): New member function for use
during construction.
(locale::_Impl::_M_init_extra): New member functions to create second
version of some facets.
(collate, collate_byname): Use abi_tag when new ABI is in use.
* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
(numpunct, numpunct_byname): Use __cxx11 namespace.
(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
when new ABI is in use.
(num_get::__do_get, num_put::__do_put): Do not declare long double
compat functions for new ABI.
* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
definitions.
(numpunct, numpunct_byname): Qualify explicit instantiations.
* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
moneypunct, moneypunct_byname, money_get, money_put, messages,
messages_byname): Use new inline namespace macros.
(money_get::__do_get, money_put::__do_put): Do not declare long
double compat functions for new ABI.
* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
new namespace macros.
(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
collate_byname, time_get, time_get_byname, moneypunct,
moneypunct_byname, money_get, money_put, messages, messages_byname):
Use new namespace macros.
* include/bits/regex.h: Use inline namespace macros.
* include/bits/stl_list.h (_List_base, list): Use inline namespace
instead of abi-tag.
* include/bits/stringfwd.h (basic_string): Use namespace macros.
* include/std/iosfwd (basic_stringbuf, basic_istringstream,
basic_ostringstream, basic_stringstream): Likewise.
* include/std/sstream: Likewise.
(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
* include/std/stdexcept (__cow_string, __sso_string): New types for
indirectly using std::string with either ABI.
(logic_error, runtime_error): Replace std::string member with
__cow_string when new ABI is in use. Declare non-inline copy
constructor and assignment operator. Declare const char* constructors.
(domain_error, invalid_argument, length_error, out_of_range,
range_error, overflow_error, underflow_error): Declare const char*
constructors.
* include/std/system_error (error_category): Replace with new
definition in inline namespace _V2.
(error_code::message, error_condition::message): Use abi_tag on
functions returning std::string.
* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
Define old error_category symbols.
* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
using old std::string ABI.
* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
std::string ABI.
* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
operators.
(__cow_string, error_category::_M_message): Define.
* src/c++11/cow-string-inst.cc: Explicit instantiations using old
std::string. Include src/c++98/istream-string.cc.
* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
std::wstring.
* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
string.
* src/c++11/cxx11-ios_failure.cc: Add sanity check.
* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
std::string.
* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
std::string.
* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
new std::wstring.
* src/c++11/fstream-inst.cc: Compile with new ABI.
* src/c++11/functexcept.cc: Compile with old ABI.
* src/c++11/random.cc: Compile with new ABI.
* src/c++11/sstream-inst.cc: Compile with new ABI.
* src/c++11/string-inst.cc: Explicit instantiations for new string.
* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
Define.
* src/c++11/wstring-inst.cc: Compile with new ABI.
* src/c++98/Makefile.am: Compile some host files twice for old and
new std::string. Add new files.
* src/c++98/Makefile.in: Regenerate.
* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
* src/c++98/compatibility.cc: Likewise.
* src/c++98/concept-inst.cc: Likewise.
* src/c++98/hash_tr1.cc: Likewise.
* src/c++98/istream-string.cc: New file defining functions that
work with istream and std::string moved from ...
* src/c++98/istream.cc: ... here.
* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
old ABI.
* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
either ABI.
* src/c++98/locale.cc (locale::_M_install_facet,
locale::_M_install_cache): Handle twinned facets.
* src/c++98/locale-facets.cc: Compile with old std::string ABI.
(__verify_grouping): Define new overload and old std::string version.
* src/c++98/locale_init.cc: Initialize twinned facets.
* src/c++98/localename.cc: Likewise.
* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
(__verify_grouping): Define new std::string version.
* src/c++98/stdexcept.cc: Compile with old std::string ABI.
* src/c++98/wlocale-inst.cc: Likewise.
* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
Likewise.
* testsuite/21_strings/headers/string/synopsis.cc: Use inline
namespace macros.
* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
correct exception type can be caught.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/util/exception/safety.h: Adjust member function types
for new std::string.
* testsuite/util/testsuite_abi.cc: Add new version and ignore
__float128 symbols in __cxx11 namespace.
From-SVN: r218964
2014-12-19 18:16:39 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_CXX11
|
|
|
|
|
PR libstdc++/36104 part four
2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36104 part four
* include/bits/c++config (_GLIBCXX_STD): Remove.
(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
(_GLIBCXX_P): Now _GLIBCXX_STD_A.
(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
_GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
_GLIBCXX_INLINE_PROFILE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
(_GLIBCXX_END_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
(_GLIBCXX_END_NAMESPACE_ALGO): Add.
(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
(_GLIBCXX_END_NAMESPACE_VERSION): Add.
(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
* include/*: Use new macros for namespace scope.
* config/*: Same.
* src/*: Same.
* src/Makefile.am (sources): Remove debug_list.cc, add
compatibility-debug_list-2.cc.
(parallel_sources): Remove parallel_list.cc, add
compatibility-parallel_list-2.cc.
(compatibility-parallel_list-2.[o,lo]): New rule.
* src/Makefile.in: Regenerate.
* src/debug_list.cc: Remove.
* src/parallel_list.cc: Remove.
* src/compatibility-list-2.cc: New.
* src/compatibility-debug_list-2.cc: New.
* src/compatibility-parallel_list-2.cc: New.
* doc/doxygen/user.cfg.in: Adjust macros.
* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
* testsuite/20_util/declval/requirements/1_neg.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
* testsuite/20_util/forward/c_neg.cc: Same.
* testsuite/20_util/forward/f_neg.cc: Same.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/forward_list/capacity/1.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
assign_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/forward_list/requirements/dr438/
insert_neg.cc: Same.
* testsuite/23_containers/list/capacity/29134.cc: Same.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Same.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
* testsuite/25_algorithms/sort/35588.cc: Same.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
* testsuite/ext/profile/profiler_algos.cc: Same.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
From-SVN: r169421
2011-01-30 22:39:36 +00:00
|
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
|
|
} // namespace
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
|
locale_facets.h (class collate, [...]): Move...
2007-04-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class collate, class collate_byname):
Move...
* include/bits/locale_classes.h: ... here.
* include/bits/locale_facets.tcc (locale::combine, locale::operator(),
has_facet, use_facet, collate::_M_compare, collate::_M_transform,
collate::do_compare, collate::do_transform, collate::do_hash): Move...
* include/bits/locale_classes.tcc: ... here, new.
* include/Makefile.am: Add.
* testsuite/util/testsuite_abi.h: Include <locale>.
* include/std/locale: Tweak.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/bits/codecvt.h: Likewise.
* include/Makefile.in: Regenerate.
* include/bits/codecvt.h: Adjust extern template declarations.
* include/bits/ostream_insert.h: Likewise.
* include/bits/ostream.tcc: Likewise.
* include/bits/locale_facets.h: Do not include <bits/codecvt.h>.
* include/std/fstream: Do it here.
* include/bits/locale_facets_nonio.h: Likewise.
From-SVN: r124114
2007-04-24 18:57:12 +00:00
|
|
|
// Include host and configuration specific messages functions.
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
#include <bits/messages_members.h>
|
|
|
|
|
locale_facets.h (class collate, [...]): Move...
2007-04-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class collate, class collate_byname):
Move...
* include/bits/locale_classes.h: ... here.
* include/bits/locale_facets.tcc (locale::combine, locale::operator(),
has_facet, use_facet, collate::_M_compare, collate::_M_transform,
collate::do_compare, collate::do_transform, collate::do_hash): Move...
* include/bits/locale_classes.tcc: ... here, new.
* include/Makefile.am: Add.
* testsuite/util/testsuite_abi.h: Include <locale>.
* include/std/locale: Tweak.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/bits/codecvt.h: Likewise.
* include/Makefile.in: Regenerate.
* include/bits/codecvt.h: Adjust extern template declarations.
* include/bits/ostream_insert.h: Likewise.
* include/bits/ostream.tcc: Likewise.
* include/bits/locale_facets.h: Do not include <bits/codecvt.h>.
* include/std/fstream: Do it here.
* include/bits/locale_facets_nonio.h: Likewise.
From-SVN: r124114
2007-04-24 18:57:12 +00:00
|
|
|
// 22.2.1.5 Template class codecvt
|
|
|
|
#include <bits/codecvt.h>
|
|
|
|
|
2011-01-21 19:41:13 +00:00
|
|
|
#include <bits/locale_facets_nonio.tcc>
|
locale_facets.h (class collate, [...]): Move...
2007-04-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class collate, class collate_byname):
Move...
* include/bits/locale_classes.h: ... here.
* include/bits/locale_facets.tcc (locale::combine, locale::operator(),
has_facet, use_facet, collate::_M_compare, collate::_M_transform,
collate::do_compare, collate::do_transform, collate::do_hash): Move...
* include/bits/locale_classes.tcc: ... here, new.
* include/Makefile.am: Add.
* testsuite/util/testsuite_abi.h: Include <locale>.
* include/std/locale: Tweak.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/bits/codecvt.h: Likewise.
* include/Makefile.in: Regenerate.
* include/bits/codecvt.h: Adjust extern template declarations.
* include/bits/ostream_insert.h: Likewise.
* include/bits/ostream.tcc: Likewise.
* include/bits/locale_facets.h: Do not include <bits/codecvt.h>.
* include/std/fstream: Do it here.
* include/bits/locale_facets_nonio.h: Likewise.
From-SVN: r124114
2007-04-24 18:57:12 +00:00
|
|
|
|
locale_facets.h (class time_base, [...]): Move...
2007-04-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class time_base,
struct __timepunct_cache, class __timepunct, class time_get,
class time_get_byname, class time_put, class time_put_byname,
class money_base, struct __moneypunct_cache, class moneypunct,
class moneypunct_byname, class money_get, class money_put,
struct messages_base, class messages, class messages_byname): Move...
* include/bits/locale_facets_nonio.h: ... here.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<> >,
__moneypunct_cache<>::_M_cache, money_get<>::_M_extract,
money_get<>::__do_get, money_get<>::do_get, money_put<>::_M_insert,
money_put<>::__do_put, money_put<>::do_put, time_get<>::do_date_order,
time_get<>::_M_extract_via_format, time_get<>::_M_extract_num,
time_get<>::_M_extract_name, time_get<>::do_get_time,
time_get<>::do_get_date, time_get<>::do_get_weekday,
time_get<>::do_get_monthname, time_get<>::do_get_year, time_put<>::put,
time_put<>::do_put): Move...
* include/bits/locale_facets_nonio.tcc: ... here.
* include/Makefile.am: Add.
* include/std/locale: Adjust includes.
* include/std/fstream: Likewise.
* include/std/istream: Likewise.
* include/std/ostream: Likewise.
* include/Makefile.in: Regenerate.
From-SVN: r124080
2007-04-23 20:26:30 +00:00
|
|
|
#endif
|