Paolo Carlini
247791f5d1
PR libstdc++/15002 (continued again)
...
2004-04-25 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/15002 (continued again)
* include/bits/istream.tcc (getline(basic_istream<>&,
basic_string<>&, _CharT)): Use a temporary buffer, thus
avoiding reallocation for common case.
* include/bits/basic_string.tcc (_S_construct(_InIterator,
_InIterator, const _Alloc&, input_iterator_tag)): Tweak size
of temporary buffer to a power of two.
* testsuite/27_io/basic_istream/getline/char/4.cc: Add comment.
From-SVN: r81163
2004-04-25 15:45:13 +00:00
Paolo Carlini
0a7460199f
basic_string.tcc (_M_mutate): Don't compute __src unnecessarily.
...
2004-04-21 Paolo Carlini <pcarlini@suse.de>
Andrew Pinski <pinskia@physics.uc.edu>
* include/bits/basic_string.tcc (_M_mutate): Don't compute
__src unnecessarily.
Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
From-SVN: r80952
2004-04-21 09:23:36 +00:00
Chavdar Botev
f26e5597f0
re PR libstdc++/14245 ([3.4 only] problem with user-defined allocators in std::basic_string)
...
2004-03-28 Chavdar Botev <cbotev@yahoo.com>
PR libstdc++/14245
* include/bits/basic_string.tcc
(basic_string::basic_string(const basic_string&)): Pass to
_Rep::_M_grab the actual allocator of the string being constructed
not the default constructed one.
From-SVN: r80041
2004-03-28 16:27:27 +00:00
Paolo Carlini
fd95f498f3
basic_string.tcc (assign(const _CharT*, size_type)): When working in place remember to set the state to sharable (otherwise...
...
2004-02-08 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (assign(const _CharT*, size_type)):
When working in place remember to set the state to sharable
(otherwise, _M_mutate does it).
From-SVN: r77487
2004-02-08 17:11:07 +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
24f330691d
basic_string.tcc (_Rep::_S_create): Minor tweak.
...
2004-01-31 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (_Rep::_S_create): Minor tweak.
From-SVN: r77035
2004-01-31 15:39:52 +00:00
Paolo Carlini
d1615643e5
basic_string.tcc (_Rep::_S_create): Never allocate a string bigger than max_size()...
...
2004-01-30 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (_Rep::_S_create):
Never allocate a string bigger than max_size(); always keep
__capacity and __size in sync to avoid memory leaks at
deallocation time.
From-SVN: r76955
2004-01-30 13:23:42 +00:00
Paolo Carlini
690495b0fc
basic_string.tcc (_S_construct(_InIterator, _InIterator, const _Alloc&, input_iterator_tag)): Simplify the double loop, streamline.
...
2004-01-30 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (_S_construct(_InIterator,
_InIterator, const _Alloc&, input_iterator_tag)): Simplify
the double loop, streamline.
* include/bits/basic_string.tcc: Very minor tweaks.
From-SVN: r76937
2004-01-30 09:58:45 +00:00
Paolo Carlini
234e0d3121
basic_string.h (_S_create(size_t, const _Alloc&): Change signature to take two size_type arguments.
...
2004-01-28 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (_S_create(size_t,
const _Alloc&): Change signature to take two size_type
arguments.
* include/bits/basic_string.tcc (_S_construct(_InIterator,
_InIterator, const _Alloc&, input_iterator_tag)): Update
call, tweak a bit.
(_S_construct(_InIterator, _InIterator, const _Alloc&,
forward_iterator_tag)): Likewise.
(_S_construct(size_type, _CharT, const _Alloc&)): Likewise.
(_M_mutate(size_type, size_type, size_type)): Don't
implement the exponential growth policy, demand it to
_S_create, update call and simplify.
(_M_clone(const _Alloc&, size_type)): Likewise.
(_S_create(size_type, size_type, const _Alloc&)): Implement
the growth policy, simplify otherwise.
* include/bits/basic_string.h (_Rep::operator[]): Tweak
signature to take a size_type, consistently with the other
members.
From-SVN: r76786
2004-01-28 10:37:32 +00:00
Paolo Carlini
a3af79eab6
basic_string.tcc (basic_string(const basic_string&, size_type, size_type), [...]): Avoid unnecessarily constructing iterators.
...
2004-01-27 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc
(basic_string(const basic_string&, size_type, size_type),
basic_string(const basic_string&, size_type, size_type,
const _Alloc&)): Avoid unnecessarily constructing iterators.
From-SVN: r76696
2004-01-27 10:46:36 +00:00
Paolo Carlini
0e50667c21
basic_string.h (_M_replace_aux): Use the __N marker in throw message.
...
2004-01-26 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (_M_replace_aux): Use the
__N marker in throw message.
* include/bits/basic_string.tcc (assign(const _CharT*,
size_type), insert(size_type, const _CharT*, size_type),
replace(size_type, size_type, const _CharT*, size_type),
reserve, _Rep::_S_create, resize, _M_replace_dispatch):
Likewise.
* include/bits/basic_string.h, include/bits/basic_string.tcc:
Fold overlong lines, minor formatting changes.
From-SVN: r76664
2004-01-26 20:23:20 +00:00
Paolo Carlini
2cb612d1b0
basic_string.tcc (replace(size_type, size_type, const _CharT*, size_type)): Implement optimized in-place algorithm for non-overlapping ranges.
...
2004-01-26 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (replace(size_type,
size_type, const _CharT*, size_type)): Implement optimized
in-place algorithm for non-overlapping ranges.
* testsuite/21_strings/basic_string/replace/char/6.cc: New.
* testsuite/21_strings/basic_string/replace/wchar_t/6.cc: New.
* include/bits/basic_string.tcc (insert(size_type,
const _CharT*, size_type)): Tweak slightly.
From-SVN: r76625
2004-01-26 09:07:18 +00:00
Paolo Carlini
91eab3788d
basic_string.h (_M_replace_aux, [...]): Define inline here.
...
2004-01-25 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (_M_replace_aux, _M_replace_safe):
Define inline here.
* include/bits/basic_string.tcc (_M_replace_aux, _M_replace_safe):
Move inline.
* include/bits/basic_string.tcc: Very minor tweaks.
From-SVN: r76592
2004-01-25 22:43:07 +00:00
Paolo Carlini
bb9909b0fb
basic_string.tcc (operator+(const _CharT*, const basic_string&)): No need to go through the append taking two iterators.
...
2004-01-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (operator+(const _CharT*,
const basic_string&)): No need to go through the append
taking two iterators.
From-SVN: r76517
2004-01-24 18:54:23 +00:00
Paolo Carlini
04cc8aef67
basic_string.tcc (rfind(_CharT, size_type)): Revert last change to use std::min: machine language is worse.
...
2004-01-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (rfind(_CharT, size_type)):
Revert last change to use std::min: machine language is worse.
(find_last_of(const _CharT*, size_type, size_type)): Ditto.
(find_last_not_of(const _CharT*, size_type, size_type)): Ditto.
(find_last_not_of(_CharT, size_type)): Ditto.
* include/bits/basic_string.tcc (insert(size_type, const _CharT*,
size_type)): Discard the value returned by _M_check.
(replace(size_type, size_type, const _CharT*, size_type)): Ditto.
(append(const basic_string&, size_type, size_type)): Ditto.
(copy(_CharT*, size_type, size_type)): Ditto.
(compare(size_type, size_type, const basic_string&)): Ditto.
(compare(size_type, size_type, const basic_string&,
size_type, size_type)): Ditto.
(compare(size_type, size_type, const _CharT*)): Ditto.
(compare(size_type, size_type, const _CharT*, size_type)): Ditto.
From-SVN: r76514
2004-01-24 16:52:04 +00:00
Paolo Carlini
8865bf80ee
basic_string.h (insert(size_type, const basic_string&, size_type, size_type)): Define inline here.
...
2004-01-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (insert(size_type,
const basic_string&, size_type, size_type)): Define inline here.
* include/bits/basic_string.tcc (insert(size_type,
const basic_string&, size_type, size_type)): Move inline.
From-SVN: r76509
2004-01-24 12:32:54 +00:00
Paolo Carlini
fefe561e80
basic_string.h (assign(const basic_string&, size_type, size_type)): Define inline here.
...
2004-01-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (assign(const basic_string&,
size_type, size_type)): Define inline here.
(replace(size_type, size_type, const basic_string&,
size_type, size_type)): Ditto.
(_M_replace_dispatch(iterator, iterator, _InputIterator,
_InputIterator, __false_type)): Only declare.
(_M_replace(iterator, iterator, _InputIterator,
_InputIterator)): Remove.
* include/bits/basic_string.tcc (assign(const basic_string&,
size_type, size_type)): Move inline.
(replace(size_type, size_type, const basic_string&,
size_type, size_type)): Ditto.
(_M_replace_dispatch(iterator, iterator, _InputIterator,
_InputIterator, __false_type)): Define, now does also what
_M_replace did before.
* src/string-inst.cc (_M_replace): Don't instantiate.
* include/bits/basic_string.tcc (find(const _CharT*,
size_type, size_type)): Tidy.
(rfind(_CharT, size_type)): Ditto.
(find_first_not_of(const _CharT*, size_type, size_type)): Ditto.
(find_first_not_of(_CharT, size_type)): Ditto.
(find_last_not_of(const _CharT*, size_type, size_type)): Ditto.
(find_last_not_of(_CharT, size_type)): Ditto.
From-SVN: r76508
2004-01-24 11:34:06 +00:00
Paolo Carlini
251804e635
basic_string.tcc (insert(size_type, const _CharT*, size_type __n)): Fix length_error check.
...
2004-01-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (insert(size_type,
const _CharT*, size_type __n)): Fix length_error check.
(replace(size_type, size_type, const _CharT*, size_type):
Ditto; call _M_replace_safe.
(_M_replace_aux(size_type, size_type, size_type, _CharT):
Fix length_error check.
(_M_replace(iterator, iterator, _InputIterator,
_InputIterator)): Ditto, tweak.
(_M_replace_safe(size_type, size_type, const _CharT*,
size_type)): Remove length_error check.
* include/bits/basic_string.tcc (append(const basic_string&),
append(const basic_string&, size_type, size_type)): Tweak
comment.
* include/bits/basic_string.tcc (copy(_CharT*, size_type,
size_type)): If __n == 0 don't call traits::copy.
From-SVN: r76476
2004-01-24 00:27:19 +00:00
Paolo Carlini
7bb9b33b3b
basic_string.h (_M_replace_safe): Change signatures to take size_types and const _CharT*.
...
2004-01-22 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (_M_replace_safe): Change
signatures to take size_types and const _CharT*.
(_M_replace_aux): Likewise, takes size_types instead of
iterators.
(append(size_type, _CharT)): Update call.
(assign(size_type, _CharT)): Ditto.
(replace(iterator, iterator, size_type, _CharT)): Ditto.
(_M_replace_dispatch(iterator, iterator, _Integer,
_Integer, __true_type)): Ditto.
* include/bits/basic_string.tcc (assign(const _CharT*,
size_type)): Ditto.
(insert(size_type, const _CharT*, size_type)): Ditto.
(replace(size_type, size_type, const _CharT*,
size_type)): Ditto.
(_M_replace(iterator, iterator, _InputIterator,
_InputIterator)): Ditto.
(append(const basic_string&)): Ditto.
(append(const basic_string&, size_type, size_type): Ditto.
(append(const _CharT*, size_type): Ditto.
(_M_replace_safe, _M_replace_safe): Change definitions
accordingly, simplify.
* string-inst.cc (_M_replace_safe): Don't instantiate.
From-SVN: r76353
2004-01-22 12:46:28 +00:00
Paolo Carlini
3e7782b2f8
basic_string.tcc (append(const basic_string&)): Revert previous change.
...
2004-01-21 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (append(const basic_string&)):
Revert previous change.
(append(const basic_string&, size_type, size_type)): Revert
previous change, use _M_check and _M_limit.
From-SVN: r76282
2004-01-21 15:43:45 +00:00
Paolo Carlini
e03a6fb7b6
basic_string.h (_M_check): Change to return a checked __pos and take an additional const char* argument.
...
2004-01-21 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (_M_check): Change to return
a checked __pos and take an additional const char* argument.
(_M_fold): Rename to _M_limit, change to return a size_type,
corresponding to the __off limited to the actual length.
(insert(size_type, size_type, _CharT)): Update call, call
replace.
(insert(iterator, _CharT)): Call replace(iterator, iterator,
size_type, _CharT) instead.
(erase(size_type, size_type)): Update calls.
(replace(size_type, size_type, size_type, _CharT)): Ditto.
(substr(size_type, size_type)): Use _M_check.
* include/bits/basic_string.tcc (basic_string(const basic_string&,
size_type, size_type)): Update calls.
(basic_string(const basic_string&, size_type, size_type,
const _Alloc&)): Ditto.
(assign(const basic_string&, size_type, size_type)): Use the
new _M_check and _M_limit.
(insert(size_type, const basic_string&, size_type, size_type):
Ditto.
(insert(size_type, const _CharT*, size_type)): Ditto.
(replace(size_type, size_type, const _CharT*, size_type): Ditto.
(replace(size_type, size_type, const basic_string&,
size_type, size_type)): Ditto.
(append(const basic_string&)): Ditto.
(append(const basic_string&, size_type, size_type)): Ditto.
(copy(_CharT*, size_type, size_type)): Ditto.
(compare(size_type, size_type, const basic_string&)): Ditto.
(compare(size_type, size_type, const basic_string&,size_type,
size_type)): Ditto.
(compare(size_type, size_type, const _CharT*)): Ditto.
(compare(size_type, size_type, const _CharT*, size_type)): Ditto.
From-SVN: r76274
2004-01-21 11:29:51 +00:00
Paolo Carlini
954b12d2dc
basic_string.tcc (_S_construct(size_type, _CharT, const _Alloc&)): Remove redundant try/catch.
...
2004-01-19 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (_S_construct(size_type,
_CharT, const _Alloc&)): Remove redundant try/catch.
(_M_mutate(size_type, size_type, size_type)): Ditto.
(_M_clone(const _Alloc&, size_type)): Ditto.
From-SVN: r76141
2004-01-19 08:53:32 +00:00
Paolo Carlini
acbab5bf1c
basic_string.h (c_str()): Simplify, due to 21.3.4 the internal representation is always kept null-terminated.
...
2004-01-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (c_str()): Simplify, due to
21.3.4 the internal representation is always kept null-terminated.
* include/bits/basic_string.tcc (_M_clone): Null-terminate.
* testsuite/21_strings/basic_string/element_access/char/4.cc: New.
* testsuite/21_strings/basic_string/element_access/wchar_t/4.cc: Ditto.
From-SVN: r76092
2004-01-18 10:51:13 +00:00
Paolo Carlini
9c96a6896b
basic_string.h (append(size_type, _CharT)): Moved inline...
...
2004-01-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.h (append(size_type, _CharT)):
Moved inline, just call _M_replace_aux, no source iterators at
risk of being clobbered.
(assign(size_type, _CharT)): Call directly _M_replace_aux.
(_M_replace(iterator, iterator, _InputIterator, _InputIterator,
input_iterator_tag)): Remove fifth unused argument.
(_M_replace_dispatch(iterator, iterator, _InputIterator,
_InputIterator, __false_type)): Update call.
* include/bits/basic_string.tcc (replace(size_type, size_type,
const _CharT*, size_type)): Update call.
(_M_replace_aux(iterator, iterator, size_type, _CharT)): Tweak
throw string literal.
(_M_replace_safe(iterator, iterator, _ForwardIterator,
_ForwardIterator)): Likewise.
(_M_replace(iterator, iterator, _InputIterator, _InputIterator,
input_iterator_tag)): Remove fifth unused argument.
(append(size_type __n, _CharT __c)): Move inline.
* src/string-inst.cc (S::_M_replace(S::iterator, S::iterator,
const C*, const C*, input_iterator_tag)): Remove fifth unused
argument.
From-SVN: r76091
2004-01-18 09:54:46 +00:00
Paolo Carlini
95c9624ff5
re PR libstdc++/13650 (string::compare should not (always) use traits_type::length())
...
2004-01-13 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13650
* include/bits/basic_string.tcc (compare(size_type, size_type,
const _CharT*, size_type)): Implement correctly the resolution
of DR 5: basically, s is a char array, -not- a C string.
* include/bits/basic_string.h: Tweak some comments.
* testsuite/21_strings/basic_string/compare/char/13650.cc: New.
* testsuite/21_strings/basic_string/compare/wchar_t/13650.cc: New.
From-SVN: r75798
2004-01-13 11:12:38 +00:00
Neil Ferguson
cbc6795585
basic_string.tcc (reserve): Allow shrink-to-fit.
...
2003-12-11 Neil Ferguson <nferguso@eso.org>
Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (reserve): Allow shrink-to-fit.
* testsuite/21_strings/basic_string/capacity/1.cc: Tweak.
* testsuite/21_strings/basic_string/capacity/char/1.cc: Ditto.
* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Ditto.
Co-Authored-By: Paolo Carlini <pcarlini@suse.de>
From-SVN: r74551
2003-12-11 22:29:12 +00:00
Douglas Gregor
1b80d64af2
debug.html: Users are allowed to specialize in namespace __gnu_debug...
...
2003-11-13 Douglas Gregor <gregod@cs.rpi.edu>
* docs/html/debug.html: Users are allowed to specialize in
namespace __gnu_debug, unlike in the Apple version of the debug
mode. Clear up a confusing double-negative. Note that
std::basic_string does provide extra debugging capabilities, but
not safe iterators.
* include/bits/basic_string.tcc: Make sure there's never an
ambiguity when calling __is_null_pointer.
* include/debug/deque: (deque::erase) Properly handle invalidation
when erasing at the end of the deque.
* include/debug/vector: (vector::swap): Swap _M_guaranteed_capacity.
(vector::clear): Set the guaranteed capacity to 0.
* testsuite/23_containers/deque/invalidation/4.cc: (test04): Test
iterator invalidation when erasing at the end of the deque.
From-SVN: r73564
2003-11-14 00:15:00 +00:00
Benjamin Kosnik
285b36d6a5
[multiple changes]
...
2003-11-11 Doug Gregor <gregod@cs.rpi.edu>
* docs/html/debug.html: Document libstdc++ debug mode.
* docs/html/debug_mode.html: Document libstdc++ debug mode design.
* docs/html/test.html: Document how to test under debug mode.
* docs/html/17_intro/howto.html: Document debug-mode macros.
* include/Makefile.am: Install debug-mode headers.
* src/Makefile.am: Include debug.cc.
* include/bits/basic_string.tcc:
(basic_string::_S_construct): Fix NULL pointer check.
(__is_null_pointer): New.
Add precondition annotations.
* include/bits/stream_iterator.h (istream_iterator,
ostream_iterator): Added precondition annotations.
* include/bits/streambuf_iterator.h (istreambuf_iterator): Ditto.
* include/bits/stl_queue.h (queue, priority_queue): Ditto.
* include/bits/stl_stack.h (stack): Ditto.
* include/bits/basic_string.h (basic_string): Ditto.
* include/bits/basic_string.tcc (basic_string): Ditto.
* include/std/std_memory.h (auto_ptr): Ditto.
* include/std/std_valarray.h (valarray): Ditto.
* include/bits/stl_algo.h: Added algorithm precondition
annotations.
* include/bits/stl_algobase.h: Added algorithm precondition
annotations.
* include/bits/stl_numeric.h: Ditto.
* include/ext/algorithm: Added algorithm precondition
annotations.
(__is_heap): Moved away from here.
* include/bits/stl_heap.h: Added algorithm precondition
annotations.
(__is_heap): Moved to the top of this file.
(__is_heap): Added iterator range overloads.
* testsuite/20_util/auto_ptr_neg.cc: Fix line numbers to match up
with changes in std_memory.h.
* testsuite/23_containers/list/operators/4.cc: Don't verify
performance guarantees when in debug mode.
* testsuite/23_containers/bitset/invalidation/1.cc: New.
* testsuite/23_containers/deque/invalidation/1.cc: New.
* testsuite/23_containers/deque/invalidation/2.cc: New.
* testsuite/23_containers/deque/invalidation/3.cc: New.
* testsuite/23_containers/deque/invalidation/4.cc: New.
* testsuite/23_containers/list/invalidation/1.cc: New.
* testsuite/23_containers/list/invalidation/2.cc: New.
* testsuite/23_containers/list/invalidation/3.cc: New.
* testsuite/23_containers/list/invalidation/4.cc: New.
* testsuite/23_containers/map/invalidation/1.cc: New.
* testsuite/23_containers/map/invalidation/2.cc: New.
* testsuite/23_containers/multimap/invalidation/1.cc: New.
* testsuite/23_containers/multimap/invalidation/2.cc: New.
* testsuite/23_containers/multiset/invalidation/1.cc: New.
* testsuite/23_containers/multiset/invalidation/2.cc: New.
* testsuite/23_containers/set/invalidation/1.cc: New.
* testsuite/23_containers/set/invalidation/2.cc: New.
* testsuite/23_containers/vector/invalidation/1.cc: New.
* testsuite/23_containers/vector/invalidation/2.cc: New.
* testsuite/23_containers/vector/invalidation/3.cc: New.
* testsuite/23_containers/vector/invalidation/4.cc: New.
* testsuite/25_algorithms/heap.cc: Don't verify
performance guarantees when in debug mode.
* include/debug/bitset: New.
* include/debug/debug.h: New.
* include/debug/deque: New.
* include/debug/formatter.h: New.
* include/debug/hash_map: New.
* include/debug/hash_map.h: New.
* include/debug/hash_multimap.h: New.
* include/debug/hash_set: New.
* include/debug/hash_set.h: New.
* include/debug/hash_multiset.h: New.
* include/debug/list: New.
* include/debug/map: New.
* include/debug/map.h: New.
* include/debug/multimap.h: New.
* include/debug/multiset.h: New.
* include/debug/safe_base.h: New.
* include/debug/safe_iterator.h: New.
* include/debug/safe_iterator.tcc: New.
* include/debug/safe_sequence.h: New.
* include/debug/set: New.
* include/debug/set.h: New.
* include/debug/string: New.
* include/debug/vector: New.
* src/debug.cc: New.
* config/linker-map.gnu: Add debug mode symbols.
2003-11-11 Benjamin Kosnik <bkoz@redhat.com>
* src/string-inst.cc: Tweak namespaces.
* src/misc-inst.cc: Same.
* docs/html/debug.html: Edits.
* config/link-map.gnu: Remove cruft.
* include/bits/c++config: Add in namespace associations.
* include/std/std_bitset.h: Adjust namespace to __gnu_norm,
comment tweaks.
* include/bits/deque.tcc: Same.
* include/bits/list.tcc: Same.
* include/bits/stl_bvector.h: Same.
* include/bits/stl_deque.h: Same.
* include/bits/stl_list.h: Same.
* include/bits/stl_map.h: Same.
* include/bits/stl_multimap.h: Same.
* include/bits/stl_multiset.h: Same.
* include/bits/stl_set.h: Same.
* include/bits/stl_vector.h: Same.
* include/bits/vector.tcc: Same.
* include/std/std_algorithm.h: Remove markup comments.
* include/std/std_functional.h: Same.
* include/std/std_iterator.h: Same.
* include/std/std_numeric.h: Same.
* include/std/std_utility.h: Same.
* include/bits/stl_queue.h: Formatting tweaks.
* include/bits/stl_stack.h: Same.
* include/std/std_deque.h: Include debugging version in debug mode.
* include/std/std_list.h: Same.
* include/std/std_map.h: Same.
* include/std/std_set.h: Same.
* include/std/std_vector.h: Same.
* include/std/std_queue.h: Use deque, vector.
* include/std/std_stack.h: Same.
From-SVN: r73459
2003-11-11 20:09:16 +00:00
Paolo Carlini
f5677b1560
codecvt_specializations.h: Change #ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS to a comment.
...
2003-10-12 Paolo Carlini <pcarlini@unitus.it>
* config/locale/ieee_1003.1-2001/codecvt_specializations.h:
Change #ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS to a comment.
* include/bits/basic_string.tcc: Likewise.
* include/bits/ios_base.h: Likewise.
* include/bits/istream.tcc: Likewise.
* include/bits/locale_facets.tcc: Likewise.
* include/bits/ostream.tcc: Likewise.
* include/bits/stl_function.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_pair.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/streambuf_iterator.h
* include/std/std_iosfwd.h: Likewise.
* include/std/std_istream.h: Likewise.
* include/std/std_sstream.h: Likewise.
* include/std/std_streambuf.h: Likewise.
* src/ios.cc: Likewise.
* include/bits/c++config:
Comment out #define _GLIBCXX_RESOLVE_LIB_DEFECTS 1.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Tweak a
dg-error directive due to removal of a blank line.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
From-SVN: r72392
2003-10-12 10:12:09 +00:00
Benjamin Kosnik
3d7c150e3f
Move from CPP to CXX.
...
2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
Move from CPP to CXX.
* include/bits/c++config: Move to GLIBCXX from GLIBCPP.
* testsuite/Makefile.am: Same.
* testsuite/Makefile.in: Regenerate.
* po/Makefile.am: Same.
* po/Makefile.in: Regenerate.
* libsupc++/Makefile.am: Same.
* libsupc++/Makefile.in: Regenerate.
* libmath/Makefile.am: Same.
* libmath/Makefile.in: Regenerate.
* include/Makefile.am: Same.
* include/Makefile.in: Regenerate.
* src/Makefile.am: Same.
* src/Makefile.in: Regenerate.
* acconfig.h: Same.
* configure.host: Same.
* configure.in: Same.
* configure: Regenerate.
* acinclude.m4: Same.
* aclocal.m4: Same.
* src: Change all files in this directory.
* testsuite: Same.
* include: Same, standardize include guards.
* config: Same.
* libsupc++: Same.
From-SVN: r68958
2003-07-05 04:05:45 +00:00
Paolo Carlini
41ba4c4632
basic_string.tcc (_M_replace_aux): Constify __n1 and __off1.
...
2003-07-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.tcc (_M_replace_aux): Constify
__n1 and __off1.
From-SVN: r68849
2003-07-02 19:36:40 +00:00
Doug Gregor
bdb0f0f5d2
fix basic_string::replace for integral types
...
From-SVN: r68286
2003-06-20 22:12:18 +00:00
Nathan C. Myers
ca566e4c07
Avoid multi-processor bus contention on increment/decrement-and- test of the reference count in the empty-string object...
...
2003-06-13 Nathan C. Myers <ncm-nospam@cantrip.org>
Avoid multi-processor bus contention on increment/decrement-and-
test of the reference count in the empty-string object, by comparing
addresses first, and never touching the reference count of the empty-
string object.
* include/bits/basic_string.h:
(_S_empty_rep_storage): Move into basic_string<>::_Rep for use by its
members.
(_Rep::_S_empty_rep()): New accessor.
(_Rep::_M_length, _Rep::_M_capacity, _Rep::_M_references): Move to
a base class _Rep_base.
(_Rep::_M_dispose, _Rep::_M_refcopy): Check for the empty string.
(basic_string()): Change to use _M_refdata() in place of _M_refcopy(),
since no longer must increment its refcount.
* include/bits/basic_string.tcc:
(_Rep::_M_destroy, _M_leak_hard): Check for the empty string and
return immediately. The former might be unnecessary. The latter
prevents begin() and end() from cloning it unnecessarily.
(_S_construct(_InIterator, _InIterator, const _Alloc&,
input_iterator_tag), _S_construct(_InIterator, _InIterator,
const _Alloc&, forward_iterator_tag), _S_construct(size_type, _CharT,
const _Alloc&)): Change to use _M_refdata() in place of _M_refcopy().
(_M_mutate): Check for the empty string and treat it as shared.
This is necessary here because _M_mutate is sometimes called with
all-zero arguments; in all other uses of _M_is_shared, the test comes
out right anyhow.
From-SVN: r67912
2003-06-13 20:59:42 +00:00
Phil Edwards
08addde65f
BUGS: Update from 2.90.8 snapshot.
...
2003-06-10 Phil Edwards <pme@gcc.gnu.org>
* docs/html/17_intro/BUGS: Update from 2.90.8 snapshot.
* docs/html/17_intro/CHECKLIST: Bring up to date with respect to
correctness of container::iterator typedefs. Fix whitespace.
* docs/html/20_util/howto.html, docs/html/ext/howto.html: Add links
to allocator docs.
* docs/html/documentation.html: Regenerate.
* include/bits/basic_string.h, include/bits/basic_string.tcc,
include/bits/deque.tcc, include/bits/list.tcc, include/bits/stl_algo.h,
include/bits/stl_algobase.h, include/bits/stl_bvector.h,
include/bits/stl_deque.h, include/bits/stl_iterator_base_funcs.h,
include/bits/stl_list.h, include/bits/stl_uninitialized.h,
include/bits/stl_vector.h, include/bits/vector.tcc,
include/ext/algorithm, include/ext/slist, include/std/std_bitset.h:
Change _Iter names to _Iterator, and __pos to __position.
* include/bits/stl_relops.h, include/bits/stl_numeric.h,
include/bits/stl_multiset.h, include/bits/stl_set.h:
Remove emacs markers.
* include/bits/stl_threads.h (_STL_auto_lock): Add __unused__.
From-SVN: r67736
2003-06-10 21:52:25 +00:00
Paolo Carlini
7778fa6e3b
basic_string.h (_M_fold, [...]): Constify various variables.
...
2003-06-04 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.h (_M_fold, insert(iterator, _CharT),
erase(iterator), erase(iterator, iterator), c_str,
compare(const basic_string&)): Constify various variables.
* include/bits/basic_string.tcc (_S_construct(_InIter, _InIter,
const _Alloc&, input_iterator_tag), _M_destroy, _M_mutate,
_S_create, resize, _M_replace, _M_replace_safe,
append(const basic_string&), append(const basic_string&, size_type,
size_type), append(const _CharT*, size_type), append(size_type,
_CharT), operator+(const _CharT*, const basic_string&),
operator+(_CharT, const basic_string&), replace(iterator, iterator,
size_type, _CharT), find(const _CharT*, size_type, size_type),
find(_CharT, size_type), rfind(const _CharT*, size_type, size_type),
rfind(_CharT, size_type), compare(size_type, size_type,
const basic_string&), compare(size_type, size_type,
const basic_string&, size_type, size_type), compare(const _CharT*),
compare(size_type, size_type, const _CharT*), compare(size_type,
size_type, const _CharT*, size_type)): Likewise.
From-SVN: r67468
2003-06-04 22:53:05 +00:00
Benjamin Kosnik
988ad90d00
localename.cc: Standardize exception strings.
...
2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
* src/localename.cc: Standardize exception strings.
* src/locale.cc: Same.
* src/ios.cc: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/basic_ios.tcc: Same.
* include/std/std_bitset.h: Same.
* include/ext/ropeimpl.h: Same.
* include/bits/stl_vector.h: Same.
* include/bits/stl_deque.h: Same.
* include/bits/stl_bvector.h: Same.
* config/locale/generic/c_locale.cc: Same.
* config/locale/gnu/c_locale.cc: Same.
* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
* testsuite/testsuite_hooks.cc (__gnu_cxx_test): Modify.
From-SVN: r66192
2003-04-28 23:05:57 +00:00
Nathan Myers
2d9d52359c
Move some basic_string members out of line because they are too big to reasonably be inline.
...
2003-04-27 Nathan Myers <ncm@cantrip.org>
Move some basic_string members out of line because
they are too big to reasonably be inline.
* include/bits/basic_string.h
(assign(const basic_string&, size_type, size_type),
assign(const _CharT*, size_type),
insert(size_type, const basic_string&, size_type, size_type),
insert(size_type, const _CharT*, size_type),
replace(size_type, size_type, const _CharT*, size_type)):
Move from here to...
* include/bits/basic_string.tcc: ...here.
From-SVN: r66132
2003-04-27 17:20:42 +00:00
Alexandre Oliva
dd6eaaed37
strstream.cc, [...]: Remove incorrect whitespace added in my previous change.
...
* src/strstream.cc, include/bits/basic_string.tcc: Remove
incorrect whitespace added in my previous change.
From-SVN: r63869
2003-03-05 22:24:56 +00:00
Alexandre Oliva
1a8f10da2c
strstream.cc (strstreambuf::overflow): Make sure operands of min and max have the same type.
...
* src/strstream.cc (strstreambuf::overflow): Make sure operands of
min and max have the same type.
* include/bits/basic_string.tcc (append, rfind, compare): Likewise.
From-SVN: r63802
2003-03-04 21:21:44 +00:00
Benjamin Kosnik
1bc8b0ad4e
c++config (_GLIBCPP_EXTERN_TEMPLATE): Define.
...
2003-02-13 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/c++config (_GLIBCPP_EXTERN_TEMPLATE): Define.
* include/bits/basic_ios.tcc: Guard use of extern template.
* include/std/std_iomanip.h: Same.
* include/bits/streambuf.tcc: Same.
* include/bits/stl_alloc.h: Same.
* include/bits/locale_facets.tcc: Same.
* include/bits/ostream.tcc: Same.
* include/bits/istream.tcc: Same.
* include/bits/fstream.tcc: Same.
* include/bits/basic_string.tcc: Same.
From-SVN: r62865
2003-02-13 21:39:03 +00:00
Phil Edwards
25ad7e06c6
basic_string.tcc (_S_string_copy): Unused, remove.
...
2003-01-15 Phil Edwards <pme@gcc.gnu.org>
* include/bits/basic_string.tcc (_S_string_copy): Unused, remove.
From-SVN: r61377
2003-01-16 03:11:13 +00:00
Paolo Carlini
aa863dca8b
basic_string.tcc (basic_string::append(const basic_string&, size_type, size_type), [...]): Fully qualify min() with std::.
...
2002-12-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.tcc
(basic_string::append(const basic_string&, size_type,
size_type), basic_string::compare(size_type, size_type,
const basic_string&), basic_string::compare(size_type,
size_type, const basic_string&, size_type, size_type),
basic_string::compare(const _CharT*), basic_string::
compare(size_type, size_type, const _CharT*),
basic_string::compare(size_type, size_type, const _CharT*,
size_type), _S_string_copy(const basic_string&, _CharT*,
typename _Alloc::size_type)): Fully qualify min() with std::.
2002-12-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.tcc
(basic_string::_S_construct(_InIter, _InIter, const _Alloc&,
forward_iterator_tag)): Delay the declaration of __dnew,
fully qualify distance() with std::.
(basic_string::_M_replace_safe): Fully qualify distance()
with std::.
From-SVN: r59726
2002-12-02 18:53:41 +00:00
Benjamin Kosnik
5112ae3a8f
re PR libstdc++/8318 (Not all wide character based prototypes are included within #ifdef _GLIBCPP_USE_WCHAR_T)
...
2002-11-01 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/8318
* include/std/std_iostream.h: Tweak.
* include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T.
* include/std/std_iomanip.h: Same.
* include/bits/stringfwd.h: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/sstream.tcc: Same.
* include/bits/fstream.tcc: Same.
* include/bits/basic_ios.tcc: Same.
* include/bits/streambuf.tcc: Same.
* include/bits/locale_facets.tcc: Same.
From-SVN: r58720
2002-11-01 17:30:36 +00:00
John Carter
c86c54e6d1
re PR libstdc++/7961 (compare( char *) implemented incorrectly.)
...
2002-11-01 John Carter <john.carter@tait.co.nz>
PR libstdc++/7961
* include/bits/basic_string.tcc
(compare(const _CharT* __s)): Don't access __s past its length.
From-SVN: r58717
2002-11-01 15:21:17 +00:00
Paolo Carlini
085825b83b
re PR libstdc++/8347 (empty vector range used in string construction causes core dump.)
...
2002-10-27 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/8347
* include/bits/basic_string.tcc
(string::_S_construct(_InIter, _InIter, const _Alloc&,
forward_iterator_tag)): Do not throw logic error if
__beg == NULL && __end == __beg.
(string::string(const _CharT*, const _Alloc&)): Tweak.
* testsuite/21_strings/ctor_copy_dtor.cc: Add test05 from PR.
From-SVN: r58577
2002-10-27 07:35:06 +00:00
Paolo Carlini
05261e700c
2002-06-04 Paolo Carlini <pcarlini@unitus.it>
...
Gaby Dos Reis <gdr@codesourcery.com>
* include/bits/basic_string.tcc
(basic_string::_S_construct(forward_iterator_tag):
Fix typo in null pointer check.
* testsuite/21_strings/ctor_copy_dtor.cc: Add test04.
Co-Authored-By: Gabriel Dos Reis <gdr@codesourcery.com>
From-SVN: r54255
2002-06-04 18:20:38 +00:00
Benjamin Kosnik
d3a193e36c
re PR libstdc++/4164 (33 Memory Leak when using iostream)
...
2002-04-15 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/4164
Valgrind fixes.
* config/io/basic_file_stdio.cc (__basic_file::~__basic_file):
Call close.
(__basic_file::close): Call fflush. Correct return if fclose ok.
(__basic_file::is_open): Make const.
Change __c_file_type to __c_file.
* config/io/basic_file_stdio.h: Change __c_file_type to __c_file.
(__basic_file::is_open): Make const.
* config/io/c_io_stdio.h: Change __c_file_type to __c_file.
* include/std/std_fstream.h (filebuf::_M_allocate_file): Remove.
(filebuf::_M_unbuf): Add.
(filebuf::_M_file): Change to non-pointer.
(filebuf::_M_allocate_pback_buffer): Remove.
* include/bits/fstream.tcc (filebuf::_M_allocate_file): Remove.
(filebuf::_M_allocate_internal_buffer): Use _M_unbuf.
Change initialization list for _M_file change.
(filebuf::_M_allocate_pback_buffer): Remove.
Change _M_file usage to reflect non-pointer data member.
* config/locale/generic/c_locale.cc
(locale::facet::_S_create_c_locale): Add parameter.
* config/locale/generic/collate_members.cc: Change
_M_compare_helper to _M_compare.
Change _M_transform_helper to _M_transform.
* config/locale/generic/monetary_members.cc: Changeup data types.
Add dtors.
* config/locale/generic/numeric_members.cc: Add dtors.
* config/locale/generic/time_members.cc: Add dtors.
* config/locale/gnu/c_locale.cc: Add parameter.
* config/locale/gnu/collate_members.cc:Change
_M_compare_helper to _M_compare.
Change _M_transform_helper to _M_transform.
* config/locale/gnu/ctype_members.cc: Better error checking.
* config/os/gnu-linux/bits/ctype_noninline.h: Better error checking.
* config/locale/gnu/messages_members.cc: Tweak comment.
* config/locale/gnu/monetary_members.cc: Change data types.
Add dtors.
* config/locale/gnu/numeric_members.cc: Add dtors, better error
checking.
* config/locale/gnu/time_members.cc: Same.
* config/locale/ieee_1003.1-2001/c_locale.cc
(locale::facet::_S_create_c_locale): Add parameter.
* config/locale/ieee_1003.1-2001/c_locale.h: Correct typedef.
* config/locale/ieee_1003.1-2001/codecvt_specializations.h: Remove
bogus ctor.
* include/bits/locale_facets.h (moneypunct): Use string literals.
Don't define dtor.
(numpunct): Same.
(__timepunct): Same.
(locale::_Impl::_M_facets): Change from vector to array.
(locale::_Impl::_M_names): Change from array of strings to array
of string literals.
(locale::facet::_S_create_c_locale): Add parameter.
(locale::locale::_S_num_facets): Move to...
(locale::_Impl::_M_facets_size): Here.
* include/bits/locale_facets.tcc: Fixups for _M_facets, _M_name
changes.
* include/bits/localefwd.h: (locale:🆔 :_M_id): Add member function.
(locale::_Impl::_Impl(facet**, size_t, bool)): Add.
(locale::_Impl::_Impl(string, size_t)): Change to
(locale::_Impl::_Impl(const char*, size_t)): This.
* include/bits/streambuf.tcc (streambuf::_S_pback_size): Define.
* include/std/std_streambuf.h (streambuf::_M_pback_size): Change to
(streambuf::_S_pback_size): This.
* src/globals.cc: Add pre-allocations for "C" facets.
* src/locale-inst.cc: Remove vector instantiations.
* src/locale.cc: Remove vector include. Fixups for _M_names,
_M_facets changes.
* src/localename.cc: Same.
* include/bits/stl_vector.h: Fix odd formatting.
* include/bits/basic_string.tcc: Tweak comment.
* libsupc++/new: Make sure parameters are uglified.
* libsupc++/typeinfo: Same.
* testsuite/22_locale/num_get_members_char.cc: Fixup.
* testsuite/22_locale/num_get_members_wchar_t.cc: Same.
* testsuite/27_io/filebuf_members.cc: Same.
From-SVN: r52345
2002-04-16 00:45:36 +00:00
Paolo Carlini
418bb88063
basic_string.h (replace(i1, i2, _CharT* k1, _CharT* k2), [...]): New specializations to optimize for the common cases of pointers and iterators.
...
2002-04-02 Paolo Carlini <pcarlini@unitus.it>
Nathan Myers <ncm@cantrip.org>
Philip Martin <philip@codematters.co.uk>
* include/bits/basic_string.h
(replace(i1, i2, _CharT* k1, _CharT* k2),
replace(i2, i2, const _CharT* k1, const _CharT* k2),
replace(i1, i2, iterator k1, iterator k2,
replace(i1, i2, const_iterator k1, const_iterator k2):
New specializations to optimize for the common cases of
pointers and iterators.
(replace(pos, n1, s, n2)): Tweak.
* include/bits/basic_string.tcc: Tweak comments.
* testsuite/21_strings/replace.cc (test04): New tests.
Co-Authored-By: Nathan Myers <ncm@cantrip.org>
Co-Authored-By: Philip Martin <philip@codematters.co.uk>
From-SVN: r51746
2002-04-02 12:07:07 +00:00
Benjamin Kosnik
fcaa810173
basic_string.tcc (string::_S_construct(_InIter, _InIter, const _Alloc&, forward_iterator_tag): Check for null.
...
2002-03-12 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/basic_string.tcc (string::_S_construct(_InIter,
_InIter, const _Alloc&, forward_iterator_tag): Check for null.
(string::basic_string(const _CharT* __s, const _Alloc& __a)): Same.
* testsuite/21_strings/ctor_copy_dtor.cc (test01): Re-enable, now
that memory limits are in place.
(test03): Add tests.
From-SVN: r50683
2002-03-12 22:10:34 +00:00
Benjamin Kosnik
41b4d44bac
stl_alloc.h: Add extern implicit allocator instantiations.
...
2002-03-07 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/stl_alloc.h: Add extern implicit allocator
instantiations.
* include/bits/basic_string.tcc: Tweak.
* include/bits/locale_facets.tcc: Remove default args. Add
has_facet, use_facet extern instantiations.
* src/stl-inst.cc: Add explicit instantiation.
* src/locale-inst.cc: Clean. Remove locale member template
instantiations.
* testsuite/22_locale/operators.cc (test02): Enable.
From-SVN: r50426
2002-03-08 06:05:21 +00:00