1160814Ssimon/* 2280297Sjkim * Copyright 2013, Gerasim Troeglazov, 3dEyes@gmail.com. All rights reserved. 3280297Sjkim * Distributed under the terms of the MIT License. 4280297Sjkim */ 5160814Ssimon 6160814Ssimon 7160814Ssimon#ifndef PSD_DATA_ARRAY_H 8160814Ssimon#define PSD_DATA_ARRAY_H 9160814Ssimon 10160814Ssimon#include <stdlib.h> 11160814Ssimon#include <stdio.h> 12160814Ssimon#include <string.h> 13160814Ssimon 14280297Sjkim#include <String.h> 15160814Ssimon#include <DataIO.h> 16160814Ssimon#include <File.h> 17160814Ssimon#include <ByteOrder.h> 18160814Ssimon 19160814Ssimon#define DATAARRAY_BLOCK_SIZE 1024 20160814Ssimon 21160814Ssimonclass BDataArray { 22160814Ssimonpublic: 23160814Ssimon BDataArray(int32 blockSize = DATAARRAY_BLOCK_SIZE); 24160814Ssimon ~BDataArray(); 25160814Ssimon 26160814Ssimon BDataArray& Append(int8 val); 27160814Ssimon BDataArray& Append(uint8 val); 28160814Ssimon BDataArray& Append(int16 val); 29160814Ssimon BDataArray& Append(uint16 val); 30160814Ssimon BDataArray& Append(int32 val); 31160814Ssimon BDataArray& Append(uint32 val); 32160814Ssimon BDataArray& Append(int64 val); 33160814Ssimon BDataArray& Append(uint64 val); 34160814Ssimon BDataArray& Append(const char *str); 35160814Ssimon BDataArray& Append(BString& str); 36160814Ssimon BDataArray& Append(BDataArray& str); 37160814Ssimon BDataArray& Append(uint8 *ptr, int32 len); 38160814Ssimon 39160814Ssimon BDataArray& Repeat(uint8 byte, int32 count); 40160814Ssimon 41160814Ssimon BDataArray& operator<<(int8); 42160814Ssimon BDataArray& operator<<(uint8); 43160814Ssimon BDataArray& operator<<(int16); 44160814Ssimon BDataArray& operator<<(uint16); 45160814Ssimon BDataArray& operator<<(int32); 46160814Ssimon BDataArray& operator<<(uint32); 47160814Ssimon BDataArray& operator<<(int64); 48160814Ssimon BDataArray& operator<<(uint64); 49160814Ssimon BDataArray& operator<<(const char*); 50160814Ssimon BDataArray& operator<<(BDataArray&); 51160814Ssimon 52160814Ssimon uint8 *Buffer(void); 53160814Ssimon int32 Length(void); 54160814Ssimon 55160814Ssimon ssize_t WriteToStream(BPositionIO *stream); 56160814Ssimon 57160814Ssimonprivate: 58160814Ssimon inline status_t _ReallocArrayFor(int32 size); 59160814Ssimon 60160814Ssimon uint8 *fData; 61160814Ssimon int32 fDataSize; 62160814Ssimon int32 fAllocatedDataSize; 63160814Ssimon int32 fBlockSize; 64160814Ssimon}; 65160814Ssimon 66160814Ssimon 67160814Ssimon#endif /* PSD_DATA_ARRAY_H */ 68160814Ssimon