]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
basic_string.h (_Rep::_M_is_safe): Move to basic_string as _M_disjunct, adjust to...
authorPaolo Carlini <pcarlini@suse.de>
Mon, 25 Oct 2004 15:16:49 +0000 (15:16 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 25 Oct 2004 15:16:49 +0000 (15:16 +0000)
2004-10-25  Paolo Carlini  <pcarlini@suse.de>

* include/bits/basic_string.h (_Rep::_M_is_safe): Move to
basic_string as _M_disjunct, adjust to take only __s.
* include/bits/basic_string.tcc: Adjust consistently callers.

From-SVN: r89534

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

index 51f39320ebdb90abea66673879ec0bc7a11439bf..74f87faf2d1cab9cb48084df760856763e684b45 100644 (file)
@@ -1,3 +1,9 @@
+2004-10-25  Paolo Carlini  <pcarlini@suse.de>
+       
+       * include/bits/basic_string.h (_Rep::_M_is_safe): Move to
+       basic_string as _M_disjunct, adjust to take only __s.
+       * include/bits/basic_string.tcc: Adjust consistently callers. 
+
 2004-10-25  Paolo Carlini  <pcarlini@suse.de>
 
        * include/bits/basic_string.tcc (assign(const _CharT*, size_type)):
index 9900798339a5d452fdf0aa2092019b293bc9eeda..817123365cc76ea4968299718dadbf318144d039 100644 (file)
@@ -185,14 +185,6 @@ namespace std
        _M_is_shared() const
         { return this->_M_refcount > 0; }
 
-       // True if source and destination do not overlap.
-       bool
-       _M_is_safe(const _CharT* __data, const _CharT* __s) const
-       {
-         return (less<const _CharT*>()(__s, __data)
-                 || less<const _CharT*>()(__data + this->_M_length, __s));
-       }
-
         void
        _M_set_leaked()
         { this->_M_refcount = -1; }
@@ -325,6 +317,14 @@ namespace std
        return __testoff ? __off : this->size() - __pos;
       }
 
+      // True if _Rep and source do not overlap.
+      bool
+      _M_disjunct(const _CharT* __s) const
+      {
+       return (less<const _CharT*>()(__s, _M_data())
+               || less<const _CharT*>()(_M_data() + this->size(), __s));
+      }
+
       // When __n = 1 way faster than the general multichar
       // traits_type::copy/move/assign.
       static void
index 51fe9f5547251ebb63ec020adc97d46695140bdf..9e59e2c6b50dc834498da5d535f38f227637f662 100644 (file)
@@ -246,7 +246,7 @@ namespace std
     {
       __glibcxx_requires_string_len(__s, __n);
       _M_check_length(this->size(), __n, "basic_string::assign");
-      if (_M_rep()->_M_is_safe(_M_data(), __s) || _M_rep()->_M_is_shared())
+      if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
        return _M_replace_safe(size_type(0), this->size(), __s, __n);
       else
        {
@@ -273,7 +273,7 @@ namespace std
          const size_type __len = __n + this->size();
          if (__len > this->capacity() || _M_rep()->_M_is_shared())
            {
-             if (_M_rep()->_M_is_safe(_M_data(), __s))
+             if (_M_disjunct(__s))
                this->reserve(__len);
              else
                {
@@ -314,7 +314,7 @@ namespace std
        __glibcxx_requires_string_len(__s, __n);
        _M_check(__pos, "basic_string::insert");
        _M_check_length(size_type(0), __n, "basic_string::insert");
-       if (_M_rep()->_M_is_safe(_M_data(), __s) || _M_rep()->_M_is_shared())
+       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
          return _M_replace_safe(__pos, size_type(0), __s, __n);
        else
          {
@@ -348,7 +348,7 @@ namespace std
        __n1 = _M_limit(__pos, __n1);
        _M_check_length(__n1, __n2, "basic_string::replace");
        bool __left;
-       if (_M_rep()->_M_is_safe(_M_data(), __s) || _M_rep()->_M_is_shared())
+       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
          return _M_replace_safe(__pos, __n1, __s, __n2);
        else if ((__left = __s + __n2 <= _M_data() + __pos)
                || _M_data() + __pos + __n1 <= __s)