COMMON: Add ReadStream::readPascalString()

This commit is contained in:
Eugene Sandulenko 2017-01-14 12:45:58 +01:00
parent 599184ab19
commit 0b95b734b8
2 changed files with 29 additions and 0 deletions

View File

@ -39,6 +39,27 @@ SeekableReadStream *ReadStream::readStream(uint32 dataSize) {
return new MemoryReadStream((byte *)buf, dataSize, DisposeAfterUse::YES);
}
Common::String ReadStream::readPascalString(bool transformCR) {
Common::String s;
char *buf;
int len;
int i;
len = readByte();
buf = (char *)malloc(len + 1);
for (i = 0; i < len; i++) {
buf[i] = readByte();
if (transformCR && buf[i] == 0x0d)
buf[i] = '\n';
}
buf[i] = 0;
s = buf;
free(buf);
return s;
}
uint32 MemoryReadStream::read(void *dataPtr, uint32 dataSize) {
// Read at most as many bytes as are still available...

View File

@ -427,6 +427,14 @@ public:
*/
SeekableReadStream *readStream(uint32 dataSize);
/**
* Read stream in Pascal format, that is, one byte is
* string length, followed by string data
*
* @param transformCR if set (default), then transform \r into \n
*/
Common::String readPascalString(bool transformCR = true);
};