Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 32 additions & 10 deletions Source/ZenLib/BitStream.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,32 @@ namespace ZenLib
class BitStream
{
public:
BitStream () {Buffer=NULL;
Buffer_Size=Buffer_Size_Init=Buffer_Size_BeforeLastCall=0;
LastByte_Size=0;
BufferUnderRun=true;
BookMark=false;}
BitStream (const int8u* Buffer_, size_t Size_) {Buffer=Buffer_;
Buffer_Size=Buffer_Size_Init=Buffer_Size_BeforeLastCall=Size_*8; //Size is in bits
LastByte_Size=0;
BufferUnderRun=Buffer_Size?false:true;
BookMark=false;}
BitStream () { Buffer = NULL;
Buffer_Size = 0;
Buffer_Size_Init = 0;
Buffer_Size_BeforeLastCall = 0;
LastByte = 0;
LastByte_Size = 0;
BufferUnderRun = true;
BookMark = false;
Buffer_BookMark = 0;
Buffer_Size_BookMark = 0;
LastByte_BookMark = 0;
LastByte_Size_BookMark = 0;
BufferUnderRun_BookMark = false; }
BitStream (const int8u* Buffer_, size_t Size_) { Buffer = Buffer_;
Buffer_Size = Size_ * 8; //Size is in bits
Buffer_Size_Init = Size_ * 8; //Size is in bits
Buffer_Size_BeforeLastCall = Size_ * 8; //Size is in bits
LastByte = 0;
LastByte_Size = 0;
BufferUnderRun = (Buffer_Size ? false : true);
BookMark = false;
Buffer_BookMark = 0;
Buffer_Size_BookMark = 0;
LastByte_BookMark = 0;
LastByte_Size_BookMark = 0;
BufferUnderRun_BookMark = false; }
virtual ~BitStream () {};

virtual void Attach(const int8u* Buffer_, size_t Size_)
Expand Down Expand Up @@ -98,14 +114,17 @@ class BitStream
ToReturn |= ((size_t)*Buffer) << NewBits;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 2 : NewBits-=8;
ToReturn |= ((size_t)*Buffer) << NewBits;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 1 : NewBits-=8;
ToReturn |= ((size_t)*Buffer) << NewBits;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 0 :
LastByte=*Buffer;
Buffer++;
Expand Down Expand Up @@ -191,12 +210,15 @@ class BitStream
case 3 : NewBits-=8;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 2 : NewBits-=8;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 1 : NewBits-=8;
Buffer++;
Buffer_Size-=8;
[[fallthrough]];
case 0 :
LastByte=*Buffer;
Buffer++;
Expand Down
29 changes: 21 additions & 8 deletions Source/ZenLib/BitStream_Fast.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,16 @@ namespace ZenLib
class BitStream_Fast
{
public:
BitStream_Fast () {Buffer=NULL;
Buffer_Size=Buffer_Size_Init=0;
BufferUnderRun=false;}
BitStream_Fast (const int8u* Buffer_, size_t Size_) {Buffer=Buffer_;
Buffer_Size=Buffer_Size_Init=Size_*8; //Size is in bits
BufferUnderRun=false;}
BitStream_Fast () { Buffer = NULL;
Buffer_Size = 0;
Buffer_Size_Init = 0;
LastByte = 0;
BufferUnderRun = false; }
BitStream_Fast (const int8u* Buffer_, size_t Size_) { Buffer = Buffer_;
Buffer_Size = Size_ * 8; //Size is in bits
Buffer_Size_Init = Size_ * 8; //Size is in bits
LastByte = 0;
BufferUnderRun = false; }
~BitStream_Fast () {}

void Attach(const int8u* Buffer_, size_t Size_)
Expand Down Expand Up @@ -182,11 +186,12 @@ class BitStream_Fast
{
case 3 : NewBits-=8;
ToReturn|=*(Buffer++)<<NewBits;
[[fallthrough]];
case 2 : NewBits-=8;
ToReturn|=*(Buffer++)<<NewBits;
[[fallthrough]];
case 1 : NewBits-=8;
ToReturn|=*(Buffer++)<<NewBits;
default: ;
}
LastByte=*(Buffer++);
Buffer_Size-=HowMany;
Expand Down Expand Up @@ -358,13 +363,14 @@ class BitStream_Fast
case 3 : NewBits-=8;
ToReturn|=*Buffer<<NewBits;
Buffer++;
[[fallthrough]];
case 2 : NewBits-=8;
ToReturn|=*Buffer<<NewBits;
Buffer++;
[[fallthrough]];
case 1 : NewBits-=8;
ToReturn|=*Buffer<<NewBits;
Buffer++;
default: ;
}
ToReturn|=((*Buffer)>>((Buffer_Size-HowMany)%8))&Mask[NewBits];

Expand Down Expand Up @@ -403,6 +409,13 @@ class BitStream_Fast
return Buffer_Size%8;
}

inline void Resize(size_t Size_) //Size_ is the new count of remaining bits, must have the same alignment as Remain()
{
if (BufferUnderRun && Size_>Buffer_Size)
BufferUnderRun=false;
Buffer_Size=Size_;
}

private :
const int8u* Buffer;
size_t Buffer_Size;
Expand Down
17 changes: 15 additions & 2 deletions Source/ZenLib/BitStream_LE.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,19 @@ namespace ZenLib
class BitStream_LE : public BitStream
{
public:
BitStream_LE () :BitStream() {};
BitStream_LE (const int8u* Buffer_, size_t Size_) :BitStream(Buffer_, Size_) {};
BitStream_LE() : BitStream(),
endbyte(0),
endbit(0),
buffer(NULL),
ptr(NULL),
ptr_BeforeLastCall(NULL),
storage(0) {
};

BitStream_LE (const int8u* Buffer_, size_t Size_) : BitStream(Buffer_, Size_),
ptr_BeforeLastCall(NULL) {
Attach(Buffer_, Size_);
};

void Attach(const int8u* Buffer_, size_t Size_)
{
Expand Down Expand Up @@ -102,6 +113,8 @@ class BitStream_LE : public BitStream

void Byte_Align()
{
if (endbit)
Get(endbit);
};

size_t Offset_Get()
Expand Down
17 changes: 16 additions & 1 deletion Source/ZenLib/Conf.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,21 @@
#endif
#endif

//---------------------------------------------------------------------------
//Windows UWP
#if defined(WIN32) || defined(WIN64)
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP)
#ifndef WINDOWS_UWP
#define WINDOWS_UWP
#endif
#endif
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_GAMES)
#ifndef WINDOWS_GAMES
#define WINDOWS_GAMES
#endif
#endif
#endif

//---------------------------------------------------------------------------
//Unix (Linux, HP, Sun, BeOS...)
#if defined(UNIX) || defined(_UNIX) || defined(__UNIX__) \
Expand Down Expand Up @@ -193,7 +208,7 @@
//---------------------------------------------------------------------------
//(-1) is known to be the MAX of an unsigned int but GCC complains about it
#ifdef __cplusplus
#include <new> //for size_t
#include <cstddef> //for size_t
#else /* __cplusplus */
#include <stddef.h> //for size_t
#endif /* __cplusplus */
Expand Down
Loading