コード例 #1
0
 void Write(IList <CANamedArgument> namedArgs)
 {
     if (namedArgs == null || namedArgs.Count > 0x1FFFFFFF)
     {
         helper.Error("Too many custom attribute named arguments");
         namedArgs = Array2.Empty <CANamedArgument>();
     }
     writer.WriteCompressedUInt32((uint)namedArgs.Count);
     for (int i = 0; i < namedArgs.Count; i++)
     {
         Write(namedArgs[i]);
     }
 }
コード例 #2
0
ファイル: BlobHeap.cs プロジェクト: xul8tr/Reflexil
        /// <inheritdoc/>
        protected override void WriteToImpl(DataWriter writer)
        {
            if (originalData != null)
            {
                writer.WriteBytes(originalData);
            }
            else
            {
                writer.WriteByte(0);
            }

            uint offset = originalData != null ? (uint)originalData.Length : 1;

            foreach (var data in cached)
            {
                int rawLen = GetRawDataSize(data);
                if (userRawData != null && userRawData.TryGetValue(offset, out var rawData))
                {
                    if (rawData.Length != rawLen)
                    {
                        throw new InvalidOperationException("Invalid length of raw data");
                    }
                    writer.WriteBytes(rawData);
                }
                else
                {
                    writer.WriteCompressedUInt32((uint)data.Length);
                    writer.WriteBytes(data);
                }
                offset += (uint)rawLen;
            }
        }
コード例 #3
0
        void WriteString(DataWriter writer, string s)
        {
            writer.WriteCompressedUInt32((uint)s.Length * 2 + 1);
            byte last = 0;

            for (int i = 0; i < s.Length; i++)
            {
                ushort c = (ushort)s[i];
                writer.WriteUInt16(c);
                if (c > 0xFF || (1 <= c && c <= 8) || (0x0E <= c && c <= 0x1F) || c == 0x27 || c == 0x2D || c == 0x7F)
                {
                    last = 1;
                }
            }
            writer.WriteByte(last);
        }
コード例 #4
0
ファイル: BlobHeap.cs プロジェクト: xul8tr/Reflexil
        /// <inheritdoc/>
        public IEnumerable <KeyValuePair <uint, byte[]> > GetAllRawData()
        {
            var  memStream = new MemoryStream();
            var  writer    = new DataWriter(memStream);
            uint offset    = originalData != null ? (uint)originalData.Length : 1;

            foreach (var data in cached)
            {
                memStream.Position = 0;
                memStream.SetLength(0);
                writer.WriteCompressedUInt32((uint)data.Length);
                writer.WriteBytes(data);
                yield return(new KeyValuePair <uint, byte[]>(offset, memStream.ToArray()));

                offset += (uint)memStream.Length;
            }
        }
コード例 #5
0
ファイル: DeclSecurityWriter.cs プロジェクト: mrdellis/dnlib
 uint WriteCompressedUInt32(DataWriter writer, uint value) => writer.WriteCompressedUInt32(helper, value);