示例#1
0
文件: PeWriter.cs 项目: zvinch/roslyn
        // Remove this function when  https://github.com/dotnet/roslyn/issues/25185 is fixed
        private static void WriteByteToBlobBuilder(BlobBuilder blobBuilder, int offset, byte data)
        {
            BlobBuilder.Blobs blobs = blobBuilder.GetBlobs();
            int startOffsetOfBlob   = 0;

            foreach (Blob b in blobs)
            {
                ArraySegment <byte> bytesInBlob = b.GetBytes();
                int offsetInBlob = offset - startOffsetOfBlob;

                if (offsetInBlob < bytesInBlob.Count)
                {
                    ((IList <Byte>)bytesInBlob)[offsetInBlob] = data;
                    return;
                }

                startOffsetOfBlob += bytesInBlob.Count;
            }
        }
示例#2
0
文件: PeWriter.cs 项目: zvinch/roslyn
        // Remove this function when  https://github.com/dotnet/roslyn/issues/25185 is fixed
        private static byte ReadByteFromBlobBuilder(BlobBuilder blobBuilder, int offset)
        {
            BlobBuilder.Blobs blobs = blobBuilder.GetBlobs();
            int startOffsetOfBlob   = 0;

            foreach (Blob b in blobs)
            {
                ArraySegment <byte> bytesInBlob = b.GetBytes();
                int offsetInBlob = offset - startOffsetOfBlob;

                if (offsetInBlob < bytesInBlob.Count)
                {
                    return(((IList <Byte>)bytesInBlob)[offsetInBlob]);
                }

                startOffsetOfBlob += bytesInBlob.Count;
            }
            throw new IndexOutOfRangeException();
        }