diff options
Diffstat (limited to 'noatun-plugins/oblique/kbuffer.h')
-rw-r--r-- | noatun-plugins/oblique/kbuffer.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/noatun-plugins/oblique/kbuffer.h b/noatun-plugins/oblique/kbuffer.h new file mode 100644 index 0000000..adc62ba --- /dev/null +++ b/noatun-plugins/oblique/kbuffer.h @@ -0,0 +1,48 @@ +// Author: Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr>, (c) 2002 +// +// Copyright: GNU LGPL: http://www.gnu.org/licenses/lgpl.html + +#ifndef KBUFFER_H +#define KBUFFER_H + +#include <qiodevice.h> +#include <vector> +#include <queue> + +/**A buffer device for flexible and efficient buffers. + + *@author Eray Ozkural (exa) + */ + +class KBuffer : public QIODevice { +public: + KBuffer(); + ~KBuffer(); + /** open a memory buffer */ + bool open(int mode); + /** read in a block of memory */ + Q_LONG readBlock(char* data, long unsigned int maxLen); + /** query buffer size */ + Q_ULONG size() const; + /** No descriptions */ + void flush(); + /** Close buffer */ + void close(); + /** write a block of memory */ + Q_LONG writeBlock(const char *data, long unsigned int maxLen); + /** read a byte */ + int getch(); + /** undo last getch() + */ + int ungetch(int); + /** write a byte */ + int putch(int); + void* data() { + return &buf[0]; + } +private: + std::vector<char> buf; + std::vector<char>::iterator bufPos; +}; + +#endif |