**** Merged from MCS ****
[mono-project.git] / mcs / ilasm / scanner / Location.cs
blobd0933360817d591487c7c964a545e3ea719aea18
1 // Location.cs
2 // Author: Sergey Chaban (serge@wildwestsoftware.com)
4 using System;
6 namespace Mono.ILASM {
9 /// <summary>
10 /// </summary>
11 public class Location : ICloneable {
12 internal int line;
13 internal int column;
16 /// <summary>
17 /// </summary>
18 public static readonly Location Unknown = new Location (-1, -1);
20 /// <summary>
21 /// </summary>
22 public Location () {
23 line = 1;
24 column = 1;
27 /// <summary>
28 /// </summary>
29 /// <param name="line"></param>
30 /// <param name="column"></param>
31 public Location (int line, int column)
33 this.line = line;
34 this.column = column;
38 /// <summary>
39 /// </summary>
40 /// <param name="that"></param>
41 public Location (Location that)
43 this.line = that.line;
44 this.column = that.column;
50 /// <summary>
51 /// </summary>
52 public void NewLine ()
54 ++line;
55 column = 1;
59 /// <summary>
60 /// </summary>
61 public void PreviousLine ()
63 --line;
64 column = 1;
67 /// <summary>
68 /// </summary>
69 public void NextColumn ()
71 ++column;
74 /// <summary>
75 /// </summary>
76 public void PreviousColumn ()
78 --column;
81 /// <summary>
82 /// </summary>
83 /// <param name="other"></param>
84 public void CopyFrom (Location other)
86 this.line = other.line;
87 this.column = other.column;
91 /// <summary>
92 /// </summary>
93 /// <returns></returns>
94 public virtual object Clone () {
95 return new Location (this);
98 public override string ToString ()
100 return "line (" + line + ") column (" + column + ")";