QByteArray *buf;
QByteArray defaultBuf;
- qint64 ioIndex;
qint64 peek(char *data, qint64 maxSize) final;
QByteArray peek(qint64 maxSize) final;
{
Q_D(QBuffer);
d->buf = &d->defaultBuf;
- d->ioIndex = 0;
}
QBuffer::QBuffer(QByteArray *buf)
: QIODevice(*new QBufferPrivate)
{
Q_D(QBuffer);
d->buf = buf ? buf : &d->defaultBuf;
- d->ioIndex = 0;
d->defaultBuf.clear();
}
#else
{
Q_D(QBuffer);
d->buf = &d->defaultBuf;
- d->ioIndex = 0;
}
/*!
Q_D(QBuffer);
d->buf = byteArray ? byteArray : &d->defaultBuf;
d->defaultBuf.clear();
- d->ioIndex = 0;
}
#endif
d->buf = &d->defaultBuf;
}
d->defaultBuf.clear();
- d->ioIndex = 0;
}
/*!
}
Q_D(QBuffer);
*d->buf = data;
- d->ioIndex = 0;
}
/*!
Q_D(QBuffer);
if ((flags & Truncate) == Truncate)
d->buf->resize(0);
- d->ioIndex = (flags & Append) == Append ? d->buf->size() : 0;
return QIODevice::open(flags);
}
qWarning("QBuffer::seek: Invalid pos: %lld", pos);
return false;
}
- d->ioIndex = pos;
return QIODevice::seek(pos);
}
qint64 QBuffer::readData(char *data, qint64 len)
{
Q_D(QBuffer);
- if ((len = qMin(len, d->buf->size() - d->ioIndex)) <= 0)
+ if ((len = qMin(len, d->buf->size() - pos())) <= 0)
return qint64(0);
- memcpy(data, d->buf->constData() + d->ioIndex, len);
- d->ioIndex += len;
+ memcpy(data, d->buf->constData() + pos(), len);
return len;
}
qint64 QBuffer::writeData(const char *data, qint64 len)
{
Q_D(QBuffer);
- const qint64 extraBytes = d->ioIndex + len - d->buf->size();
+ const qint64 extraBytes = pos() + len - d->buf->size();
if (extraBytes > 0) { // overflow
const qint64 newSize = d->buf->size() + extraBytes;
d->buf->resize(newSize);
}
}
- memcpy(d->buf->data() + d->ioIndex, data, len);
- d->ioIndex += len;
+ memcpy(d->buf->data() + pos(), data, len);
#ifndef QT_NO_QOBJECT
d->writtenSinceLastEmit += len;