TombEngine/TR5Main/Specific/IO/ChunkReader.h
2020-12-21 13:16:29 -03:00

48 lines
907 B
C++

#pragma once
#include "ChunkId.h"
#include "LEB128.h"
#include "Streams.h"
class ChunkReader
{
private:
bool m_isValid;
ChunkId* m_emptyChunk = nullptr;
BaseStream* m_stream = nullptr;
int readInt32();
short readInt16();
public:
ChunkReader(int expectedMagicNumber, BaseStream* stream);
~ChunkReader();
bool IsValid();
bool ReadChunks(bool(*func)(ChunkId* parentChunkId, int maxSize, int arg), int arg);
bool ReadChunks(std::function<bool(ChunkId*, long, int)> func, int arg);
char* ReadChunkArrayOfBytes(__int64 length);
bool ReadChunkBool(__int64 length);
__int64 ReadChunkLong(__int64 length);
int ReadChunkInt32(__int64 length);
unsigned int ReadChunkUInt32(__int64 length);
short ReadChunkInt16(__int64 length);
unsigned short ReadChunkUInt16(__int64 length);
byte ReadChunkByte(__int64 length);
char* ReadChunkString(long length);
BaseStream* GetRawStream();
};