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 |