PSDTranslator: DataArray class improvements

This commit is contained in:
Gerasim Troeglazov
2013-12-20 09:19:50 +00:00
parent 10b179b33d
commit b43bd42518
2 changed files with 112 additions and 56 deletions
+96 -46
View File
@@ -57,106 +57,132 @@ BDataArray::WriteToStream(BPositionIO *stream)
} }
status_t BDataArray&
BDataArray::Append(uint8 val) BDataArray::Append(uint8 val)
{ {
status_t status = _ReallocArrayFor(sizeof(val)); status_t status = _ReallocArrayFor(sizeof(val));
if (status != B_OK) if (status == B_OK) {
return status; fData[fDataSize] = val;
fData[fDataSize] = val; fDataSize++;
fDataSize++; }
return B_OK; return *this;
} }
status_t BDataArray&
BDataArray::Append(int8 val) BDataArray::Append(int8 val)
{ {
return Append((uint8)val); return Append((uint8)val);
} }
status_t BDataArray&
BDataArray::Append(uint16 val) BDataArray::Append(uint16 val)
{ {
status_t status = _ReallocArrayFor(sizeof(val)); status_t status = _ReallocArrayFor(sizeof(val));
if (status != B_OK) if (status == B_OK) {
return status; val = B_HOST_TO_BENDIAN_INT16(val);
val = B_HOST_TO_BENDIAN_INT16(val); memcpy(fData + fDataSize, &val, sizeof(val));
memcpy(fData + fDataSize, &val, sizeof(val)); fDataSize += sizeof(val);
fDataSize += sizeof(val); }
return B_OK; return *this;
} }
status_t BDataArray&
BDataArray::Append(int16 val) BDataArray::Append(int16 val)
{ {
return Append((uint16)val); return Append((uint16)val);
} }
status_t BDataArray&
BDataArray::Append(uint32 val) BDataArray::Append(uint32 val)
{ {
status_t status = _ReallocArrayFor(sizeof(val)); status_t status = _ReallocArrayFor(sizeof(val));
if (status != B_OK) if (status == B_OK) {
return status; val = B_HOST_TO_BENDIAN_INT32(val);
val = B_HOST_TO_BENDIAN_INT32(val); memcpy(fData + fDataSize, &val, sizeof(val));
memcpy(fData + fDataSize, &val, sizeof(val)); fDataSize += sizeof(val);
fDataSize += sizeof(val); }
return B_OK; 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) BDataArray::Append(int32 val)
{ {
return Append((uint32)val); return Append((uint32)val);
} }
BDataArray&
status_t
BDataArray::Append(const char *str) BDataArray::Append(const char *str)
{ {
int32 len = strlen(str); int32 len = strlen(str);
status_t status = _ReallocArrayFor(len); status_t status = _ReallocArrayFor(len);
if (status != B_OK) if (status == B_OK) {
return status; memcpy(fData + fDataSize, str, len);
memcpy(fData + fDataSize, str, len); fDataSize += len;
fDataSize += len; }
return B_OK; return *this;
} }
status_t BDataArray&
BDataArray::Append(BString str) BDataArray::Append(BString& str)
{ {
return Append(str.String()); return Append(str.String());
} }
status_t BDataArray&
BDataArray::Append(uint8 *ptr, int32 len) BDataArray::Append(BDataArray& array)
{ {
status_t status = _ReallocArrayFor(len); return Append(array.Buffer(), array.Length());
if (status != B_OK)
return status;
memcpy(fData + fDataSize, ptr, len);
fDataSize += len;
return B_OK;
} }
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) BDataArray::Repeat(uint8 byte, int32 count)
{ {
status_t status = _ReallocArrayFor(count); status_t status = _ReallocArrayFor(count);
if (status != B_OK) if (status == B_OK) {
return status; memset(fData + fDataSize, byte, count);
memset(fData + fDataSize, byte, count); fDataSize += count;
fDataSize += count; }
return B_OK; 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&
BDataArray::operator<<(const char* str) BDataArray::operator<<(const char* str)
{ {
Append(str); Append(str);
return *this; return *this;
} }
BDataArray&
BDataArray::operator<<(BDataArray& array)
{
Append(array);
return *this;
}
+16 -10
View File
@@ -23,17 +23,20 @@ public:
BDataArray(int32 blockSize = DATAARRAY_BLOCK_SIZE); BDataArray(int32 blockSize = DATAARRAY_BLOCK_SIZE);
~BDataArray(); ~BDataArray();
status_t Append(int8 val); BDataArray& Append(int8 val);
status_t Append(uint8 val); BDataArray& Append(uint8 val);
status_t Append(int16 val); BDataArray& Append(int16 val);
status_t Append(uint16 val); BDataArray& Append(uint16 val);
status_t Append(int32 val); BDataArray& Append(int32 val);
status_t Append(uint32 val); BDataArray& Append(uint32 val);
status_t Append(const char *str); BDataArray& Append(int64 val);
status_t Append(BString str); BDataArray& Append(uint64 val);
status_t Append(uint8 *ptr, int32 len); 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<<(int8);
BDataArray& operator<<(uint8); BDataArray& operator<<(uint8);
@@ -41,7 +44,10 @@ public:
BDataArray& operator<<(uint16); BDataArray& operator<<(uint16);
BDataArray& operator<<(int32); BDataArray& operator<<(int32);
BDataArray& operator<<(uint32); BDataArray& operator<<(uint32);
BDataArray& operator<<(int64);
BDataArray& operator<<(uint64);
BDataArray& operator<<(const char*); BDataArray& operator<<(const char*);
BDataArray& operator<<(BDataArray&);
uint8 *Buffer(void); uint8 *Buffer(void);
int32 Length(void); int32 Length(void);