Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / class / Mono.Debugger.Soft / Mono.Debugger.Soft / Location.cs
1 using System;
2
3 namespace Mono.Debugger.Soft
4 {
5         public class Location : Mirror
6         {
7                 MethodMirror method;
8                 //long native_addr;
9                 int il_offset;
10                 string source_file;
11                 int line_number;
12                 byte[] hash;
13                 int column_number;
14                 int end_line_number;
15                 int end_column_number;
16                 
17                 internal Location (VirtualMachine vm, MethodMirror method, long native_addr, int il_offset, string source_file, int line_number, int column_number, int end_line_number, int end_column_number, byte[] hash) : base (vm, 0) {
18                         this.method = method;
19                         //this.native_addr = native_addr;
20                         this.il_offset = il_offset;
21                         this.source_file = source_file;
22                         this.line_number = line_number;
23                         this.hash = hash;
24                         this.column_number = column_number;
25                         this.end_line_number = end_line_number;
26                         this.end_column_number = end_column_number;
27                 }
28
29                 public MethodMirror Method {
30                         get {
31                                 return method;
32                         }
33                 }
34
35                 public int ILOffset {
36                         get {
37                                 return il_offset;
38                         }
39                 }
40
41                 public string SourceFile {
42                         get {
43                                 return source_file;
44                         }
45             }
46
47                 public int LineNumber {
48                         get {
49                                 return line_number;
50                         }
51             }
52
53                 // Since protocol version 2.19, 0 in earlier protocol versions
54                 public int ColumnNumber {
55                         get {
56                                 return column_number;
57                         }
58             }
59
60                 // Since protocol version 2.32, -1 in earlier protocol versions, or if not available
61                 public int EndLineNumber {
62                         get {
63                                 return end_line_number;
64                         }
65             }
66
67                 // Since protocol version 2.32, -1 in earlier protocol versions, or if not available
68                 public int EndColumnNumber {
69                         get {
70                                 return end_column_number;
71                         }
72             }
73
74                 // MD5 hash of source file
75                 // Since protocol version 2.14, null in earlier protocol versions
76                 public byte[] SourceFileHash {
77                         get {
78                                 return hash;
79                         }
80                 }
81
82                 public override string ToString () {
83                         if (EndLineNumber != -1 && EndColumnNumber != -1)
84                                 return String.Format ("{0}+0x{1:x} at {2}:[{3}:{4}-{5}:{6}]", Method.FullName, ILOffset, SourceFile, LineNumber, ColumnNumber, EndLineNumber, EndColumnNumber);
85                         else
86                                 return String.Format ("{0}+0x{1:x} at {2}:{3}", Method.FullName, ILOffset, SourceFile, LineNumber);
87                 }
88     }
89 }