ScummVM API documentation
Gob::SaveConverter Class Referenceabstract

#include <saveconverter.h>

Inheritance diagram for Gob::SaveConverter:
Common::SeekableReadStream Common::ReadStream Common::Stream Gob::SaveConverter_Notes Gob::SaveConverter_v2 Gob::SaveConverter_v3 Gob::SaveConverter_v4

Public Member Functions

 SaveConverter (GobEngine *vm, const Common::String &fileName)
 
virtual void clear ()
 
virtual void setFileName (const Common::String &fileName)
 
virtual int isOldSave (Common::InSaveFile **save=0) const =0
 
virtual char * getDescription (Common::SeekableReadStream &save) const =0
 
virtual bool load ()=0
 
char * getDescription (const Common::String &fileName)
 
char * getDescription () const
 
bool err () const override
 
void clearErr () override
 
bool eos () const override
 
uint32 read (void *dataPtr, uint32 dataSize) override
 
int64 pos () const override
 
int64 size () const override
 
bool seek (int64 offset, int whence=SEEK_SET) override
 
- Public Member Functions inherited from Common::SeekableReadStream
virtual bool skip (uint32 offset)
 
virtual char * readLine (char *s, size_t bufSize, bool handleCR=true)
 
virtual String readLine (bool handleCR=true)
 
void hexdump (int len, int bytesPerLine=16, int startOffset=0)
 
- Public Member Functions inherited from Common::ReadStream
byte readByte ()
 
FORCEINLINE int8 readSByte ()
 
uint16 readUint16LE ()
 
uint32 readUint32LE ()
 
uint64 readUint64LE ()
 
uint16 readUint16BE ()
 
uint32 readUint32BE ()
 
uint64 readUint64BE ()
 
FORCEINLINE int16 readSint16LE ()
 
FORCEINLINE int32 readSint32LE ()
 
FORCEINLINE int64 readSint64LE ()
 
FORCEINLINE int16 readSint16BE ()
 
FORCEINLINE int32 readSint32BE ()
 
FORCEINLINE int64 readSint64BE ()
 
FORCEINLINE float readFloatLE ()
 
FORCEINLINE float readFloatBE ()
 
FORCEINLINE double readDoubleLE ()
 
FORCEINLINE double readDoubleBE ()
 
template<class TDataFormat , class... T>
bool readMultiple (const TDataFormat &dataFormat, T &...values)
 
template<class... T>
bool readMultipleEndian (bool isLittle, T &...values)
 
template<class... T>
bool readMultipleLE (T &...values)
 
template<class... T>
bool readMultipleBE (T &...values)
 
SeekableReadStreamreadStream (uint32 dataSize)
 
String readString (char terminator=0, size_t len=String::npos)
 
Common::String readPascalString (bool transformCR=true)
 

Protected Member Functions

Common::InSaveFileopenSave () const
 
virtual void displayWarning () const
 
virtual uint32 getActualSize (Common::InSaveFile **save=0) const
 
SavePartInforeadInfo (Common::SeekableReadStream &stream, uint32 descLength, bool hasSizes=true) const
 
SavePartVarsreadVars (Common::SeekableReadStream &stream, uint32 count, bool endian) const
 
SavePartMemreadMem (Common::SeekableReadStream &stream, uint32 count, bool endian) const
 
SavePartSpritereadSprite (Common::SeekableReadStream &stream, uint32 width, uint32 height, bool palette) const
 
bool createStream (SaveWriter &writer)
 

Static Protected Member Functions

static bool swapDataEndian (byte *data, const byte *sizes, uint32 count)
 

Protected Attributes

GobEngine_vm
 
Common::String _fileName
 
byte * _data
 
Common::SeekableReadStream_stream
 

Detailed Description

A wrapping stream class for old saves.

Member Function Documentation

◆ clear()

virtual void Gob::SaveConverter::clear ( )
virtual

Clear the converter.

◆ setFileName()

virtual void Gob::SaveConverter::setFileName ( const Common::String fileName)
virtual

Set the filename on which to operate.

◆ isOldSave()

virtual int Gob::SaveConverter::isOldSave ( Common::InSaveFile **  save = 0) const
pure virtual

◆ getDescription() [1/3]

virtual char* Gob::SaveConverter::getDescription ( Common::SeekableReadStream save) const
pure virtual

Directly return the description without processing the whole save.

Implemented in Gob::SaveConverter_v4, Gob::SaveConverter_v3, Gob::SaveConverter_v2, and Gob::SaveConverter_Notes.

◆ load()

virtual bool Gob::SaveConverter::load ( )
pure virtual

◆ getDescription() [2/3]

char* Gob::SaveConverter::getDescription ( const Common::String fileName)

Set the name and return the description.

◆ getDescription() [3/3]

char* Gob::SaveConverter::getDescription ( ) const

Get the current fileName's description.

◆ err()

bool Gob::SaveConverter::err ( ) const
overridevirtual

Return true if an I/O failure occurred.

This flag is never cleared automatically. In order to clear it, the client code must call clearErr() explicitly.

Note
The semantics of any implementation of this method is supposed to match that of ISO C ferror().

Reimplemented from Common::Stream.

◆ clearErr()

void Gob::SaveConverter::clearErr ( )
overridevirtual

Reset the I/O error status as returned by err().

For a ReadStream, also reset the end-of-stream status returned by eos().

Note
The semantics of any implementation of this method is supposed to match that of ISO C clearerr().

Reimplemented from Common::Stream.

◆ eos()

bool Gob::SaveConverter::eos ( ) const
overridevirtual

Return true if a read failed because the stream end has been reached.

This flag is cleared by clearErr(). For a SeekableReadStream, the flag is also cleared by a successful seek.

Note
The semantics of any implementation of this method is supposed to match that of ISO C feof(). In particular, in a stream with N bytes, reading exactly N bytes from the start should not set eos; only reading beyond the available data should set it.

Implements Common::ReadStream.

◆ read()

uint32 Gob::SaveConverter::read ( void *  dataPtr,
uint32  dataSize 
)
overridevirtual

Read data from the stream.

Subclasses must implement this method. All other read methods are implemented using it.

Note
The semantics of any implementation of this method is supposed to match that of ISO C fread(), in particular where it concerns setting error and end of file/stream flags.
Parameters
dataPtrPointer to a buffer into which the data is read.
dataSizeNumber of bytes to be read.
Returns
The number of bytes that were actually read.

Implements Common::ReadStream.

◆ pos()

int64 Gob::SaveConverter::pos ( ) const
overridevirtual

Obtain the current value of the stream position indicator.

Returns
The current position indicator, or -1 if an error occurred.

Implements Common::SeekableReadStream.

◆ size()

int64 Gob::SaveConverter::size ( ) const
overridevirtual

Obtain the total size of the stream, measured in bytes. If this value is unknown or cannot be computed, -1 is returned.

Returns
The size of the stream, or -1 if an error occurred.

Implements Common::SeekableReadStream.

◆ seek()

bool Gob::SaveConverter::seek ( int64  offset,
int  whence = SEEK_SET 
)
overridevirtual

Set the stream position indicator for the stream.

The new position, measured in bytes, is obtained by adding offset bytes to the position specified by whence. If whence is set to SEEK_SET, SEEK_CUR, or SEEK_END, the offset is relative to the start of the file, the current position indicator, or end-of-stream, respectively. A successful call to the seek() method clears the end-of-stream indicator for the stream.

Note
The semantics of any implementation of this method is supposed to match that of ISO C fseek().
Parameters
offsetRelative offset in bytes.
whenceSeek reference: SEEK_SET, SEEK_CUR, or SEEK_END.
Returns
True on success, false in case of a failure.

Implements Common::SeekableReadStream.

◆ displayWarning()

virtual void Gob::SaveConverter::displayWarning ( ) const
protectedvirtual

Write a warning to stdout to notify the user what's going on.

◆ swapDataEndian()

static bool Gob::SaveConverter::swapDataEndian ( byte *  data,
const byte *  sizes,
uint32  count 
)
staticprotected

Swap the endianness of the complete data area.


The documentation for this class was generated from the following file: