| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /* see copyright notice in squirrel.h */
- #ifndef _SQSTD_BLOBIMPL_H_
- #define _SQSTD_BLOBIMPL_H_
- #include "sqstdio.h"
- #define BLOB_BUFSIZE 8192
- struct SQBlob : public SQStream
- {
- SQBlob(SQInteger size, SQInteger allocated=0);
- virtual ~SQBlob();
- SQInteger Write(const void *buffer, SQInteger size);
- SQInteger WriteZstr(const char *zStr);
- SQInteger WriteChar(const char c);
- SQInteger Read(void *buffer,SQInteger size);
- SQInteger Gets(char *buffer,SQInteger size);
- bool Resize(SQInteger n);
- bool GrowBufOf(SQInteger n);
- bool CanAdvance(SQInteger n) {
- if(_ptr+n>_size)return false;
- return true;
- }
- SQInteger Seek(SQInteger offset, SQInteger origin);
- bool IsValid() {
- return _buf?true:false;
- }
- bool EOS() {
- return _ptr == _size;
- }
- SQInteger Flush() { return 0; }
- SQInteger Tell() { return _ptr; }
- SQInteger Len() { return _size; }
- SQUserPointer GetBuf(){ return _buf; }
- bool SetLen(SQInteger len);
- static SQUserPointer SQBlob_TAG;
- private:
- SQInteger _size;
- SQInteger _allocated;
- SQInteger _ptr;
- unsigned char *_buf;
- bool _owns;
- };
- #endif //_SQSTD_BLOBIMPL_H_
|