123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | // Copyright (C) 2020 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QIODEVICE_H#define QIODEVICE_H#include <QtCore/qglobal.h>#include <QtCore/qiodevicebase.h>#ifndef QT_NO_QOBJECT#include <QtCore/qobject.h>#else#include <QtCore/qobjectdefs.h>#include <QtCore/qscopedpointer.h>#endif#include <QtCore/qspan.h>#include <QtCore/qstring.h>#ifdef open#error qiodevice.h must be included before any header file that defines open#endif#include <memory> QT_BEGIN_NAMESPACE class QByteArray;class QIODevicePrivate;class Q_CORE_EXPORT QIODevice #ifndef QT_NO_QOBJECT:public QObject,#else:#endifpublic QIODeviceBase {#ifndef QT_NO_QOBJECT Q_OBJECT #endifpublic:QIODevice();#ifndef QT_NO_QOBJECTexplicitQIODevice(QObject *parent);#endifvirtual~QIODevice();QIODeviceBase::OpenMode openMode()const;voidsetTextModeEnabled(bool enabled);boolisTextModeEnabled()const;boolisOpen()const;boolisReadable()const;boolisWritable()const;virtualboolisSequential()const;intreadChannelCount()const;intwriteChannelCount()const;intcurrentReadChannel()const;voidsetCurrentReadChannel(int channel);intcurrentWriteChannel()const;voidsetCurrentWriteChannel(int channel);virtualboolopen(QIODeviceBase::OpenMode mode);virtualvoidclose();// ### Qt 7 - QTBUG-76492: pos() and seek() should not be virtual, and// ### seek() should call a virtual seekData() function.virtual qint64 pos()const;virtual qint64 size()const;virtualboolseek(qint64 pos);virtualboolatEnd()const;virtualboolreset();virtual qint64 bytesAvailable()const;virtual qint64 bytesToWrite()const; qint64 read(char*data, qint64 maxlen); QByteArray read(qint64 maxlen); QByteArray readAll(); qint64 readLine(char*data, qint64 maxlen); QByteArray readLine(qint64 maxlen =0);boolreadLineInto(QByteArray *result, qint64 maxlen =0); QByteArrayView readLineInto(QSpan<char> buffer){returnreadLineInto(as_writable_bytes(buffer)); } QByteArrayView readLineInto(QSpan<uchar> buffer){returnreadLineInto(as_writable_bytes(buffer)); } QByteArrayView readLineInto(QSpan<std::byte> buffer);virtualboolcanReadLine()const;voidstartTransaction();voidcommitTransaction();voidrollbackTransaction();boolisTransactionStarted()const; qint64 write(const char*data, qint64 len); qint64 write(const char*data); qint64 write(const QByteArray &data); qint64 peek(char*data, qint64 maxlen); QByteArray peek(qint64 maxlen); qint64 skip(qint64 maxSize);virtualboolwaitForReadyRead(int msecs);virtualboolwaitForBytesWritten(int msecs);voidungetChar(char c);boolputChar(char c);boolgetChar(char*c); QString errorString()const;#ifndef QT_NO_QOBJECT Q_SIGNALS:voidreadyRead();voidchannelReadyRead(int channel);voidbytesWritten(qint64 bytes);voidchannelBytesWritten(int channel, qint64 bytes);voidaboutToClose();voidreadChannelFinished();#endifprotected:#ifdef QT_NO_QOBJECTQIODevice(QIODevicePrivate &dd);#elseQIODevice(QIODevicePrivate &dd, QObject *parent =nullptr);#endifvirtual qint64 readData(char*data, qint64 maxlen) =0;virtual qint64 readLineData(char*data, qint64 maxlen);virtual qint64 skipData(qint64 maxSize);virtual qint64 writeData(const char*data, qint64 len) =0;voidsetOpenMode(QIODeviceBase::OpenMode openMode);voidsetErrorString(const QString &errorString);#ifdef QT_NO_QOBJECTstd::unique_ptr<QIODevicePrivate> d_ptr;#endifprivate:Q_DECLARE_PRIVATE(QIODevice)Q_DISABLE_COPY(QIODevice)};Q_DECLARE_OPERATORS_FOR_FLAGS(QIODevice::OpenMode)#if !defined(QT_NO_DEBUG_STREAM)class QDebug; Q_CORE_EXPORT QDebug operator<<(QDebug debug,QIODevice::OpenMode modes);#endif QT_END_NAMESPACE #endif// QIODEVICE_H
|