public void UpdateWith(IncrementalMethodBodyInfo imbi) { CurrentData = imbi; var xslt = new XslCompiledTransform(); using (var sr = new StringReader(Resources.XSLT)) { using (var xtr = new XmlTextReader(sr)) { xslt.Load(xtr); } } var serializer = new XmlSerializer(typeof(IncrementalMethodBodyInfo)); using (var beforeTransform = new MemoryStream()) { var afterTransform = new MemoryStream(); serializer.Serialize(beforeTransform, CurrentData); beforeTransform.Position = 0; using (var reader = new XmlTextReader(beforeTransform)) { xslt.Transform(reader, null, afterTransform); } afterTransform.Position = 0; webBrowser.DocumentStream = afterTransform; } }
public static IncrementalMethodBodyInfo Create(MethodBodyInfo mbi, IEnumerable <int> history = null) { var imbi = new IncrementalMethodBodyInfo { Identity = mbi.Identity, TypeName = mbi.TypeName, MethodToString = mbi.MethodToString, Instructions = mbi.Instructions.Select(i => new AgingInstruction { ILString = i }).ToArray(), LengthHistory = new List <int>(history ?? Enumerable.Empty <int>()) { mbi.Instructions.Count } }; for (var i = 0; i < imbi.LengthHistory.Count - 1; i++) { for (var a = imbi.LengthHistory[i]; a < imbi.LengthHistory[i + 1]; a++) { imbi.Instructions[a].Age = i + 1; } } return(imbi); }
private void OnVisualizerDataReady(object sender, VisualizerDataEventArgs <MethodBodyInfo> e) { var mbi = e.VisualizerData; var childForm = FindOrCreateChildForm(mbi); var imbi = childForm.CurrentData != null ? IncrementalMethodBodyInfo.Create(mbi, childForm.CurrentData.LengthHistory) : IncrementalMethodBodyInfo.Create(mbi); childForm.UpdateWith(imbi); }