File: NewLineNode.cs

package info (click to toggle)
nrefactory 5.3.0%2B20130718.73b6d0f-4.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 15,720 kB
  • sloc: cs: 296,018; makefile: 24; ansic: 7; sh: 2
file content (132 lines) | stat: -rw-r--r-- 2,433 bytes parent folder | download | duplicates (4)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
namespace ICSharpCode.NRefactory.CSharp
{

	/// <summary>
	/// A New line node represents a line break in the text.
	/// </summary>
	public abstract class NewLineNode : AstNode
	{
		public override NodeType NodeType {
			get {
				return NodeType.Whitespace;
			}
		}

		public abstract UnicodeNewline NewLineType {
			get;
		}

		TextLocation startLocation;
		public override TextLocation StartLocation {
			get { 
				return startLocation;
			}
		}
		
		public override TextLocation EndLocation {
			get {
				return new TextLocation (startLocation.Line + 1, 1);
			}
		}

		public NewLineNode() : this (TextLocation.Empty)
		{
		}

		public NewLineNode(TextLocation startLocation)
		{
			this.startLocation = startLocation;
		}

		public sealed override string ToString(CSharpFormattingOptions formattingOptions)
		{
			return NewLine.GetString (NewLineType);
		}

		public override void AcceptVisitor(IAstVisitor visitor)
		{
			visitor.VisitNewLine (this);
		}
			
		public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
		{
			return visitor.VisitNewLine (this);
		}
		
		public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
		{
			return visitor.VisitNewLine (this, data);
		}
	}

	class UnixNewLine : NewLineNode
	{
		public override UnicodeNewline NewLineType {
			get {
				return UnicodeNewline.LF;
			}
		}

		public UnixNewLine()
		{
		}

		public UnixNewLine(TextLocation startLocation) : base (startLocation)
		{
		}

		protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
		{
			var o = other as UnixNewLine;
			return o != null;
		}
	}

	class WindowsNewLine : NewLineNode
	{
		public override UnicodeNewline NewLineType {
			get {
				return UnicodeNewline.CRLF;
			}
		}

		public WindowsNewLine()
		{
		}

		public WindowsNewLine(TextLocation startLocation) : base (startLocation)
		{
		}

		protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
		{
			var o = other as WindowsNewLine;
			return o != null;
		}
	}

	class MacNewLine : NewLineNode
	{
		public override UnicodeNewline NewLineType {
			get {
				return UnicodeNewline.CR;
			}
		}

		public MacNewLine()
		{
		}

		public MacNewLine(TextLocation startLocation) : base (startLocation)
		{
		}

		protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
		{
			var o = other as MacNewLine;
			return o != null;
		}
	}
}