ScummVM API documentation
Common::SubReadStream Class Reference

#include <substream.h>

Inheritance diagram for Common::SubReadStream:
Common::ReadStream Common::Stream Common::SeekableSubReadStream Common::SafeSeekableSubReadStream CryOmni3D::DATSeekableStream Stark::ArchiveReadStream Stark::Formats::XRCReadStream Stark::StateReadStream Common::SafeMutexedSeekableSubReadStream

Public Member Functions

 SubReadStream (ReadStream *parentStream, uint32 end, DisposeAfterUse::Flag disposeParentStream=DisposeAfterUse::NO)
 
virtual bool eos () const
 
virtual bool err () const
 
virtual void clearErr ()
 
virtual uint32 read (void *dataPtr, uint32 dataSize)
 
- 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 Attributes

DisposablePtr< ReadStream_parentStream
 
uint32 _pos
 
uint32 _end
 
bool _eos
 

Detailed Description

SubReadStream provides access to a ReadStream restricted to the range [currentPosition, currentPosition+end).

Manipulating the parent stream directly /will/ mess up a substream. Likewise, manipulating two substreams of a parent stream will cause them to step on each others toes.

Member Function Documentation

◆ eos()

virtual bool Common::SubReadStream::eos ( ) const
inlinevirtual

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.

◆ err()

virtual bool Common::SubReadStream::err ( ) const
inlinevirtual

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()

virtual void Common::SubReadStream::clearErr ( )
inlinevirtual

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.

◆ read()

virtual uint32 Common::SubReadStream::read ( void *  dataPtr,
uint32  dataSize 
)
virtual

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.

Reimplemented in Common::SafeMutexedSeekableSubReadStream, and Common::SafeSeekableSubReadStream.


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