00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef QBUFFER_H
00023 #define QBUFFER_H
00024
00025 #include "QIODevice.h"
00026
00031 namespace FX {
00032
00033 class QByteArray;
00034
00055 struct QBufferPrivate;
00056 class FXAPIR QBuffer : public QIODevice
00057 {
00058 QBufferPrivate *p;
00059 QBuffer(const QBuffer &);
00060 QBuffer &operator=(const QBuffer &);
00061 public:
00066 explicit QBuffer(FXuval len=0, bool fastbuffer=false);
00068 explicit QBuffer(QByteArray &buffer);
00069 ~QBuffer();
00071 bool isNull() const;
00073 QByteArray &buffer() const;
00075 void setBuffer(QByteArray &buffer);
00076
00077 virtual bool open(FXuint mode);
00078 virtual void close();
00079 virtual void flush();
00080 virtual FXfval size() const;
00081 virtual void truncate(FXfval size);
00082 virtual FXuval readBlock(char *data, FXuval maxlen);
00083 virtual FXuval writeBlock(const char *data, FXuval maxlen);
00084 virtual FXuval readBlockFrom(char *data, FXuval maxlen, FXfval pos);
00085 virtual FXuval writeBlockTo(FXfval pos, const char *data, FXuval maxlen);
00086 virtual int getch();
00087 virtual int putch(int c);
00088 virtual int ungetch(int c);
00089 friend FXAPI FXStream &operator<<(FXStream &s, const QBuffer &i);
00090 friend FXAPI FXStream &operator>>(FXStream &s, QBuffer &i);
00091 };
00092
00096 FXAPI FXStream &operator<<(FXStream &s, const QBuffer &i);
00100 FXAPI FXStream &operator>>(FXStream &s, QBuffer &i);
00101
00102 }
00103 #endif