summaryrefslogtreecommitdiff
path: root/src/sbuffer.h
blob: 65feb71550173e8c5da6d9285a2dc5a599e7d9e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef S_BUFFER_H
#define S_BUFFER_H

#include <stdint.h>

#include "stream.h"
#include "flexbuf.h"

class SBuffer : public Stream
{
public:
	SBuffer();
	virtual ~SBuffer();

	virtual void close();
	virtual size_t read( char *pBuf, size_t nBytes );

	/**
	 *@todo Update this to write at nPos, not just append data.
	 */
	virtual size_t write( const char *pBuf, size_t nBytes );

	virtual long tell();
	virtual void seek( long offset );
	virtual void setPos( long pos );
	virtual void setPosEnd( long pos );
	virtual bool isEOS();

	FlexBuf &getBuffer()
	{
		return fbData;
	}

private:
	long nPos;
	bool bOpen;
	FlexBuf fbData;
};

#endif