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.