diff options
author | eray orçunus <erayorcunus@gmail.com> | 2020-10-12 19:47:34 +0200 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2020-10-12 19:47:34 +0200 |
commit | 342da2430b5e0ca6ccc278c32ff104e1cfdb4113 (patch) | |
tree | 3285d50a4a687252b31c965afcde3a5a7a0d5cdc /src/core/common.h | |
parent | SampleManager (diff) | |
parent | Streaming and cross-platform fixes (diff) | |
download | re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.gz re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.bz2 re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.lz re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.xz re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.zst re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.zip |
Diffstat (limited to 'src/core/common.h')
-rw-r--r-- | src/core/common.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/core/common.h b/src/core/common.h index c4c133fa..0e6bd60f 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -412,6 +412,15 @@ inline void SkipSaveBuf(uint8 *&buf, int32 skip) #endif } +inline void SkipSaveBuf(uint8*& buf, uint32 &length, int32 skip) +{ + buf += skip; + length += skip; +#ifdef VALIDATE_SAVE_SIZE + _saveBufCount += skip; +#endif +} + template<typename T> inline const T ReadSaveBuf(uint8 *&buf) { @@ -421,6 +430,14 @@ inline const T ReadSaveBuf(uint8 *&buf) } template<typename T> +inline const T ReadSaveBuf(uint8 *&buf, uint32 &length) +{ + T &value = *(T*)buf; + SkipSaveBuf(buf, length, sizeof(T)); + return value; +} + +template<typename T> inline T *WriteSaveBuf(uint8 *&buf, const T &value) { T *p = (T*)buf; @@ -429,6 +446,15 @@ inline T *WriteSaveBuf(uint8 *&buf, const T &value) return p; } +template<typename T> +inline T *WriteSaveBuf(uint8 *&buf, uint32 &length, const T &value) +{ + T *p = (T*)buf; + *p = value; + SkipSaveBuf(buf, length, sizeof(T)); + return p; +} + #define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32)) @@ -439,6 +465,13 @@ inline T *WriteSaveBuf(uint8 *&buf, const T &value) WriteSaveBuf(buf, d);\ WriteSaveBuf<uint32>(buf, size); +#define WriteSaveHeaderWithLength(buf,len,a,b,c,d,size) \ + WriteSaveBuf(buf, len, a);\ + WriteSaveBuf(buf, len, b);\ + WriteSaveBuf(buf, len, c);\ + WriteSaveBuf(buf, len, d);\ + WriteSaveBuf<uint32>(buf, len, size); + #define CheckSaveHeader(buf,a,b,c,d,size)\ assert(ReadSaveBuf<char>(buf) == a);\ assert(ReadSaveBuf<char>(buf) == b);\ @@ -446,5 +479,12 @@ inline T *WriteSaveBuf(uint8 *&buf, const T &value) assert(ReadSaveBuf<char>(buf) == d);\ assert(ReadSaveBuf<uint32>(buf) == size); +#define CheckSaveHeaderWithLength(buf,len,a,b,c,d,size)\ + assert(ReadSaveBuf<char>(buf,len) == a);\ + assert(ReadSaveBuf<char>(buf,len) == b);\ + assert(ReadSaveBuf<char>(buf,len) == c);\ + assert(ReadSaveBuf<char>(buf,len) == d);\ + assert(ReadSaveBuf<uint32>(buf,len) == size); + void cprintf(char*, ...);
\ No newline at end of file |