/* * Copyright 2013, Gerasim Troeglazov, 3dEyes@gmail.com. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef PSD_DATA_ARRAY_H #define PSD_DATA_ARRAY_H #include #include #include #include #include #include #include #define DATAARRAY_BLOCK_SIZE 1024 class BDataArray { public: BDataArray(int32 blockSize = DATAARRAY_BLOCK_SIZE); ~BDataArray(); BDataArray& Append(int8 val); BDataArray& Append(uint8 val); BDataArray& Append(int16 val); BDataArray& Append(uint16 val); BDataArray& Append(int32 val); BDataArray& Append(uint32 val); BDataArray& Append(int64 val); BDataArray& Append(uint64 val); BDataArray& Append(const char *str); BDataArray& Append(BString& str); BDataArray& Append(BDataArray& str); BDataArray& Append(uint8 *ptr, int32 len); BDataArray& Repeat(uint8 byte, int32 count); BDataArray& operator<<(int8); BDataArray& operator<<(uint8); BDataArray& operator<<(int16); BDataArray& operator<<(uint16); BDataArray& operator<<(int32); BDataArray& operator<<(uint32); BDataArray& operator<<(int64); BDataArray& operator<<(uint64); BDataArray& operator<<(const char*); BDataArray& operator<<(BDataArray&); uint8 *Buffer(void); int32 Length(void); ssize_t WriteToStream(BPositionIO *stream); private: inline status_t _ReallocArrayFor(int32 size); uint8 *fData; int32 fDataSize; int32 fAllocatedDataSize; int32 fBlockSize; }; #endif /* PSD_DATA_ARRAY_H */