* MethodTable.cs: Add method to Check if all methods have been defined, set reference...
[mono.git] / mcs / ilasm / scanner / Location.cs
1 // Location.cs\r
2 // Author: Sergey Chaban (serge@wildwestsoftware.com)\r
3 \r
4 using System;\r
5 \r
6 namespace Mono.ILASM {\r
7 \r
8 \r
9         /// <summary>\r
10         /// </summary>\r
11         public class Location : ICloneable {\r
12                 internal int line;\r
13                 internal int column;\r
14 \r
15 \r
16                 /// <summary>\r
17                 /// </summary>\r
18                 public static readonly Location Unknown = new Location (-1, -1);\r
19 \r
20                 /// <summary>\r
21                 /// </summary>\r
22                 public Location () {\r
23                         line = 1;\r
24                         column = 1;\r
25                 }\r
26 \r
27                 /// <summary>\r
28                 /// </summary>\r
29                 /// <param name="line"></param>\r
30                 /// <param name="column"></param>\r
31                 public Location (int line, int column)\r
32                 {\r
33                         this.line = line;\r
34                         this.column = column;\r
35                 }\r
36 \r
37 \r
38                 /// <summary>\r
39                 /// </summary>\r
40                 /// <param name="that"></param>\r
41                 public Location (Location that)\r
42                 {\r
43                         this.line = that.line;\r
44                         this.column = that.column;\r
45                 }\r
46 \r
47 \r
48 \r
49 \r
50                 /// <summary>\r
51                 /// </summary>\r
52                 public void NewLine ()\r
53                 {\r
54                         ++line;\r
55                         column = 1;\r
56                 }\r
57 \r
58 \r
59                 /// <summary>\r
60                 /// </summary>\r
61                 public void PreviousLine ()\r
62                 {\r
63                         --line;\r
64                         column = 1;\r
65                 }\r
66 \r
67                 /// <summary>\r
68                 /// </summary>\r
69                 public void NextColumn ()\r
70                 {\r
71                         ++column;\r
72                 }\r
73 \r
74                 /// <summary>\r
75                 /// </summary>\r
76                 public void PreviousColumn ()\r
77                 {\r
78                         if (column == 1) {\r
79                                 PreviousLine ();\r
80                         } else {\r
81                                 --column;\r
82                         }\r
83                 }\r
84 \r
85                 /// <summary>\r
86                 /// </summary>\r
87                 /// <param name="other"></param>\r
88                 public void CopyFrom (Location other)\r
89                 {\r
90                         this.line = other.line;\r
91                         this.column = other.column;\r
92                 }\r
93 \r
94 \r
95                 /// <summary>\r
96                 /// </summary>\r
97                 /// <returns></returns>\r
98                 public virtual object Clone () {\r
99                         return new Location (this);\r
100                 }\r
101 \r
102         }\r
103 }\r