basic_string.h (_M_replace_aux, [...]): Define inline here.
authorPaolo Carlini <pcarlini@suse.de>
Sun, 25 Jan 2004 22:43:07 +0000 (22:43 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 25 Jan 2004 22:43:07 +0000 (22:43 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/basic_string.h
libstdc++-v3/include/bits/basic_string.tcc

index f7a91a2..5a3ca42 100644 (file)
@@ -1,5 +1,14 @@
 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.
+
+2004-01-25  Paolo Carlini  <pcarlini@suse.de>
+
        * testsuite/performance/string_append.cc: Increase number
        of iterations.
 
index a42a5c4..19bb800 100644 (file)
@@ -1361,11 +1361,26 @@ namespace std
                            _InputIterator __k2, __false_type);
 
       basic_string&
-      _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, _CharT __c);
+      _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+                    _CharT __c)
+      {
+       if (this->max_size() - (this->size() - __n1) < __n2)
+         __throw_length_error("basic_string::_M_replace_aux");
+       _M_mutate(__pos1, __n1, __n2);
+       if (__n2)
+         traits_type::assign(_M_data() + __pos1, __n2, __c);
+       return *this;   
+      }
 
       basic_string&
       _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
-                     size_type __n2);
+                     size_type __n2)
+      {
+       _M_mutate(__pos1, __n1, __n2);
+       if (__n2)
+         traits_type::copy(_M_data() + __pos1, __s, __n2);
+       return *this;   
+      }
 
       // _S_construct_aux is used to implement the 21.3.1 para 15 which
       // requires special behaviour if _InIter is an integral type
index 143c2ba..3d9df9f 100644 (file)
@@ -142,7 +142,7 @@ namespace std
       }
   
   template<typename _CharT, typename _Traits, typename _Alloc>
-    template <class _InIterator>
+    template <typename _InIterator>
       _CharT*
       basic_string<_CharT, _Traits, _Alloc>::
       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, 
@@ -391,7 +391,7 @@ namespace std
          || _M_rep()->_M_is_shared() || __new_size > capacity())
        {
          // Must reallocate.
-         allocator_type __a = get_allocator();
+         const allocator_type __a = get_allocator();
          // See below (_S_create) for the meaning and value of these
          // constants.
          const size_type __pagesize = 4096;
@@ -439,7 +439,7 @@ namespace std
          // Make sure we don't shrink below the current size
          if (__res < this->size())
            __res = this->size();
-         allocator_type __a = get_allocator();
+         const allocator_type __a = get_allocator();
          _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
          _M_rep()->_M_dispose(__a);
          _M_data(__tmp);
@@ -599,34 +599,6 @@ namespace std
                               __s.size());
       }
 
-  // This helper doesn't buffer internally and can be used in "safe" situations,
-  // i.e., when source and destination ranges are known to not overlap.
-  template<typename _CharT, typename _Traits, typename _Alloc>
-    basic_string<_CharT, _Traits, _Alloc>&
-    basic_string<_CharT, _Traits, _Alloc>::
-    _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
-                   size_type __n2)
-    {
-      _M_mutate(__pos1, __n1, __n2);
-      if (__n2)
-       traits_type::copy(_M_data() + __pos1, __s, __n2);
-      return *this;
-    }
-
-  template<typename _CharT, typename _Traits, typename _Alloc>
-    basic_string<_CharT, _Traits, _Alloc>&
-    basic_string<_CharT, _Traits, _Alloc>::
-    _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
-                  _CharT __c)
-    {
-      if (this->max_size() - (this->size() - __n1) < __n2)
-       __throw_length_error("basic_string::_M_replace_aux");
-      _M_mutate(__pos1, __n1, __n2);
-      if (__n2)
-       traits_type::assign(_M_data() + __pos1, __n2, __c);
-      return *this;
-    }
-
   template<typename _CharT, typename _Traits, typename _Alloc>
     basic_string<_CharT, _Traits, _Alloc>&
     basic_string<_CharT, _Traits, _Alloc>::