forked from aspnet/AspNetWebStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGeneratedCodeMapping.cs
More file actions
102 lines (91 loc) · 4.01 KB
/
GeneratedCodeMapping.cs
File metadata and controls
102 lines (91 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Globalization;
using Microsoft.Internal.Web.Utils;
namespace System.Web.Razor.Generator
{
public struct GeneratedCodeMapping
{
public GeneratedCodeMapping(int startLine, int startColumn, int startGeneratedColumn, int codeLength)
: this(null, startLine, startColumn, startGeneratedColumn, codeLength)
{
}
public GeneratedCodeMapping(int startOffset, int startLine, int startColumn, int startGeneratedColumn, int codeLength)
: this((int?)startOffset, startLine, startColumn, startGeneratedColumn, codeLength)
{
}
private GeneratedCodeMapping(int? startOffset, int startLine, int startColumn, int startGeneratedColumn, int codeLength)
: this()
{
if (startLine < 0)
{
throw new ArgumentOutOfRangeException("startLine", String.Format(CultureInfo.CurrentCulture, CommonResources.Argument_Must_Be_GreaterThanOrEqualTo, "startLine", "0"));
}
if (startColumn < 0)
{
throw new ArgumentOutOfRangeException("startColumn", String.Format(CultureInfo.CurrentCulture, CommonResources.Argument_Must_Be_GreaterThanOrEqualTo, "startColumn", "0"));
}
if (startGeneratedColumn < 0)
{
throw new ArgumentOutOfRangeException("startGeneratedColumn", String.Format(CultureInfo.CurrentCulture, CommonResources.Argument_Must_Be_GreaterThanOrEqualTo, "startGeneratedColumn", "0"));
}
if (codeLength < 0)
{
throw new ArgumentOutOfRangeException("codeLength", String.Format(CultureInfo.CurrentCulture, CommonResources.Argument_Must_Be_GreaterThanOrEqualTo, "codeLength", "0"));
}
StartOffset = startOffset;
StartLine = startLine;
StartColumn = startColumn;
StartGeneratedColumn = startGeneratedColumn;
CodeLength = codeLength;
}
public int? StartOffset { get; set; }
public int CodeLength { get; set; }
public int StartColumn { get; set; }
public int StartGeneratedColumn { get; set; }
public int StartLine { get; set; }
public override bool Equals(object obj)
{
if (!(obj is GeneratedCodeMapping))
{
return false;
}
GeneratedCodeMapping other = (GeneratedCodeMapping)obj;
return CodeLength == other.CodeLength &&
StartColumn == other.StartColumn &&
StartGeneratedColumn == other.StartGeneratedColumn &&
StartLine == other.StartLine &&
// Null means it matches the other no matter what.
(StartOffset == null || other.StartOffset == null || StartOffset.Equals(other.StartOffset));
}
public override string ToString()
{
return String.Format(
CultureInfo.CurrentCulture,
"({0}, {1}, {2}) -> (?, {3}) [{4}]",
StartOffset == null ? "?" : StartOffset.Value.ToString(CultureInfo.CurrentCulture),
StartLine,
StartColumn,
StartGeneratedColumn,
CodeLength);
}
public override int GetHashCode()
{
return HashCodeCombiner.Start()
.Add(CodeLength)
.Add(StartColumn)
.Add(StartGeneratedColumn)
.Add(StartLine)
.Add(StartOffset)
.CombinedHash;
}
public static bool operator ==(GeneratedCodeMapping left, GeneratedCodeMapping right)
{
return left.Equals(right);
}
public static bool operator !=(GeneratedCodeMapping left, GeneratedCodeMapping right)
{
return !left.Equals(right);
}
}
}