Utility class providing helper methods for reading / writing structured data held in a DataStream.
More...
|
| StreamSerialiser (const DataStreamPtr &stream, Endian endianMode=ENDIAN_AUTO, bool autoHeader=true, RealStorageFormat realFormat=REAL_FLOAT) |
| Constructor. More...
|
|
virtual | ~StreamSerialiser () |
|
virtual bool | eof () const |
| Reports whether the stream is at the end of file. More...
|
|
virtual const Chunk * | getCurrentChunk () const |
| Get the definition of the current chunk being read (if any). More...
|
|
size_t | getCurrentChunkDepth () const |
| Report the current depth of the chunk nesting, whether reading or writing. More...
|
|
uint32 | getCurrentChunkID () const |
| Get the ID of the chunk that's currently being read/written, if any. More...
|
|
virtual Endian | getEndian () const |
| Get the endian mode. More...
|
|
size_t | getOffsetFromChunkStart () const |
| Get the current byte position relative to the start of the data section of the last chunk that was read or written. More...
|
|
virtual bool | isEndOfChunk (uint32 id) |
| Return whether the current data pointer is at the end of the current chunk. More...
|
|
virtual uint32 | peekNextChunkID () |
| Call this to 'peek' at the next chunk ID without permanently moving the stream pointer. More...
|
|
template<typename T > |
void | read (T *pT, size_t count=1) |
| Catch-all method to read primitive types. More...
|
|
virtual void | read (Real *val, size_t count=1) |
|
virtual void | read (Vector2 *vec, size_t count=1) |
| read a Vector3 More...
|
|
virtual void | read (Vector3 *vec, size_t count=1) |
|
virtual void | read (Vector4 *vec, size_t count=1) |
|
virtual void | read (Quaternion *q, size_t count=1) |
|
virtual void | read (Matrix3 *m, size_t count=1) |
|
virtual void | read (Matrix4 *m, size_t count=1) |
|
virtual void | read (String *string) |
|
virtual void | read (AxisAlignedBox *aabb, size_t count=1) |
|
virtual void | read (Sphere *sphere, size_t count=1) |
|
virtual void | read (Plane *plane, size_t count=1) |
|
virtual void | read (Ray *ray, size_t count=1) |
|
virtual void | read (Radian *angle, size_t count=1) |
|
virtual void | read (Node *node, size_t count=1) |
|
virtual void | read (bool *val, size_t count=1) |
|
virtual const Chunk * | readChunkBegin () |
| Reads the start of the next chunk in the file. More...
|
|
virtual const Chunk * | readChunkBegin (uint32 id, uint16 maxVersion, const String &msg=BLANKSTRING) |
| Reads the start of the next chunk so long as it's of a given ID and version. More...
|
|
virtual void | readChunkEnd (uint32 id) |
| Finish the reading of a chunk. More...
|
|
virtual void | readData (void *buf, size_t size, size_t count) |
| Read arbitrary data from a stream. More...
|
|
virtual void | startDeflate (size_t avail_in=0) |
| Start (un)compressing data. More...
|
|
virtual void | stopDeflate () |
| Stop (un)compressing data. More...
|
|
virtual void | undoReadChunk (uint32 id) |
| Call this to 'rewind' the stream to just before the start of the current chunk. More...
|
|
template<typename T > |
void | write (const T *pT, size_t count=1) |
| Catch-all method to write primitive types. More...
|
|
virtual void | write (const Real *val, size_t count=1) |
|
virtual void | write (const Vector2 *vec, size_t count=1) |
|
virtual void | write (const Vector3 *vec, size_t count=1) |
|
virtual void | write (const Vector4 *vec, size_t count=1) |
|
virtual void | write (const Quaternion *q, size_t count=1) |
|
virtual void | write (const Matrix3 *m, size_t count=1) |
|
virtual void | write (const Matrix4 *m, size_t count=1) |
|
virtual void | write (const String *string) |
|
virtual void | write (const AxisAlignedBox *aabb, size_t count=1) |
|
virtual void | write (const Sphere *sphere, size_t count=1) |
|
virtual void | write (const Plane *plane, size_t count=1) |
|
virtual void | write (const Ray *ray, size_t count=1) |
|
virtual void | write (const Radian *angle, size_t count=1) |
|
virtual void | write (const Node *node, size_t count=1) |
|
virtual void | write (const bool *boolean, size_t count=1) |
|
virtual void | writeChunkBegin (uint32 id, uint16 version=1) |
| Begin writing a new chunk. More...
|
|
virtual void | writeChunkEnd (uint32 id) |
| End writing a chunk. More...
|
|
virtual void | writeData (const void *buf, size_t size, size_t count) |
| Write arbitrary data to a stream. More...
|
|
Utility class providing helper methods for reading / writing structured data held in a DataStream.
- Chunks are contained serially in the file, but they can also be nested in order both to provide context, and to group chunks together for potential skipping.
- The data format of a chunk is as follows:
- Chunk ID (32-bit uint). This can be any number unique in a context, except the numbers 0x0000, 0x0001 and 0x1000, which are reserved for Ogre's use
- Chunk version (16-bit uint). Chunks can change over time so this version number reflects that
- Length (32-bit uint). The length of the chunk data section, including nested chunks. Note that this length excludes this header, but includes the header of any nested chunks.
- Checksum (32-bit uint). Checksum value generated from the above - basically lets us check this is a valid chunk.
- Chunk data The 'Chunk data' section will contain chunk-specific data, which may include other nested chunks.