Esempio n. 1
0
        internal byte[] GetBytes(BlobHandle handle)
        {
            int offset = handle.GetHeapOffset();
            int bytesRead;
            int numberOfBytes = Block.PeekCompressedInteger(offset, out bytesRead);

            if (numberOfBytes == BlobReader.InvalidCompressedInteger)
            {
                return(ImmutableArray <byte> .Empty.UnderlyingArray);
            }

            return(Block.PeekBytes(offset + bytesRead, numberOfBytes));
        }
Esempio n. 2
0
        internal byte[] GetBytes(BlobHandle handle)
        {
            if (handle.IsVirtual)
            {
                // consider: if we returned an ImmutableArray we wouldn't need to copy
                return(GetVirtualBlobBytes(handle, unique: true));
            }

            int offset = handle.GetHeapOffset();
            int bytesRead;
            int numberOfBytes = Block.PeekCompressedInteger(offset, out bytesRead);

            if (numberOfBytes == BlobReader.InvalidCompressedInteger)
            {
                return(EmptyArray <byte> .Instance);
            }

            return(Block.PeekBytes(offset + bytesRead, numberOfBytes));
        }
Esempio n. 3
0
 /// <summary>
 /// Reads bytes starting at the current position.
 /// </summary>
 /// <param name="byteCount">The number of bytes to read.</param>
 /// <returns>The byte array.</returns>
 /// <exception cref="BadImageFormatException"><paramref name="byteCount"/> bytes not available.</exception>
 public byte[] ReadBytes(int byteCount)
 {
     byte[] bytes = _block.PeekBytes(this.Offset, byteCount);
     _currentPointer += byteCount;
     return(bytes);
 }