2 instantiations of VirtualChar
Microsoft.CodeAnalysis.Workspaces (2)
218 references to VirtualChar
Microsoft.CodeAnalysis.CSharp.EditorFeatures2.UnitTests (1)
Microsoft.CodeAnalysis.CSharp.Features (23)
Microsoft.CodeAnalysis.CSharp.Workspaces (10)
Microsoft.CodeAnalysis.CSharp.Workspaces.UnitTests (5)
Microsoft.CodeAnalysis.EditorFeatures.UnitTests (2)
Microsoft.CodeAnalysis.ExternalAccess.AspNetCore (11)
Microsoft.CodeAnalysis.Features (84)
EmbeddedLanguages\RegularExpressions\LanguageServices\RegexBraceMatcher.cs (12)
62var ch = virtualChar.Value;
76private static BraceMatchingResult? FindCommentBraces(RegexTree tree, VirtualChar ch)
82var firstChar = trivia.Value.VirtualChars[0];
83var lastChar = trivia.Value.VirtualChars[^1];
89private static BraceMatchingResult? FindGroupingBraces(RegexTree tree, VirtualChar ch)
95private static BraceMatchingResult? FindCharacterClassBraces(RegexTree tree, VirtualChar ch)
101private static RegexGroupingNode? FindGroupingNode(RegexNode node, VirtualChar ch)
105private static RegexBaseCharacterClassNode? FindCharacterClassNode(RegexNode node, VirtualChar ch)
109private static TNode? FindNode<TNode>(RegexNode node, VirtualChar ch, Func<TNode, VirtualChar, bool> predicate)
128private static RegexTrivia? FindTrivia(RegexNode node, VirtualChar ch)
152private static RegexTrivia? TryGetTrivia(ImmutableArray<RegexTrivia> triviaList, VirtualChar ch)
EmbeddedLanguages\RegularExpressions\RegexHelpers.cs (11)
40public static VirtualChar MapEscapeChar(VirtualChar ch)
43'a' => VirtualChar.Create(new Rune('\u0007'), ch.Span), // bell
44'b' => VirtualChar.Create(new Rune('\b'), ch.Span), // backspace
45'e' => VirtualChar.Create(new Rune('\u001B'), ch.Span), // escape
46'f' => VirtualChar.Create(new Rune('\f'), ch.Span), // form feed
47'n' => VirtualChar.Create(new Rune('\n'), ch.Span), // new line
48'r' => VirtualChar.Create(new Rune('\r'), ch.Span), // carriage return
49't' => VirtualChar.Create(new Rune('\t'), ch.Span), // tab
50'v' => VirtualChar.Create(new Rune('\u000B'), ch.Span), // vertical tab
58var ch = node.TypeToken.VirtualChars[0];
Microsoft.CodeAnalysis.Workspaces (82)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\EmbeddedLanguages\VirtualChars\AbstractVirtualCharService.cs (15)
16public abstract bool TryGetEscapeCharacter(VirtualChar ch, out char escapedChar);
84var currentVC = result[0];
97var nextVC = result[i];
106var nextVC = result[i];
112var lastVC = result.Last();
160var result = ImmutableSegmentedList.CreateBuilder<VirtualChar>();
167result.Add(VirtualChar.Create(new Rune('"'), new TextSpan(offset + index, 2)));
176result.Add(VirtualChar.Create(new Rune(tokenText[index]), span));
191protected static int ConvertTextAtIndexToRune(string tokenText, int index, ImmutableSegmentedList<VirtualChar>.Builder result, int offset)
194protected static int ConvertTextAtIndexToRune(SourceText tokenText, int index, ImmutableSegmentedList<VirtualChar>.Builder result, int offset)
198T tokenText, int index, TTextInfo info, ImmutableSegmentedList<VirtualChar>.Builder result, int offset)
206result.Add(VirtualChar.Create(rune, new TextSpan(offset + index, 1)));
213result.Add(VirtualChar.Create(rune, new TextSpan(offset + index, 2)));
220result.Add(VirtualChar.Create(ch, new TextSpan(offset + index, 1)));
231ImmutableSegmentedList<VirtualChar>.Builder result)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\EmbeddedLanguages\VirtualChars\VirtualChar.cs (24)
12/// <see cref="VirtualChar"/> provides a uniform view of a language's string token characters regardless if they
16/// (<c>\</c> and <c>t</c>). <see cref="VirtualChar"/> will represent both, providing the raw <see cref="char"/>
26internal readonly record struct VirtualChar : IComparable<VirtualChar>, IComparable<char>
29/// The value of this <see cref="VirtualChar"/> as a <see cref="Rune"/> if such a representation is possible.
45/// cref="VirtualChar"/>.
50/// Creates a new <see cref="VirtualChar"/> from the provided <paramref name="rune"/>. This operation cannot
53public static VirtualChar Create(Rune rune, TextSpan span)
57/// Creates a new <see cref="VirtualChar"/> from an unpaired high or low surrogate character. This will throw
61public static VirtualChar Create(char surrogateChar, TextSpan span)
106public static bool operator ==(VirtualChar ch1, char ch2)
109public static bool operator !=(VirtualChar ch1, char ch2)
140public int CompareTo(VirtualChar other)
143public static bool operator <(VirtualChar ch1, VirtualChar ch2)
146public static bool operator <=(VirtualChar ch1, VirtualChar ch2)
149public static bool operator >(VirtualChar ch1, VirtualChar ch2)
152public static bool operator >=(VirtualChar ch1, VirtualChar ch2)
158public static bool operator <(VirtualChar ch1, char ch2)
161public static bool operator <=(VirtualChar ch1, char ch2)
164public static bool operator >(VirtualChar ch1, char ch2)
167public static bool operator >=(VirtualChar ch1, char ch2)