summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 08:43:17 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 08:43:17 +0000
commitf55adced67e2da0ec3b0005672e918012c82e964 (patch)
treec41cdc97f934f8682a85a229253ac5c0b3c1a9da /libstdc++-v3
parent7593baaa65a2aaf9fe1392563df7649dfacd05db (diff)
downloadgcc-f55adced67e2da0ec3b0005672e918012c82e964.tar.gz
2004-10-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (_M_mutate): Do not reallocate unnecessarily when _M_rep() == &_S_empty_rep() and __new_size == capacity() (== 0): is ok to just leave everything unchanged. * include/bits/basic_string.h: Minor formatting fixes. * include/bits/basic_string.tcc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89199 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/include/bits/basic_string.h45
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc22
3 files changed, 50 insertions, 26 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 479da1dbe64..59284fa3bb2 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2004-10-18 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.tcc (_M_mutate): Do not reallocate
+ unnecessarily when _M_rep() == &_S_empty_rep() and __new_size
+ == capacity() (== 0): is ok to just leave everything unchanged.
+
+ * include/bits/basic_string.h: Minor formatting fixes.
+ * include/bits/basic_string.tcc: Likewise.
+
2004-10-17 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/mt_allocator.h (__pool::_M_get_align): New.
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 1e79da4b4bd..676f1c53434 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -271,10 +271,12 @@ namespace std
// For the internal use we have functions similar to `begin'/`end'
// but they do not call _M_leak.
iterator
- _M_ibegin() const { return iterator(_M_data()); }
+ _M_ibegin() const
+ { return iterator(_M_data()); }
iterator
- _M_iend() const { return iterator(_M_data() + this->size()); }
+ _M_iend() const
+ { return iterator(_M_data() + this->size()); }
void
_M_leak() // for use in begin() & non-const op[]
@@ -527,16 +529,19 @@ namespace std
/// Returns the number of characters in the string, not including any
/// null-termination.
size_type
- size() const { return _M_rep()->_M_length; }
+ size() const
+ { return _M_rep()->_M_length; }
/// Returns the number of characters in the string, not including any
/// null-termination.
size_type
- length() const { return _M_rep()->_M_length; }
+ length() const
+ { return _M_rep()->_M_length; }
/// Returns the size() of the largest possible %string.
size_type
- max_size() const { return _Rep::_S_max_size; }
+ max_size() const
+ { return _Rep::_S_max_size; }
/**
* @brief Resizes the %string to the specified number of characters.
@@ -562,14 +567,16 @@ namespace std
* setting them to 0.
*/
void
- resize(size_type __n) { this->resize(__n, _CharT()); }
+ resize(size_type __n)
+ { this->resize(__n, _CharT()); }
/**
* Returns the total number of characters that the %string can hold
* before needing to allocate more memory.
*/
size_type
- capacity() const { return _M_rep()->_M_capacity; }
+ capacity() const
+ { return _M_rep()->_M_capacity; }
/**
* @brief Attempt to preallocate enough memory for specified number of
@@ -595,13 +602,15 @@ namespace std
* Erases the string, making it empty.
*/
void
- clear() { _M_mutate(0, this->size(), 0); }
+ clear()
+ { _M_mutate(0, this->size(), 0); }
/**
* Returns true if the %string is empty. Equivalent to *this == "".
*/
bool
- empty() const { return this->size() == 0; }
+ empty() const
+ { return this->size() == 0; }
// Element access:
/**
@@ -684,7 +693,8 @@ namespace std
* @return Reference to this string.
*/
basic_string&
- operator+=(const basic_string& __str) { return this->append(__str); }
+ operator+=(const basic_string& __str)
+ { return this->append(__str); }
/**
* @brief Append a C string.
@@ -692,7 +702,8 @@ namespace std
* @return Reference to this string.
*/
basic_string&
- operator+=(const _CharT* __s) { return this->append(__s); }
+ operator+=(const _CharT* __s)
+ { return this->append(__s); }
/**
* @brief Append a character.
@@ -700,7 +711,8 @@ namespace std
* @return Reference to this string.
*/
basic_string&
- operator+=(_CharT __c) { return this->append(size_type(1), __c); }
+ operator+=(_CharT __c)
+ { return this->append(size_type(1), __c); }
/**
* @brief Append a string to this string.
@@ -1447,7 +1459,8 @@ namespace std
* happen.
*/
const _CharT*
- c_str() const { return _M_data(); }
+ c_str() const
+ { return _M_data(); }
/**
* @brief Return const pointer to contents.
@@ -1456,13 +1469,15 @@ namespace std
* happen.
*/
const _CharT*
- data() const { return _M_data(); }
+ data() const
+ { return _M_data(); }
/**
* @brief Return copy of allocator used to construct this string.
*/
allocator_type
- get_allocator() const { return _M_dataplus; }
+ get_allocator() const
+ { return _M_dataplus; }
/**
* @brief Find position of a C substring.
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index 66eb982b538..612cde1c680 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -373,7 +373,8 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
void
- basic_string<_CharT, _Traits, _Alloc>::_M_leak_hard()
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_leak_hard()
{
#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
if (_M_rep() == &_S_empty_rep())
@@ -393,16 +394,11 @@ namespace std
const size_type __new_size = __old_size + __len2 - __len1;
const size_type __how_much = __old_size - __pos - __len1;
-#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
- if (_M_rep() == &_S_empty_rep()
- || _M_rep()->_M_is_shared() || __new_size > capacity())
-#else
- if (_M_rep()->_M_is_shared() || __new_size > capacity())
-#endif
+ if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
{
// Must reallocate.
const allocator_type __a = get_allocator();
- _Rep* __r = _Rep::_S_create(__new_size, capacity(), __a);
+ _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
if (__pos)
traits_type::copy(__r->_M_refdata(), _M_data(), __pos);
@@ -427,7 +423,8 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
void
- basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res)
+ basic_string<_CharT, _Traits, _Alloc>::
+ reserve(size_type __res)
{
if (__res != this->capacity() || _M_rep()->_M_is_shared())
{
@@ -444,7 +441,9 @@ namespace std
}
template<typename _CharT, typename _Traits, typename _Alloc>
- void basic_string<_CharT, _Traits, _Alloc>::swap(basic_string& __s)
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ swap(basic_string& __s)
{
if (_M_rep()->_M_is_leaked())
_M_rep()->_M_set_sharable();
@@ -561,7 +560,8 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
void
- basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c)
+ basic_string<_CharT, _Traits, _Alloc>::
+ resize(size_type __n, _CharT __c)
{
if (__n > max_size())
__throw_length_error(__N("basic_string::resize"));