internal JsonValueWithBackgroundSyntax(JsonMultiValueSyntax parent, int parentValueNodeIndex) { Parent = parent; ParentValueNodeIndex = parentValueNodeIndex; Green = parent.Green.ValueNodes[parentValueNodeIndex]; backgroundBefore = new SafeLazyObject<JsonBackgroundListSyntax>(() => new JsonBackgroundListSyntax(this)); contentNode = new SafeLazyObject<JsonValueSyntax>(() => JsonValueSyntaxCreator.Instance.Visit(Green.ContentNode, this)); }
internal PgnGameListSyntax(GreenPgnGameListSyntax green) { Green = green; Games = new SafeLazyObjectCollection <PgnGameSyntax>( green.Games.Count, index => new PgnGameSyntax(this, index, Green.Games[index])); trailingTrivia = new SafeLazyObject <PgnTriviaSyntax>(() => new PgnTriviaSyntax(this, Green.TrailingTrivia)); }
internal PgnTriviaElementSyntax(PgnTriviaSyntax parent, int commentNodeIndex, GreenPgnTriviaElementSyntax green) { Parent = parent; CommentNodeIndex = commentNodeIndex; Green = green; backgroundBefore = new SafeLazyObject <PgnBackgroundListSyntax>(() => new PgnBackgroundListSyntax(this, Green.BackgroundBefore)); commentNode = new SafeLazyObject <PgnCommentSyntax>(() => new PgnCommentSyntax(this, Green.CommentNode)); }
internal PgnTriviaSyntax(Union <WithTriviaSyntax, PgnGameListSyntax> parent, GreenPgnTriviaSyntax green) { Parent = parent; Green = green; CommentNodes = new SafeLazyObjectCollection <PgnTriviaElementSyntax>( green.CommentNodes.Count, index => new PgnTriviaElementSyntax(this, index, Green.CommentNodes[index])); backgroundAfter = new SafeLazyObject <PgnBackgroundListSyntax>(() => new PgnBackgroundListSyntax(this, Green.BackgroundAfter)); }
internal PgnPlyListSyntax(Union <PgnGameSyntax, PgnVariationSyntax> parent, GreenPgnPlyListSyntax green) { Parent = parent; Green = green; Plies = new SafeLazyObjectCollection <PgnPlySyntax>( green.Plies.Count, index => new PgnPlySyntax(this, index, Green.Plies[index])); trailingFloatItems = new SafeLazyObject <PgnPlyFloatItemListSyntax>(() => new PgnPlyFloatItemListSyntax(this, Green.TrailingFloatItems)); }
private JsonMultiValueSyntax(Union <_void, JsonListSyntax, JsonKeyValueSyntax> parent, GreenJsonMultiValueSyntax green) { Parent = parent; Green = green; ValueNodes = new SafeLazyObjectCollection <JsonValueWithBackgroundSyntax>( green.ValueNodes.Count, index => new JsonValueWithBackgroundSyntax(this, index)); backgroundAfter = new SafeLazyObject <JsonBackgroundListSyntax>(() => new JsonBackgroundListSyntax(this)); }
internal PgnGameSyntax(PgnGameListSyntax parent, int parentIndex, GreenPgnGameSyntax green) { Parent = parent; ParentIndex = parentIndex; Green = green; tagSection = new SafeLazyObject <PgnTagSectionSyntax>(() => new PgnTagSectionSyntax(this, green.TagSection)); plyList = new SafeLazyObject <PgnPlyListSyntax>(() => new PgnPlyListSyntax(this, green.PlyList)); if (green.GameResult != null) { lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>( () => new PgnGameResultWithTriviaSyntax(this, Green.GameResult)); } else { lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>( this, green.TagSection.Length + green.PlyList.Length); } }
internal PgnVariationSyntax(PgnVariationWithFloatItemsSyntax parent, GreenPgnVariationSyntax green) { Parent = parent; Green = green; parenthesisOpen = new SafeLazyObject <PgnParenthesisOpenWithTriviaSyntax>( () => new PgnParenthesisOpenWithTriviaSyntax(this, Green.ParenthesisOpen)); pliesWithFloatItems = new SafeLazyObject <PgnPlyListSyntax>( () => new PgnPlyListSyntax(this, Green.PliesWithFloatItems)); if (green.ParenthesisClose != null) { lazyParenthesisCloseOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnParenthesisCloseWithTriviaSyntax>( () => new PgnParenthesisCloseWithTriviaSyntax(this, Green.ParenthesisClose)); } else { lazyParenthesisCloseOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnParenthesisCloseWithTriviaSyntax>( this, green.ParenthesisOpen.Length + green.PliesWithFloatItems.Length); } }
/// <summary> /// Initializes as empty. /// </summary> public SafeLazyChildSyntaxOrEmpty(PgnSyntax parent, int start) { lazyNodeIfNonEmpty = default; nodeIfEmpty = new PgnEmptySyntax(parent, start); }
/// <summary> /// Initializes as lazy child node. /// </summary> public SafeLazyChildSyntaxOrEmpty(Func <TChildSyntax> childConstructor) { lazyNodeIfNonEmpty = new SafeLazyObject <TChildSyntax>(childConstructor); nodeIfEmpty = null; }
internal WithPlyFloatItemsSyntax(ReadOnlySpanList <GreenWithTriviaSyntax> greenLeadingFloatItems) { leadingFloatItems = new SafeLazyObject <PgnPlyFloatItemListSyntax>(() => new PgnPlyFloatItemListSyntax(this, greenLeadingFloatItems)); }
internal WithTriviaSyntax(GreenPgnTriviaSyntax greenLeadingTrivia) { leadingTrivia = new SafeLazyObject <PgnTriviaSyntax>(() => new PgnTriviaSyntax(this, greenLeadingTrivia)); }