private int _getWithI32Buffer(int bnum, bool get_then_del_in_buf = true)
{
#if BIT_READER_THREAD_SAFE
lock (this)
#endif
{
while (bnum > bits_num)
{
if (moreByte()) break;
}
if (bnum <= bits_num)
{
int to_out = 0;
if (type == MaiBitReaderTypeHigh)
{
to_out = (buffer >> (bits_num - bnum)) & ((1 << bnum) - 1);
}
else if (type == MaiBitReaderTypeLow)
{
to_out = buffer & ((1 << bnum) - 1);
}
if (get_then_del_in_buf)
{
bits_num -= bnum;
if (type == MaiBitReaderTypeHigh)
{
buffer = buffer & ((1 << bits_num) - 1);
}
else if (type == MaiBitReaderTypeLow)
{
buffer = (buffer >> bnum) & ((1 << bits_num) - 1);
}
}
return to_out;
}
else
{
return 0;
}
}
}