diff --git a/src/add-ons/translators/psd/DataArray.cpp b/src/add-ons/translators/psd/DataArray.cpp index e3dd21b016..680bf1a349 100644 --- a/src/add-ons/translators/psd/DataArray.cpp +++ b/src/add-ons/translators/psd/DataArray.cpp @@ -57,106 +57,132 @@ BDataArray::WriteToStream(BPositionIO *stream) } -status_t +BDataArray& BDataArray::Append(uint8 val) { status_t status = _ReallocArrayFor(sizeof(val)); - if (status != B_OK) - return status; - fData[fDataSize] = val; - fDataSize++; - return B_OK; + if (status == B_OK) { + fData[fDataSize] = val; + fDataSize++; + } + return *this; } -status_t +BDataArray& BDataArray::Append(int8 val) { return Append((uint8)val); } -status_t +BDataArray& BDataArray::Append(uint16 val) { status_t status = _ReallocArrayFor(sizeof(val)); - if (status != B_OK) - return status; - val = B_HOST_TO_BENDIAN_INT16(val); - memcpy(fData + fDataSize, &val, sizeof(val)); - fDataSize += sizeof(val); - return B_OK; + if (status == B_OK) { + val = B_HOST_TO_BENDIAN_INT16(val); + memcpy(fData + fDataSize, &val, sizeof(val)); + fDataSize += sizeof(val); + } + return *this; } -status_t +BDataArray& BDataArray::Append(int16 val) { return Append((uint16)val); } -status_t +BDataArray& BDataArray::Append(uint32 val) { status_t status = _ReallocArrayFor(sizeof(val)); - if (status != B_OK) - return status; - val = B_HOST_TO_BENDIAN_INT32(val); - memcpy(fData + fDataSize, &val, sizeof(val)); - fDataSize += sizeof(val); - return B_OK; + if (status == B_OK) { + val = B_HOST_TO_BENDIAN_INT32(val); + memcpy(fData + fDataSize, &val, sizeof(val)); + fDataSize += sizeof(val); + } + return *this; } -status_t +BDataArray& +BDataArray::Append(int64 val) +{ + return Append((uint64)val); +} + + +BDataArray& +BDataArray::Append(uint64 val) +{ + status_t status = _ReallocArrayFor(sizeof(val)); + if (status == B_OK) { + val = B_HOST_TO_BENDIAN_INT64(val); + memcpy(fData + fDataSize, &val, sizeof(val)); + fDataSize += sizeof(val); + } + return *this; +} + + +BDataArray& BDataArray::Append(int32 val) { return Append((uint32)val); } - -status_t +BDataArray& BDataArray::Append(const char *str) { int32 len = strlen(str); status_t status = _ReallocArrayFor(len); - if (status != B_OK) - return status; - memcpy(fData + fDataSize, str, len); - fDataSize += len; - return B_OK; + if (status == B_OK) { + memcpy(fData + fDataSize, str, len); + fDataSize += len; + } + return *this; } -status_t -BDataArray::Append(BString str) +BDataArray& +BDataArray::Append(BString& str) { return Append(str.String()); } -status_t -BDataArray::Append(uint8 *ptr, int32 len) +BDataArray& +BDataArray::Append(BDataArray& array) { - status_t status = _ReallocArrayFor(len); - if (status != B_OK) - return status; - memcpy(fData + fDataSize, ptr, len); - fDataSize += len; - return B_OK; + return Append(array.Buffer(), array.Length()); } -status_t +BDataArray& +BDataArray::Append(uint8 *ptr, int32 len) +{ + status_t status = _ReallocArrayFor(len); + if (status == B_OK) { + memcpy(fData + fDataSize, ptr, len); + fDataSize += len; + } + return *this; +} + + +BDataArray& BDataArray::Repeat(uint8 byte, int32 count) { status_t status = _ReallocArrayFor(count); - if (status != B_OK) - return status; - memset(fData + fDataSize, byte, count); - fDataSize += count; - return B_OK; + if (status == B_OK) { + memset(fData + fDataSize, byte, count); + fDataSize += count; + } + return *this; } @@ -208,9 +234,33 @@ BDataArray::operator<<(uint32 val) } +BDataArray& +BDataArray::operator<<(int64 val) +{ + Append(val); + return *this; +} + + +BDataArray& +BDataArray::operator<<(uint64 val) +{ + Append(val); + return *this; +} + + BDataArray& BDataArray::operator<<(const char* str) { Append(str); return *this; } + + +BDataArray& +BDataArray::operator<<(BDataArray& array) +{ + Append(array); + return *this; +} diff --git a/src/add-ons/translators/psd/DataArray.h b/src/add-ons/translators/psd/DataArray.h index 33d97cfa7c..fba0546649 100644 --- a/src/add-ons/translators/psd/DataArray.h +++ b/src/add-ons/translators/psd/DataArray.h @@ -23,17 +23,20 @@ public: BDataArray(int32 blockSize = DATAARRAY_BLOCK_SIZE); ~BDataArray(); - status_t Append(int8 val); - status_t Append(uint8 val); - status_t Append(int16 val); - status_t Append(uint16 val); - status_t Append(int32 val); - status_t Append(uint32 val); - status_t Append(const char *str); - status_t Append(BString str); - status_t Append(uint8 *ptr, int32 len); + 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); - status_t Repeat(uint8 byte, int32 count); + BDataArray& Repeat(uint8 byte, int32 count); BDataArray& operator<<(int8); BDataArray& operator<<(uint8); @@ -41,7 +44,10 @@ public: 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);