CSPspEmu.Hle.Formats.audio.At3.SUB.MaiBitReader._getWithI32Buffer C# (CSharp) Method

_getWithI32Buffer() private method

private _getWithI32Buffer ( int bnum, bool get_then_del_in_buf = true ) : int
bnum int
get_then_del_in_buf bool
return int
        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;
                }
            }
        }