Commit Graph

215 Commits

Author SHA1 Message Date
Paolo Carlini
a70c902e06 re PR libstdc++/21238 (conflicting "typedef __numpunct_cache<_CharT> __cache_type;" in std::numpunct<CharT> makes specialization impossible)
2005-04-29  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/21238
	* include/bits/locale_facets.tcc (num_get::_M_extract_float,
	num_get::_M_extract_int, num_get::do_get(bool&),
	num_put::_M_insert_int, num_put::_M_insert_float,
	num_put::do_put(bool), money_get::_M_extract,
	money_put::_M_insert): Adjust the __cache_type typedef not to
	forward to a numpunct/moneypunct typedef.
	* testsuite/testsuite_character.h: Add pod_uint and its numpunct
	and moneypunct specializations.
	* testsuite/testsuite_character.cc: Add numpunct<pod_uint>::id
	and moneypunct<pod_uint>::id.
	* testsuite/22_locale/num_get/3.cc: New.
	* testsuite/22_locale/num_put/3.cc: Likewise.
	* testsuite/22_locale/money_get/3.cc: Likewise.
	* testsuite/22_locale/money_put/3.cc: Likewise.

	* include/bits/locale_facets.tcc (money_put::_M_insert,
	time_get::_M_extract_name): Prefer operator== to operator!=
	on char_types.

From-SVN: r99012
2005-04-29 18:50:00 +00:00
Paolo Carlini
44ecf60364 re PR libstdc++/21209 (signed integer overflow in num_get<>::_M_extract_int)
2005-04-26  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/21209
	* include/bits/locale_facets.tcc (_M_extract_int): Avoid signed
	integer overflow, always use a suited unsigned type in the main
	parsing loop.
	(struct __to_unsigned_type): New.
	* testsuite/22_locale/num_get/get/char/16.cc: New.
	* testsuite/22_locale/num_get/get/wchar_t/16.cc: Likewise.

From-SVN: r98768
2005-04-26 09:31:07 +00:00
Paolo Carlini
101c5bc507 re PR libstdc++/20914 (Another grouping trouble)
2005-04-17  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/20914
	* include/bits/locale_facets.tcc (__int_to_char(_CharT*, _ValueT,
	const _CharT*, ios_base::fmtflags, bool)): Don't deal with numeric
	base or sign here, instead...
	(_M_insert_int(_OutIter, ios_base&, _CharT, _ValueT)): ... here,
	after adding the grouping. This fixes the bug and also allows to
	clean-up the code dealing with integer types.
	(_M_group_int(const char*, size_t, _CharT, ios_base&, _CharT*,
	_CharT*, int&)): Simplify, remove bits dealing with numeric base.
	(__int_to_char(_CharT*, unsigned long, const _CharT*,
	ios_base::fmtflags), __int_to_char(_CharT*, unsigned long long,
	const _CharT*, ios_base::fmtflags)): Remove hackish fix for
	libstdc++/15565.
	(__int_to_char(_CharT*, long, const _CharT*, ios_base::fmtflags),
	__int_to_char(_CharT*, long long, const _CharT*, ios_base::fmtflags)):
	Simplify, don't pass the sign.
	(_M_insert_float(_OutIter, ios_base&, _CharT, char, _ValueT)):
	Deal with a sign at the beginning of __cs; robustify the grouping
	check.
	* testsuite/22_locale/num_put/put/char/20914.cc: New.
	* testsuite/22_locale/num_put/put/wchar_t/20914.cc: Likewise.

From-SVN: r98271
2005-04-17 14:30:37 +00:00
Paolo Carlini
eaf727f9d8 re PR libstdc++/20909 (incorrect floating point format)
2005-04-08  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/20909
	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
	Don't even try to group numbers like 2e20, i.e., no decimal
	point, scientific notation.
	* testsuite/22_locale/num_put/put/char/20909.cc: New.
	* testsuite/22_locale/num_put/put/wchar_t/20909.cc: Likewise.

From-SVN: r97873
2005-04-09 00:08:58 +00:00
Benjamin Kosnik
0aa06b18fc doxygroups.cc: Add std::tr1 namespace.
2004-11-23  Benjamin Kosnik  <bkoz@redhat.com>

	* docs/doxygen/doxygroups.cc: Add std::tr1 namespace.
	* docs/doxygen/run_doxygen: Renames for std::tr1.
	* docs/doxygen/user.cfg.in: Add cxxabi.h.
	* include/bits/*.tcc: Add file markup.
	* include/bits/allocator.h: Add link to allocator.html.
	* include/bits/atomicity.h: Add file markup.
	* include/bits/concurrence.h: Same.
	* include/bits/functexcept.h: Same.
	* include/ext*: Adjust file markup, remove GCC3 bits.
	* include/std/*: Adjust file markup, remove bits about renamed files.
	* libsupc++/cxxabi.h: Add file markup.
	* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust line numbers.

From-SVN: r91135
2004-11-24 04:11:23 +00:00
Paolo Carlini
899671904c locale_facets.tcc (num_get<>::do_get(void*&)): If the failbit is set, don't set it again.
2004-11-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::do_get(void*&)):
	If the failbit is set, don't set it again.
	(money_get<>::_M_extract): Minor stylistic tweak: consistently
	with the other functions, take care of eofbit at the end.

From-SVN: r90861
2004-11-18 13:38:09 +00:00
Paolo Carlini
cf5c6c8d31 locale_facets.tcc (time_get<>::do_get_weekday, [...]): Absolutely avoid dereferencing end iterators.
2004-11-09  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (time_get<>::do_get_weekday,
	time_get<>::do_get_monthname): Absolutely avoid dereferencing
	end iterators.

	* include/bits/locale_facets.tcc (time_get<>::_M_extract_name):
	Minor tweak.

From-SVN: r90341
2004-11-09 12:49:20 +00:00
Paolo Carlini
eba7452ba8 locale_facets.tcc (num_get<>::do_get(bool&)): Evaluate __beg == __end the exact strict minimum number of times.
2004-11-04  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::do_get(bool&)):
	Evaluate __beg == __end the exact strict minimum number of times.

From-SVN: r90058
2004-11-04 11:29:30 +00:00
Paolo Carlini
e597a4d366 locale_facets.tcc (num_get<>::_M_extract_int): Evaluate *__beg the exact strict minimum number of times...
2004-11-02  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_int):
	Evaluate *__beg the exact strict minimum number of times; likewise
	for __beg != __end; slightly simplify main parsing loop.

From-SVN: r90012
2004-11-03 01:05:08 +00:00
Paolo Carlini
8dc5fa3267 locale_facets.tcc (num_get<>::_M_extract_float): Evaluate *__beg the exact strict minimum number of times...
2004-11-01  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
	Evaluate *__beg the exact strict minimum number of times; likewise
	for __beg != __end; in the main parsing loop, call ++__beg in two
	places only. The former is also a correctness issue, because,
	according to the standard (22.2.2.1.2, Stage 2), 'in' shall be
	dereferenced only one time for each increment.

From-SVN: r89940
2004-11-01 11:31:44 +00:00
Paolo Carlini
53a8d0f021 locale_facets.tcc (num_get<>::_M_extract_float): Cache *__beg in __c when parsing exponent sign too.
2004-10-28  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
	Cache *__beg in __c when parsing exponent sign too.
	(num_get<>::do_get(..., bool&)): Cache *__beg.
	(money_get<>::_M_extract)): Likewise, in money_base::value.

From-SVN: r89753
2004-10-28 12:47:36 +00:00
Benjamin Kosnik
aed305a929 array (array): Make safe for zero-sized arrays.
2004-10-21  Benjamin Kosnik  <bkoz@redhat.com>

	* include/tr1/array (array): Make safe for zero-sized arrays.
	(array::end): Return one past the end.
	(array::at): Use __throw_out_of_range, include functexcept.h.
	(operator==): Implement.
	(operator!=): Same.
	(operator<): Same.
	(operator>): Same.
	(operator>=): Same.
	(operator<=): Same.
	* testsuite/tr1/6_containers/array/capacity/(empty.cc,
	max_size.cc, size.cc): New.
	* testsuite/tr1/6_containers/array/comparison_operators/(equal.cc,
	greater.cc, greater_or_equal.cc, less.cc, less_or_equal.cc,
	not_equal): New.
	* testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
	New.
	* testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc:
	New.
	* testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc: New.
	* testsuite/tr1/6_containers/array/requirements/(contiguous.cc,
	instantiate, typedefs, zero_size_arrays): New.

From-SVN: r89429
2004-10-22 05:32:16 +00:00
Paolo Carlini
b8d65dace7 locale_facets.tcc (time_get<>::_M_extract_via_format, case 'S'): Allow for at least one leap-second (as per C99...
2004-08-29  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (time_get<>::_M_extract_via_format,
	case 'S'): Allow for at least one leap-second (as per C99, 7.23.1
	and 7.23.3.5), two if !_GLIBCXX_USE_C99.
	* testsuite/22_locale/time_get/get_time/char/4.cc: New.
	* testsuite/22_locale/time_get/get_time/wchar_t/4.cc: Likewise.

From-SVN: r86712
2004-08-29 09:04:33 +00:00
Paolo Carlini
cb79308987 PR libstdc++/17038 (partial)
2004-08-25  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/17038 (partial)
	* include/bits/locale_facets.tcc (time_put<>::do_put): Increase
	__maxlen to 128.
	* include/bits/locale_facets.h (class __timepunct): Add FIXME
	comment about _M_put.
	* config/locale/generic/time_members.cc (_M_put): Always null
	terminate __s.
	* config/locale/gnu/time_members.cc (_M_put): Likewise.
	* testsuite/22_locale/time_put/put/char/17038.cc: New.
	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: New.

From-SVN: r86586
2004-08-25 23:38:29 +00:00
Paolo Carlini
44e91562ed locale_facets.tcc (num_put<>::do_put(bool)): Cast to a signed type, long according to the resolution of DR 359.
2004-08-22  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_put<>::do_put(bool)): Cast
	to a signed type, long according to the resolution of DR 359.
	* testsuite/22_locale/num_put/put/char/9.cc: New.
	* testsuite/22_locale/num_put/put/wchar_t/9.cc: New.

	* include/bits/locale_facets.tcc (num_put<>::do_put(const void*)):
	Simplify a bit: no need to clear showpos.

From-SVN: r86382
2004-08-22 17:55:51 +00:00
Paolo Carlini
23d4fa49c6 deque.tcc: Trivial formatting fixes.
2004-08-15  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/deque.tcc: Trivial formatting fixes.

	* include/bits/locale_facets.tcc (num_get<>::do_get(&bool)):
	Remove unneded typedef.

	* include/bits/locale_facets.tcc: Very minor tweaks.

	* testsuite/22_locale/time_put/put/wchar_t/1.cc: Use proper
	type for the fill argument.
	* testsuite/22_locale/time_put/put/wchar_t/10.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/2.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/3.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/5.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/6.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/7.cc: Likewise.
	* testsuite/22_locale/time_put/put/wchar_t/8.cc: Likewise.

From-SVN: r86026
2004-08-15 19:03:44 +00:00
Paolo Carlini
49864a8255 c_locale.h (__convert_from_v): Don't use a default for __prec, assume __prec >= 0 and simplify.
2004-08-07  Paolo Carlini  <pcarlini@suse.de>

	* config/locale/generic/c_locale.h (__convert_from_v): Don't
	use a default for __prec, assume __prec >= 0 and simplify.
	* config/locale/gnu/c_locale.h (__convert_from_v): Likewise.
	* include/bits/locale_facets.tcc (money_put<>::do_put(long double)):
	Pass format "%.*Lf" + precision == 0, equivalent to "%.0Lf".

From-SVN: r85669
2004-08-07 13:48:31 +00:00
Paolo Carlini
2347da644d locale_facets.tcc (num_get<>::_M_extract_float, [...]): In the main parsing loop delay the life of __q to the actual use point.
2004-07-30  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
	num_get<>::_M_extract_int): In the main parsing loop delay the
	life of __q to the actual use point.

From-SVN: r85380
2004-07-31 09:00:09 +00:00
Paolo Carlini
7c9b102ede re PR libstdc++/14220 ([3.5] num_put::do_put() undesired float/double behavior)
2004-07-29  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/14220
	* include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
	Don't clip the precision passed down to __convert_from_v:
	22.2.2.2.2 nowhere says so.
	* testsuite/22_locale/num_put/put/char/14220.cc: New.
	* testsuite/22_locale/num_put/put/wchar_t/14220.c: Likewise.

From-SVN: r85315
2004-07-29 22:11:04 +00:00
Benjamin Kosnik
1f34d12191 re PR libstdc++/16678 (warning: suggest parentheses around assignment used as truth value)
2004-07-23  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/16678
	* include/bits/locale_facets.tcc: Fix for -Werror.

From-SVN: r85103
2004-07-24 00:10:09 +00:00
Alexandre Oliva
fa94878458 istream.tcc (getline): Make sure arguments passed to min/max have the same type.
* include/bits/istream.tcc (getline): Make sure arguments passed
to min/max have the same type.
* include/bits/locale_facets.tcc (__verify_grouping): Likewise.
* include/bits/stl_deque.h (_Deque_base::_Deque_base): Likewise.

From-SVN: r83522
2004-06-22 22:22:14 +00:00
Paolo Carlini
ce2a46a203 locale_facets.tcc (time_get<>::_M_extract_name): Don't use the 'magic number' 10 in the computation of __minlen...
2004-06-14  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (time_get<>::_M_extract_name):
	Don't use the 'magic number' 10 in the computation of __minlen;
	never access __name past __minlen; in the loop over __i3, don't
	decrease __nmatches and increase __i3 at once, only either of
	the two; tidy.

From-SVN: r83088
2004-06-14 10:49:36 +00:00
Paolo Carlini
fc6b41718d locale_facets.tcc (time_get<>::do_get_time, [...]): Use only once _M_extract_via_format...
2004-06-13  Paolo Carlini  <pcarlini@suse.de>

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

From-SVN: r83059
2004-06-13 09:52:14 +00:00
Paolo Carlini
fea6ecb746 re PR libstdc++/15565 ([3.4 only] SLES9: leading + sign for unsigned int with showpos)
2004-05-22  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/15565
	* include/bits/locale_facets.tcc (__int_to_char(unsigned long),
	__int_to_char(unsigned long long)): Showpos is not relevant
	for unsigned types.
	* testsuite/22_locale/num_put/put/char/15565.cc: New.
	* testsuite/22_locale/num_put/put/wchar_t/15565.cc: New.

	* testsuite/22_locale/num_put/put/wchar_t/1.cc: Use L for the fill
	char.
	* testsuite/22_locale/num_put/put/wchar_t/2.cc: Likewise.
	* testsuite/22_locale/num_put/put/wchar_t/3.cc: Likewise.
	* testsuite/22_locale/num_put/put/wchar_t/4.cc: Likewise.
	* testsuite/22_locale/num_put/put/wchar_t/5.cc: Likewise.
	* testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
	* testsuite/22_locale/num_put/put/wchar_t/8.cc: Likewise.

From-SVN: r82128
2004-05-22 09:02:56 +00:00
Benjamin Kosnik
586b5f2013 locale_facets.h: Tweaks for 80 column.
2004-03-23  Benjamin Kosnik  <bkoz@redhat.com>

	* include/bits/locale_facets.h: Tweaks for 80 column.
	(__numpunct_cache::_M_cache): Move to locale_facets.tcc.
	(__moneypunct_cache::_M_cache): Same.
	(num_get): Don't inherit from __num_base.
	(num_put): Same.
	(money_get): Don't inherit from money_base.
	(money_put): Same.
	(__timepunct::_M_am_pm_format): New.
	(time_get::_M_extract_num): Return iterator, use ios_base as argument.
	(time_get::_M_extract_name): Same.
	(time_get::_M_extract_via_format): Same.
	* include/bits/locale_facets.tcc: Tweaks for 80 column.
	Use _M_getloc instead of getloc.
	* testsuite/22_locale/money_put/put/char/9780-3.cc: New.
	* testsuite/22_locale/num_put/put/char/9780-2.cc: New.
	* testsuite/22_locale/time_put/put/char/9780-1.cc: New.

From-SVN: r79902
2004-03-24 06:41:07 +00:00
Paolo Carlini
33674f003a locale_facets.tcc (money_get<>::_M_extract): Adjust the logic underlying the parsing of symbol to deal correctly with an...
2004-03-15  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Adjust the logic underlying the parsing of symbol to deal
	correctly with an optional sign component (i.e., when either
	negative_sign or positive_sign is empty)
	* testsuite/22_locale/money_get/get/char/19.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/19.cc: New.

2004-03-15  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Do not accept an incomplete currency symbol.
	* testsuite/22_locale/money_get/get/char/18.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/18.cc: New.

From-SVN: r79491
2004-03-15 09:02:30 +00:00
Paolo Carlini
f1c89270e5 locale_facets.tcc (money_get<>::_M_extract): The value _space_ indicates that at least one space is required at that position.
2004-03-08  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	The value _space_ indicates that at least one space is required
	at that position.
	* testsuite/22_locale/money_get/get/char/17.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/17.cc: New.

	* testsuite/22_locale/money_get/get/char/7.cc: Minor tweaks.
	* testsuite/22_locale/money_get/get/wchar_t/7.cc: Likewise.

	* include/bits/locale_facets.tcc (money_get<>::do_get(long_double&)):
	Remove redundant conditional on __str.size().

From-SVN: r79111
2004-03-08 10:51:30 +00:00
Paolo Carlini
0c2cc7b37a locale_facets.tcc: Tweak the comment preceding has_facet: doesn't throw.
2004-03-06  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc: Tweak the comment preceding
	has_facet: doesn't throw.

From-SVN: r79022
2004-03-06 16:55:28 +00:00
Paolo Carlini
ce3455909f locale_facets.tcc (num_get<>::_M_extract_float, [...]): Prefer plain operator== to traits::eq().
2004-03-06  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
	num_get<>::_M_extract_int, num_get<>::do_get(bool&),
	__pad<>::_S_pad): Prefer plain operator== to traits::eq().
	* testsuite/testsuite_character.h (struct __gnu_test::character):
	Provide operator==.
	* testsuite/testsuite_hooks.h (struct __gnu_test::pod_char):
	Likewise.

From-SVN: r79011
2004-03-06 09:00:14 +00:00
Paolo Carlini
ced3ad4d7c locale_facets.tcc (money_put<>::_M_insert): Fix warning regression.
2004-03-03  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
	Fix warning regression.

From-SVN: r78861
2004-03-03 20:51:22 +00:00
Paolo Carlini
039e3c5c45 locale_facets.tcc (money_put<>::_M_insert): Deal properly with empty __digits and negative frac_digits, clean-up a bit.
2004-03-03  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
	Deal properly with empty __digits and negative frac_digits,
	clean-up a bit.

From-SVN: r78844
2004-03-03 18:07:23 +00:00
Paolo Carlini
59564c5e9a locale_facets.tcc (money_get<>::_M_extract): Reorganize a bit the main parsing loop...
2004-03-02  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Reorganize a bit the main parsing loop, thus early detecting
	an empty value component.
	* testsuite/22_locale/money_get/get/char/16.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/16.cc: New.

From-SVN: r78788
2004-03-02 22:25:51 +00:00
Paolo Carlini
98e953f57b locale_facets.tcc (money_get<>::_M_extract, [...]): ...
2004-03-01  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract,
	money_get<>::do_get(string_type&)): ... and two more.

From-SVN: r78708
2004-03-01 17:29:27 +00:00
Paolo Carlini
b19fb27d1e locale_facets.tcc (money_get<>::_M_extract): Fix thinkos in the switch from string_type& to string& as last argument.
2004-03-01  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Fix thinkos in the switch from string_type& to string& as last
	argument.

From-SVN: r78707
2004-03-01 17:08:45 +00:00
Paolo Carlini
08ff96c346 locale_facets.tcc (num_get<>::_M_extract_float): Also when parsing exponent sign, first look for thousands_sep and decimal_point...
2004-03-01  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
	Also when parsing exponent sign, first look for thousands_sep
	and decimal_point; tweak a bit.
	* testsuite/22_locale/num_get/get/char/15.cc: New.
	* testsuite/22_locale/num_get/get/wchar_t/15.cc: New.

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
	num_get<>::_M_extract_int): Reorder some conditionals.

2004-03-01  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Consistently with numpunct, enforce the requirements in
	22.2.6.3, p3 for the thousands separators; tweak a bit.
	* testsuite/22_locale/money_get/get/char/15.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/15.cc: New.

From-SVN: r78699
2004-03-01 10:31:33 +00:00
Paolo Carlini
0e1b98cccc locale_facets.tcc (num_get<>::_M_extract_float): According to 22.2.3.1...
2004-02-28  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float):
	According to 22.2.3.1, p2, 'units' may be followed by 'e' with
	no 'decimal-point' in the middle: in this case too we must fix
	up __found_grouping; slightly tweak.
	* testsuite/22_locale/num_get/get/char/14.cc: New.
	* testsuite/22_locale/num_get/get/wchar_t/14.cc: New.

From-SVN: r78625
2004-02-28 20:37:54 +00:00
Paolo Carlini
a8ea738974 locale_facets.tcc (num_get<>::_M_extract_float, [...]): If appropriate, call reserve on the __tmp_gruping string.
2004-02-27  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
	num_get<>::_M_extract_int, money_get<>::_M_extract): If appropriate,
	call reserve on the __tmp_gruping string.
	(num_get<>::_M_extract_float): Don't append unnecessarily a
	char() to the returned string.
	* include/bits/locale_facets.tcc: Trivial reformattings.

From-SVN: r78565
2004-02-27 14:30:19 +00:00
Paolo Carlini
f4bdbead2e locale_facets.h (money_get<>::_M_extract): Change signature: now takes a plain string&.
2004-02-27  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.h (money_get<>::_M_extract):
	Change signature: now takes a plain string&.
	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Update consistently the definition; use the moneypunct cache
	to parse the value; use swap to change __units.
	(money_get<>::do_get(long double&)): Update call of _M_extract,
	avoid ctype::narrow, not correct wrt the standard.
	(money_get<>::do_get(string_type&)): Likewise, update call
	of _M_extract, use ctype::widen.
	* src/locale-inst.cc: Tweak instantiations of _M_extract.

From-SVN: r78562
2004-02-27 10:12:01 +00:00
Richard Sandiford
212063a844 locale_facets.tcc (num_get::_M_extract_int): Fix bounds error in handling of hex constants.
* include/bits/locale_facets.tcc (num_get::_M_extract_int): Fix bounds
	error in handling of hex constants.

From-SVN: r78385
2004-02-24 20:49:40 +00:00
Paolo Carlini
031e658e58 locale_facets.tcc (money_put<>::_M_insert): Prefer basic_string::append to operator+= and a temporary.
2004-02-24  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
	Prefer basic_string::append to operator+= and a temporary.

From-SVN: r78360
2004-02-24 09:37:52 +00:00
Paolo Carlini
20da06efdc locale_facets.tcc (money_put<>::_M_insert): Restructure formatting of value component...
2004-02-22  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_put<>::_M_insert):
	Restructure formatting of value component, first dealing with
	the non-decimal digits; use reserve.

2004-02-22  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.h (class money_get): Inherit
	from money_base too; tweak declaration of _M_extract, now
	parameterized on _Intl too.
	* include/bits/locale_facets.tcc (money_get<>::_M_extract):
	Update definition to use the cache; call reserve on __res to
	avoid multiple reallocations; fix parsing of sign component
	according to 22.2.6.1.2, p3.
	(money_get<>::do_get(long double&),
	money_get<>::do_get(string_type&)): Update calls of _M_extract.
	* src/locale-inst.cc:  Add instantiations of
	money_get::_M_extract<false> and money_get::_M_extract<true>.
	* testsuite/22_locale/money_get/get/char/14.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/14.cc: Ditto.

From-SVN: r78253
2004-02-22 11:13:27 +00:00
Paolo Carlini
fe932e504b locale_facets.h (class money_base): Add { _S_minus, _S_zero, _S_end } enum, _S_atoms.
2004-02-21  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.h (class money_base): Add { _S_minus,
	_S_zero, _S_end } enum, _S_atoms.
	(struct __moneypunct_cache<>): Parameterize on _Intl too; add
	_M_grouping_size, _M_curr_symbol_size, _M_positive_sign_size,
	_M_negative_sign_size, _M_atoms; tweak constructor consistently.
	(__moneypunct_cache<>::~__moneypunct_cache): Update.
	(__moneypunct_cache<>::_M_cache): Fill the cache.
	(class moneypunct): Tweak __cache_type typedef.
	(class money_put): Inherit from money_base too; tweak declaration
	of _M_insert, now parameterized on _Intl.
	* include/bits/locale_facets.tcc
	(struct __use_cache<__moneypunct_cache<_CharT, _Intl> >): New.
	(money_put<>::_M_insert): Update definition to use the cache;
	call reserve on __res to avoid multiple reallocations.
	(money_put<>::do_put(long double),
	money_put<>::do_put(const string_type&): Update calls of _M_insert.
	* config/locale/generic/monetary_members.cc
	(moneypunct<char, true>::_M_initialize_moneypunct,
	moneypunct<char, false>::_M_initialize_moneypunct,
	moneypunct<wchar_t, true>::_M_initialize_moneypunct,
	moneypunct<wchar_t, false>::_M_initialize_moneypunct): Update.
	* config/locale/gnu/monetary_members.cc: Likewise.
	* config/locale/gnu/monetary_members.cc
	(moneypunct<wchar_t, true>::~moneypunct(),
	moneypunct<wchar_t, false>::~moneypunct()): Likewise.
	* src/globals_locale.cc: Tweak fake_money_cache_c.
	* src/locale-inst.cc: Add instantiations for
	money_put::_M_insert<false> and money_put::_M_insert<true> and
	__moneypunct_cache<C, false>, __moneypunct_cache<C, true>.
	* src/locale_facets.cc: Define money_base::_S_atoms.
	* src/locale_init.cc: Update placement new of
	__moneypunct_cache<char, false>, __moneypunct_cache<char, true>,
	__moneypunct_cache<wchar_t, false>, __moneypunct_cache<wchar_T, true>.

	* config/locale/generic/numeric_members.cc: Clean up.
	* config/locale/gnu/numeric_members.cc: Likewise.
	* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
	* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
	* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
	* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
	* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
	* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.

From-SVN: r78216
2004-02-21 09:26:35 +00:00
Paolo Carlini
2ddf25f217 locale_facets.h (money_get<>::_M_extract): New, helper for do_get.
2004-02-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.h (money_get<>::_M_extract):
	New, helper for do_get.
	(money_put<>::_M_insert): Likewise, for do_put.
	* include/bits/locale_facets.tcc (money_get<>::_M_extract,
	money_put<>::_M_insert): Define.
	(money_get<>::do_get(long double&), money_get<>::do_get(
	string_type&), money_put::do_put(long double),
	money_put::do_put(const string_type&)): Use the helpers.

From-SVN: r78037
2004-02-18 16:39:13 +00:00
Paolo Carlini
6d4925e368 locale_facets.tcc (num_get<>::_M_extract_float, [...]): Simplify grouping fidelity conditional.
2004-02-17  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
	num_get<>::_M_extract_int, money_get<>::do_get): Simplify
	grouping fidelity conditional.

From-SVN: r77948
2004-02-17 11:19:25 +00:00
Paolo Carlini
b7e64db2a4 locale_facets.tcc (money_get::do_get(string_type&)): Fix parsing of the remaining sign characters.
2004-02-16  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
	Fix parsing of the remaining sign characters.
	* 22_locale/money_get/get/char/2.cc: Tweak: now, correctly,
	the input is scanned 'til eof.
	* 22_locale/money_get/get/char/4.cc: Likewise.
	* 22_locale/money_get/get/wchar_t/2.cc: Likewise.
	* 22_locale/money_get/get/wchar_t/4.cc: Likewise.
	* 22_locale/money_get/get/char/8.cc: Tweak: override do_neg_format,
	not do_pos_format: the former is the only one that matters during
	input.
	* 22_locale/money_get/get/wchar_t/8.cc: Likewise.

	* 22_locale/money_get/get/char/6.cc: Minor tweak.
	* 22_locale/money_get/get/wchar_t/6.cc: Likewise.

From-SVN: r77896
2004-02-16 16:46:26 +00:00
David Asher
230377dc69 re PR libstdc++/11352 (crash while internal padding numeric 0)
2004-02-15  David Asher  <david.asher@cavium.com>

	PR libstdc++/11352
	* include/bits/locale_facets.tcc (__pad<>::_S_pad): Don't
	access __olds beyond __oldlen.

From-SVN: r77858
2004-02-15 17:19:00 +00:00
Bernardo Innocenti
ed6814f7b3 Remove trailing whitespace (see ChangeLog for longwinded description).
From-SVN: r77479
2004-02-08 05:46:42 +01:00
Paolo Carlini
d9010fcacc locale_facets.tcc (money_get::do_get(string_type&)): Thousands-sep are always optional...
2004-02-05  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
	Thousands-sep are always optional; thousands-sep are not allowed
	after the decimal_point.
	* testsuite/22_locale/money_get/get/char/12.cc: New.
	* testsuite/22_locale/money_get/get/char/13.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/12.cc: New.
	* testsuite/22_locale/money_get/get/wchar_t/13.cc: New.

	* testsuite/22_locale/money_get/get/char/1.cc: Clean-up.
	* testsuite/22_locale/money_get/get/char/2.cc: Likewise.
	* testsuite/22_locale/money_get/get/char/3.cc: Likewise.
	* testsuite/22_locale/money_get/get/char/4.cc: Likewise.
	* testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
	* testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
	* testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
	* testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.

	* testsuite/22_locale/money_get/get/char/9.cc: Fix citation from
	the standard.
	* testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.

From-SVN: r77339
2004-02-05 20:13:37 +00:00
Paolo Carlini
ba46e66a8b locale_facets.tcc (money_put::do_put(..., long double)): Use the basic_string constructor for char arrays...
2004-01-22  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc
	(money_put::do_put(..., long double)): Use the basic_string
	constructor for char arrays, not that for C-strings, to pass
	__digits to do_put(..., const string_type&): __ws isn't
	null-terminated.

From-SVN: r76355
2004-01-22 14:25:37 +00:00
Paolo Carlini
47f62b27c8 locale_facets.h (struct __numpunct_cache): Add member _M_grouping_size, caching the length of _M_grouping.
2004-01-14  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.h (struct __numpunct_cache):
	Add member _M_grouping_size, caching the length of _M_grouping.
	(__numpunct_cache<>::_M_cache): Assign the latter.
	(__verify_grouping): Move declaration...
	* include/bits/locale_facets.tcc (__verify_grouping):
	... here, change signature to take a const char* and a size_t
	for the grouping; not a template anymore.
	(__add_grouping, num_put::_M_group_int, num_put::_M_group_float):
	Likewise change signature and tweak consistently.
	(num_get::_M_extract_float, num_get::_M_extract_int,
	num_put::_M_insert_int, num_put::_M_insert_float,
	money_get::do_get(string_type&), money_get::do_put(string_type)):
	Update callers.
	* config/locale/generic/numeric_members.cc
	(numpunct<>::_M_initialize_numpunct): Assign the new member.
	* config/locale/gnu/numeric_members.cc
	(numpunct<>::_M_initialize_numpunct): Likewise.
	* src/locale-inst.cc (__add_grouping): Tweak signature.
	(__verify_grouping): Don't instantiate, not a template anymore.

	* include/bits/locale_facets.h: Rename _M_truename_len ->
	_M_truename_size, _M_falsename_len -> _M_falsename_size.
	* include/bits/locale_facets.tcc: Likewise.
	* config/locale/generic/numeric_members.cc: Likewise.
	* config/locale/gnu/numeric_members.cc: Likewise.

From-SVN: r75876
2004-01-14 19:14:39 +00:00