You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -0,0 +1,74 @@
|
||||
// <copyright>
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
|
||||
namespace System.Activities.Debugger
|
||||
{
|
||||
using System.Diagnostics;
|
||||
|
||||
// Immutable, lineNumber and linePosition always non-null.
|
||||
[DebuggerDisplay("({LineNumber.Value}:{LinePosition.Value})")]
|
||||
internal class DocumentLocation : IEquatable<DocumentLocation>, IComparable<DocumentLocation>
|
||||
{
|
||||
private OneBasedCounter lineNumber;
|
||||
private OneBasedCounter linePosition;
|
||||
|
||||
internal DocumentLocation(OneBasedCounter lineNumber, OneBasedCounter linePosition)
|
||||
{
|
||||
UnitTestUtility.Assert(lineNumber != null, "lineNumber should not be null.");
|
||||
UnitTestUtility.Assert(linePosition != null, "linePosition should not be null.");
|
||||
this.lineNumber = lineNumber;
|
||||
this.linePosition = linePosition;
|
||||
}
|
||||
|
||||
internal DocumentLocation(int lineNumber, int linePosition)
|
||||
: this(new OneBasedCounter(lineNumber), new OneBasedCounter(linePosition))
|
||||
{
|
||||
}
|
||||
|
||||
internal OneBasedCounter LineNumber
|
||||
{
|
||||
get { return this.lineNumber; }
|
||||
}
|
||||
|
||||
internal OneBasedCounter LinePosition
|
||||
{
|
||||
get { return this.linePosition; }
|
||||
}
|
||||
|
||||
public bool Equals(DocumentLocation that)
|
||||
{
|
||||
if (that == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (this.lineNumber.Value == that.lineNumber.Value) && (this.linePosition.Value == that.linePosition.Value);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.lineNumber.Value.GetHashCode() ^ this.linePosition.Value.GetHashCode();
|
||||
}
|
||||
|
||||
public int CompareTo(DocumentLocation that)
|
||||
{
|
||||
if (that == null)
|
||||
{
|
||||
// Following the convention we have in System.Int32 that anything is considered bigger than null.
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (this.lineNumber.Value == that.lineNumber.Value)
|
||||
{
|
||||
// The subtraction of two numbers >= 1 must not underflow integer.
|
||||
return this.linePosition.Value - that.linePosition.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
// The subtraction of two numbers >= 1 must not underflow integer.
|
||||
return this.lineNumber.Value - that.lineNumber.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user