in csharp/src/BitStream.cs [458:489]
public static BIT_DStream_status ReloadDStream(BIT_DStream_t bitD)
{
if (bitD.bitsConsumed > (sizeOfBitContainer * 8)) /* overflow detected, like end of stream */
return BIT_DStream_status.BIT_DStream_overflow;
if (bitD.ptr >= bitD.limitPtr)
{
bitD.ptr -= bitD.bitsConsumed >> 3;
bitD.bitsConsumed &= 7;
bitD.bitContainer = MEM_readLEST(bitD.ptr);
return BIT_DStream_status.BIT_DStream_unfinished;
}
if (bitD.ptr == bitD.start)
{
if (bitD.bitsConsumed < sizeOfBitContainer * 8) return BIT_DStream_status.BIT_DStream_endOfBuffer;
return BIT_DStream_status.BIT_DStream_completed;
}
/* start < ptr < limitPtr */
{
U32 nbBytes = bitD.bitsConsumed >> 3;
BIT_DStream_status result = BIT_DStream_status.BIT_DStream_unfinished;
if (bitD.ptr - nbBytes < bitD.start)
{
nbBytes = (U32)(bitD.ptr - bitD.start); /* ptr > start */
result = BIT_DStream_status.BIT_DStream_endOfBuffer;
}
bitD.ptr -= nbBytes;
bitD.bitsConsumed -= nbBytes * 8;
bitD.bitContainer = MEM_readLEST(bitD.ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */
return result;
}
}