49 # include <sys/types.h>
50 # include <sys/stat.h>
57 typedef __int8 int8_t;
58 typedef __int16 int16_t;
59 typedef __int32 int32_t;
60 typedef __int64 int64_t;
61 typedef unsigned __int8 uint8_t;
62 typedef unsigned __int16 uint16_t;
63 typedef unsigned __int32 uint32_t;
64 typedef unsigned __int64 uint64_t;
71 typedef unsigned int uint;
77 # define CHUNK_ID_RIFF 0x52494646
78 # define CHUNK_ID_RIFX 0x52494658
79 # define CHUNK_ID_LIST 0x4C495354
80 #else // little endian
81 # define CHUNK_ID_RIFF 0x46464952
82 # define CHUNK_ID_RIFX 0x58464952
83 # define CHUNK_ID_LIST 0x5453494C
84 #endif // WORDS_BIGENDIAN
86 #define CHUNK_HEADER_SIZE 8
87 #define LIST_HEADER_SIZE 12
88 #define RIFF_HEADER_SIZE 12
117 typedef std::string
String;
166 unsigned long Read(
void* pData,
unsigned long WordCount,
unsigned long WordSize);
167 unsigned long ReadInt8(int8_t* pData,
unsigned long WordCount = 1);
168 unsigned long ReadUint8(uint8_t* pData,
unsigned long WordCount = 1);
169 unsigned long ReadInt16(int16_t* pData,
unsigned long WordCount = 1);
170 unsigned long ReadUint16(uint16_t* pData,
unsigned long WordCount = 1);
171 unsigned long ReadInt32(int32_t* pData,
unsigned long WordCount = 1);
172 unsigned long ReadUint32(uint32_t* pData,
unsigned long WordCount = 1);
179 unsigned long Write(
void* pData,
unsigned long WordCount,
unsigned long WordSize);
180 unsigned long WriteInt8(int8_t* pData,
unsigned long WordCount = 1);
181 unsigned long WriteUint8(uint8_t* pData,
unsigned long WordCount = 1);
182 unsigned long WriteInt16(int16_t* pData,
unsigned long WordCount = 1);
183 unsigned long WriteUint16(uint16_t* pData,
unsigned long WordCount = 1);
184 unsigned long WriteInt32(int32_t* pData,
unsigned long WordCount = 1);
185 unsigned long WriteUint32(uint32_t* pData,
unsigned long WordCount = 1);
188 void Resize(
int iNewSize);
205 unsigned long ReadSceptical(
void* pData,
unsigned long WordCount,
unsigned long WordSize);
207 uint8_t byteCache = *((uint8_t*) Word);
208 *((uint8_t*) Word) = *((uint8_t*) Word + 1);
209 *((uint8_t*) Word + 1) = byteCache;
212 uint8_t byteCache = *((uint8_t*) Word);
213 *((uint8_t*) Word) = *((uint8_t*) Word + 3);
214 *((uint8_t*) Word + 3) = byteCache;
215 byteCache = *((uint8_t*) Word + 1);
216 *((uint8_t*) Word + 1) = *((uint8_t*) Word + 2);
217 *((uint8_t*) Word + 2) = byteCache;
219 inline void swapBytes(
void* Word,
unsigned long WordSize) {
221 unsigned long lo = 0, hi = WordSize - 1;
222 for (; lo < hi; hi--, lo++) {
223 byteCache = *((uint8_t*) Word + lo);
224 *((uint8_t*) Word + lo) = *((uint8_t*) Word + hi);
225 *((uint8_t*) Word + hi) = byteCache;
230 for (
int i = 0; i < 4; i++) {
231 uint8_t byte = *((uint8_t*)(&word) + i);
237 virtual unsigned long WriteChunk(
unsigned long ulWritePos,
unsigned long ulCurrentDataOffset);
284 virtual unsigned long WriteChunk(
unsigned long ulWritePos,
unsigned long ulCurrentDataOffset);
297 File(uint32_t FileType);
328 unsigned long GetFileSize();
329 void ResizeFile(
unsigned long ulNewSize);
331 unsigned long __GetFileSize(
int hFile);
333 unsigned long __GetFileSize(HANDLE hFile);
335 unsigned long __GetFileSize(FILE* hFile);