//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.Activities.Debugger.Symbol { using System.Globalization; using System.IO; using System.Runtime; // Represent the debug symbol for an Activity. // It defines the start/end of Activity in the Xaml file. public class ActivitySymbol { public int StartLine { get; internal set; } public int StartColumn { get; internal set; } public int EndLine { get; internal set; } public int EndColumn { get; internal set; } // Internal representation of QualifiedId. internal byte[] QualifiedId { get; set; } string id; // Publicly available Id. public string Id { get { if (this.id == null) { if (this.QualifiedId != null) { this.id = new QualifiedId(this.QualifiedId).ToString(); } else { this.id = string.Empty; } } return this.id; } } // Binary serializer. internal void Write(BinaryWriter writer) { SymbolHelper.WriteEncodedInt32(writer, this.StartLine); SymbolHelper.WriteEncodedInt32(writer, this.StartColumn); SymbolHelper.WriteEncodedInt32(writer, this.EndLine); SymbolHelper.WriteEncodedInt32(writer, this.EndColumn); if (this.QualifiedId != null) { SymbolHelper.WriteEncodedInt32(writer, this.QualifiedId.Length); writer.Write(this.QualifiedId, 0, this.QualifiedId.Length); } else { SymbolHelper.WriteEncodedInt32(writer, 0); } } // Binary deserializer. internal ActivitySymbol(BinaryReader reader) { this.StartLine = SymbolHelper.ReadEncodedInt32(reader); this.StartColumn = SymbolHelper.ReadEncodedInt32(reader); this.EndLine = SymbolHelper.ReadEncodedInt32(reader); this.EndColumn = SymbolHelper.ReadEncodedInt32(reader); int qidLength = SymbolHelper.ReadEncodedInt32(reader); if (qidLength > 0) { this.QualifiedId = reader.ReadBytes(qidLength); } } internal ActivitySymbol() { } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "{0},{1},{2},{3},{4}", this.Id, this.StartLine, this.StartColumn, this.EndLine, this.EndColumn); } } }