Plasma Engine  2.0
Loading...
Searching...
No Matches
plMemoryStreamReader Class Reference

A reader which can access a memory stream. More...

#include <MemoryStream.h>

Inheritance diagram for plMemoryStreamReader:

Public Member Functions

 plMemoryStreamReader (const plMemoryStreamStorageInterface *pStreamStorage=nullptr)
 Pass the memory storage object from which to read from. Pass nullptr if you are going to set the storage stream later via SetStorage().
 
void SetStorage (const plMemoryStreamStorageInterface *pStreamStorage)
 Sets the storage object upon which to operate. Resets the read position to zero. Pass nullptr if you want to detach from any previous storage stream, for example to ensure its reference count gets properly reduced.
 
virtual plUInt64 ReadBytes (void *pReadBuffer, plUInt64 uiBytesToRead) override
 Reads either uiBytesToRead or the amount of remaining bytes in the stream into pReadBuffer.
 
virtual plUInt64 SkipBytes (plUInt64 uiBytesToSkip) override
 Skips bytes in the stream (e.g. for skipping objects which can't be serialized due to missing information etc.)
 
void SetReadPosition (plUInt64 uiReadPosition)
 Sets the read position to be used.
 
plUInt64 GetReadPosition () const
 Returns the current read position.
 
plUInt32 GetByteCount32 () const
 Returns the total available bytes in the memory stream.
 
plUInt64 GetByteCount64 () const
 
void SetDebugSourceInformation (plStringView sDebugSourceInformation)
 Allows to set a string as the source of information in the memory stream for debug purposes.
 
- Public Member Functions inherited from plStreamReader
 plStreamReader ()
 Constructor.
 
virtual ~plStreamReader ()
 Virtual destructor to ensure correct cleanup.
 
template<typename T >
plResult ReadWordValue (T *pWordValue)
 Helper method to read a word value correctly (copes with potentially different endianess)
 
template<typename T >
plResult ReadDWordValue (T *pDWordValue)
 Helper method to read a dword value correctly (copes with potentially different endianess)
 
template<typename T >
plResult ReadQWordValue (T *pQWordValue)
 Helper method to read a qword value correctly (copes with potentially different endianess)
 
template<typename ArrayType , typename ValueType >
plResult ReadArray (plArrayBase< ValueType, ArrayType > &inout_array)
 Reads an array of elements from the stream.
 
template<typename ValueType , plUInt16 uiSize, typename AllocatorWrapper >
plResult ReadArray (plSmallArray< ValueType, uiSize, AllocatorWrapper > &ref_array)
 Reads a small array of elements from the stream.
 
template<typename ValueType , plUInt32 uiSize>
plResult ReadArray (ValueType(&array)[uiSize])
 Writes a C style fixed array.
 
template<typename KeyType , typename Comparer >
plResult ReadSet (plSetBase< KeyType, Comparer > &inout_set)
 Reads a set.
 
template<typename KeyType , typename ValueType , typename Comparer >
plResult ReadMap (plMapBase< KeyType, ValueType, Comparer > &inout_map)
 Reads a map.
 
template<typename KeyType , typename ValueType , typename Hasher >
plResult ReadHashTable (plHashTableBase< KeyType, ValueType, Hasher > &inout_hashTable)
 Read a hash table (note that the entry order is not stable)
 
plResult ReadString (plStringBuilder &ref_sBuilder)
 Reads a string into an plStringBuilder.
 
plResult ReadString (plString &ref_sString)
 Reads a string into an plString.
 
PL_ALWAYS_INLINE plTypeVersion ReadVersion (plTypeVersion expectedMaxVersion)
 

Detailed Description

A reader which can access a memory stream.

Please note that the functions exposed by this object are not thread safe! If access to the same plMemoryStreamStorage object from multiple threads is desired please create one instance of plMemoryStreamReader per thread.

Member Function Documentation

◆ ReadBytes()

plUInt64 plMemoryStreamReader::ReadBytes ( void * pReadBuffer,
plUInt64 uiBytesToRead )
overridevirtual

Reads either uiBytesToRead or the amount of remaining bytes in the stream into pReadBuffer.

It is valid to pass nullptr for pReadBuffer, in this case the memory stream position is only advanced by the given number of bytes.

Implements plStreamReader.

◆ SkipBytes()

plUInt64 plMemoryStreamReader::SkipBytes ( plUInt64 uiBytesToSkip)
overridevirtual

Skips bytes in the stream (e.g. for skipping objects which can't be serialized due to missing information etc.)

Reimplemented from plStreamReader.


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