-namespace Mono.CSharp {
- /// <summary>
- /// This is one single source file.
- /// </summary>
- /// <remarks>
- /// This is intentionally a class and not a struct since we need
- /// to pass this by reference.
- /// </remarks>
- public class SourceFile : ISourceFile {
+namespace Mono.CSharp
+{
+ //
+ // This is one single source file.
+ //
+ public class SourceFile : IEquatable<SourceFile>
+ {
+ //
+ // Used by #line directive to track hidden sequence point
+ // regions
+ //
+ struct LocationRegion : IComparable<LocationRegion>
+ {
+ public readonly Location Start;
+ public readonly Location End;
+
+ public LocationRegion (Location start, Location end)
+ {
+ this.Start = start;
+ this.End = end;
+ }
+
+ public int CompareTo (LocationRegion other)
+ {
+ if (Start.Row == other.Start.Row)
+ return Start.Column.CompareTo (other.Start.Column);
+
+ return Start.Row.CompareTo (other.Start.Row);
+ }
+
+ public override string ToString ()
+ {
+ return Start.ToString () + " - " + End.ToString ();
+ }
+ }
+
+ static readonly byte[] MD5Algorith = { 96, 166, 110, 64, 207, 100, 130, 76, 182, 240, 66, 212, 129, 114, 167, 153 };
+