| File: Syntax\InternalSyntax\ChildSyntaxList.cs | Web Access |
| Project: src\roslyn\src\Compilers\Core\Portable\Microsoft.CodeAnalysis.csproj (Microsoft.CodeAnalysis) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. namespace Microsoft.CodeAnalysis.Syntax.InternalSyntax { internal partial struct ChildSyntaxList { private readonly GreenNode? _node; private int _count; internal ChildSyntaxList(GreenNode node) { _node = node; _count = -1; } public int Count { get { if (_count == -1) { _count = this.CountNodes(); } return _count; } } private int CountNodes() { int n = 0; var enumerator = this.GetEnumerator(); while (enumerator.MoveNext()) { n++; } return n; } // for debugging #pragma warning disable IDE0051 // Remove unused private members private GreenNode[] Nodes #pragma warning restore IDE0051 // Remove unused private members { get { var result = new GreenNode[this.Count]; var i = 0; foreach (var n in this) { result[i++] = n; } return result; } } public Enumerator GetEnumerator() { return new Enumerator(_node); } public Reversed Reverse() { return new Reversed(_node); } } }