public override BlobToken NewChildCore(uint len) { BlobToken ret = new BlobToken(this); ret.Token = new MetadataToken(MetadataTokenType.Unknown, (uint)this.Stream.Data.Length); uint datLen = len; if (len < 0x80) { datLen += 1; } else if (len < 0x4000) { datLen += 2; } else { datLen += 4; } this.Stream.SetLength(this.Stream.Data.Length + datLen); MetadataWriter wtr = new MetadataWriter(this.Stream); this.Stream.Position = ret.Token.Index; wtr.WriteCompressedUInt(len); return(ret); }
public override void SetValue(USToken tkn, string val) { MetadataStream strs = this.Stream; strs.Position = tkn.Token.Index; MetadataReader rdr = new MetadataReader(strs); uint len = rdr.ReadCompressedUInt(); MetadataWriter wtr = new MetadataWriter(strs); byte[] b = Encoding.Unicode.GetBytes(val); if (len == b.Length) { strs.Position = tkn.Token.Index; wtr.WriteCompressedUInt(len); wtr.Write(b); } else { ResizeChild(tkn, (uint)b.Length); strs.Position = tkn.Token.Index; wtr.WriteCompressedInt(b.Length); wtr.Write(b); } }
public override void SetValue(BlobToken tkn, byte[] val) { MetadataStream strs = this.Stream; strs.Position = tkn.Token.Index; MetadataReader rdr = new MetadataReader(strs); uint len = rdr.ReadCompressedUInt(); MetadataWriter wtr = new MetadataWriter(strs); if (len == val.Length) { strs.Position = tkn.Token.Index; wtr.WriteCompressedUInt(len); wtr.Write(val); } else { ResizeChild(tkn, (uint)val.Length); strs.Position = tkn.Token.Index; wtr.WriteCompressedInt(val.Length); wtr.Write(val); } }