diff -r 000000000000 -r 6474c204b198 other-licenses/7zstub/src/7zip/Common/LSBFEncoder.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/other-licenses/7zstub/src/7zip/Common/LSBFEncoder.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,29 @@ +// LSBFEncoder.cpp + +#include "StdAfx.h" + +#include "LSBFEncoder.h" +#include "Common/Defs.h" + +namespace NStream { +namespace NLSBF { + +void CEncoder::WriteBits(UInt32 value, int numBits) +{ + while(numBits > 0) + { + if (numBits < m_BitPos) + { + m_CurByte |= (value & ((1 << numBits) - 1)) << (8 - m_BitPos); + m_BitPos -= numBits; + return; + } + numBits -= m_BitPos; + m_Stream.WriteByte((Byte)(m_CurByte | (value << (8 - m_BitPos)))); + value >>= m_BitPos; + m_BitPos = 8; + m_CurByte = 0; + } +} + +}}