コード例 #1
0
        public override long ReadLong()
        {
            CheckAvaliable(SIZE_LONG);
            int  blockAvailable = _currentBlock.Available();
            long result;

            if (blockAvailable > SIZE_LONG)
            {
                result = _currentBlock.ReadLongLE();
            }
            else
            {
                DataInputBlock nextBlock = GetDataInputBlock(_current_offset + blockAvailable);
                if (blockAvailable == SIZE_LONG)
                {
                    result = _currentBlock.ReadLongLE();
                }
                else
                {
                    result = nextBlock.ReadLongLE(_currentBlock, blockAvailable);
                }
                _currentBlock = nextBlock;
            }
            _current_offset += SIZE_LONG;
            return(result);
        }