src/corelib/tools/qbytearray.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
  1803 }
  1803 }
  1804 
  1804 
  1805 /*! \fn QByteArray &QByteArray::replace(int pos, int len, const char *after)
  1805 /*! \fn QByteArray &QByteArray::replace(int pos, int len, const char *after)
  1806 
  1806 
  1807     \overload
  1807     \overload
       
  1808 
       
  1809     Replaces \a len bytes from index position \a pos with the zero terminated
       
  1810     string \a after.
       
  1811 
       
  1812     Notice: this can change the lenght of the byte array.
  1808 */
  1813 */
  1809 QByteArray &QByteArray::replace(int pos, int len, const char *after)
  1814 QByteArray &QByteArray::replace(int pos, int len, const char *after)
  1810 {
  1815 {
  1811     return replace(pos,len,after,qstrlen(after));
  1816     return replace(pos,len,after,qstrlen(after));
  1812 }
  1817 }
  2145     QByteArray result;
  2150     QByteArray result;
  2146     result.reserve(resultSize);
  2151     result.reserve(resultSize);
  2147     if (result.d->alloc != resultSize)
  2152     if (result.d->alloc != resultSize)
  2148         return QByteArray(); // not enough memory
  2153         return QByteArray(); // not enough memory
  2149 
  2154 
  2150     qMemCopy(result.d->data, d->data, d->size);
  2155     memcpy(result.d->data, d->data, d->size);
  2151 
  2156 
  2152     int sizeSoFar = d->size;
  2157     int sizeSoFar = d->size;
  2153     char *end = result.d->data + sizeSoFar;
  2158     char *end = result.d->data + sizeSoFar;
  2154 
  2159 
  2155     const int halfResultSize = resultSize >> 1;
  2160     const int halfResultSize = resultSize >> 1;
  2156     while (sizeSoFar <= halfResultSize) {
  2161     while (sizeSoFar <= halfResultSize) {
  2157         qMemCopy(end, result.d->data, sizeSoFar);
  2162         memcpy(end, result.d->data, sizeSoFar);
  2158         end += sizeSoFar;
  2163         end += sizeSoFar;
  2159         sizeSoFar <<= 1;
  2164         sizeSoFar <<= 1;
  2160     }
  2165     }
  2161     qMemCopy(end, result.d->data, resultSize - sizeSoFar);
  2166     memcpy(end, result.d->data, resultSize - sizeSoFar);
  2162     result.d->data[resultSize] = '\0';
  2167     result.d->data[resultSize] = '\0';
  2163     result.d->size = resultSize;
  2168     result.d->size = resultSize;
  2164     return result;
  2169     return result;
  2165 }
  2170 }
  2166 
  2171