// internal for testing internal static byte[] SerializeCustomDebugMetadata(ArrayBuilder <BlobBuilder> recordWriters) { if (recordWriters.Count == 0) { return(null); } var result = new byte[ sizeof(byte) + // version sizeof(byte) + // record count sizeof(ushort) + // padding recordWriters.Sum(w => w.Count) // records ]; var cmw = new BlobWriter(result); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte((byte)recordWriters.Count); // count cmw.WriteInt16(0); foreach (BlobBuilder recordWriter in recordWriters) { cmw.WriteBytes(recordWriter); } return(result); }
public static ImmutableArray <T> ToFlattenedImmutableArrayAndFree <T>(this ArrayBuilder <ArrayBuilder <T> > builders) { try { if (builders.Count == 0) { return(ImmutableArray <T> .Empty); } if (builders.Count == 1) { return(builders[0].ToImmutableAndFree()); } var result = ArrayBuilder <T> .GetInstance(builders.Sum(b => b.Count)); foreach (var builder in builders) { result.AddRange(builder); builder.Free(); } return(result.ToImmutableAndFree()); } finally { builders.Free(); } }
// internal for testing internal static byte[] SerializeCustomDebugMetadata(ArrayBuilder<BlobBuilder> recordWriters) { if (recordWriters.Count == 0) { return null; } var result = new byte[ sizeof(byte) + // version sizeof(byte) + // record count sizeof(ushort) + // padding recordWriters.Sum(w => w.Count) // records ]; var cmw = new BlobWriter(result); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte((byte)recordWriters.Count); // count cmw.WriteInt16(0); foreach (BlobBuilder recordWriter in recordWriters) { cmw.WriteBytes(recordWriter); } return result; }