ScummVM API documentation
StdioStream Class Reference
Inheritance diagram for StdioStream:
Common::SeekableReadStream Common::SeekableWriteStream Common::NonCopyable Common::ReadStream Common::WriteStream Common::Stream Common::Stream PosixIoStream

Public Types

enum  WriteMode { WriteMode_Read = 0, WriteMode_Write = 1, WriteMode_WriteAtomic = 2 }
 

Public Member Functions

 StdioStream (void *handle)
 
bool err () const override
 
void clearErr () override
 
bool eos () const override
 
uint32 write (const void *dataPtr, uint32 dataSize) override
 
bool flush () override
 
int64 pos () const override
 
int64 size () const override
 
bool seek (int64 offs, int whence=SEEK_SET) override
 
uint32 read (void *dataPtr, uint32 dataSize) override
 
bool setBufferSize (uint32 bufferSize)
 
- 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)
 
- Public Member Functions inherited from Common::WriteStream
virtual void finalize ()
 
void writeByte (byte value)
 
void writeSByte (int8 value)
 
void writeUint16LE (uint16 value)
 
void writeUint32LE (uint32 value)
 
void writeUint64LE (uint64 value)
 
void writeUint16BE (uint16 value)
 
void writeUint32BE (uint32 value)
 
void writeUint64BE (uint64 value)
 
FORCEINLINE void writeSint16LE (int16 value)
 
FORCEINLINE void writeSint32LE (int32 value)
 
FORCEINLINE void writeSint64LE (int64 value)
 
FORCEINLINE void writeSint16BE (int16 value)
 
FORCEINLINE void writeSint32BE (int32 value)
 
FORCEINLINE void writeSint64BE (int64 value)
 
FORCEINLINE void writeFloatLE (float value)
 
FORCEINLINE void writeFloatBE (float value)
 
FORCEINLINE void writeDoubleLE (double value)
 
FORCEINLINE void writeDoubleBE (double value)
 
template<class TDataFormat , class... T>
bool writeMultiple (const TDataFormat &dataFormat, const T &...values)
 
template<class... T>
bool writeMultipleEndian (bool isLittle, const T &...values)
 
template<class... T>
bool writeMultipleLE (const T &...values)
 
template<class... T>
bool writeMultipleBE (const T &...values)
 
uint32 writeStream (ReadStream *stream, uint32 dataSize)
 
uint32 writeStream (ReadStream *stream)
 
void writeString (const String &str)
 

Static Public Member Functions

static StdioStreammakeFromPath (const Common::String &path, WriteMode writeMode)
 

Static Protected Member Functions

static StdioStreammakeFromPathHelper (const Common::String &path, WriteMode writeMode, StdioStream *(*factory)(void *handle))
 

Protected Attributes

void * _handle
 
Common::String_path
 

Member Function Documentation

◆ makeFromPath()

static StdioStream* StdioStream::makeFromPath ( const Common::String path,
WriteMode  writeMode 
)
inlinestatic

Given a path, invokes fopen on that path and wrap the result in a StdioStream instance.

◆ err()

bool StdioStream::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 StdioStream::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 StdioStream::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.

◆ write()

uint32 StdioStream::write ( const void *  dataPtr,
uint32  dataSize 
)
overridevirtual

Write data into the stream. Subclasses must implement this method. All other write methods are implemented using it.

Note
The semantics of any implementation of this method is supposed to match that of ISO C fwrite().
Parameters
dataPtrPointer to the data to be written.
dataSizeNumber of bytes to be written.
Returns
The number of bytes that were actually written.

Implements Common::WriteStream.

◆ flush()

bool StdioStream::flush ( )
overridevirtual

Commit any buffered data to the underlying channel or storage medium. Unbuffered streams can use the default implementation.

Note
The semantics of any implementation of this method is supposed to match that of ISO C fflush().
Returns
True on success, false in case of a failure.

Reimplemented from Common::WriteStream.

◆ pos()

int64 StdioStream::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 StdioStream::size ( ) const
overridevirtual

Obtain the current 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::SeekableWriteStream.

◆ seek()

bool StdioStream::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
offsetThe relative offset in bytes.
whenceThe seek reference: SEEK_SET, SEEK_CUR, or SEEK_END.
Returns
True on success, false in case of a failure.

Implements Common::SeekableWriteStream.

◆ read()

uint32 StdioStream::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.

◆ setBufferSize()

bool StdioStream::setBufferSize ( uint32  bufferSize)

Configure buffered IO

Must be called immediately after opening the file. A buffer size of 0 disables buffering.

Parameters
bufferSizethe size of the Stdio read / write buffer
Returns
success or failure

Member Data Documentation

◆ _handle

void* StdioStream::_handle
protected

File handle to the actual file.


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