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); } }
internal PgnPlySyntax(PgnPlyListSyntax parent, int parentIndex, GreenPgnPlySyntax green) { Parent = parent; ParentIndex = parentIndex; Green = green; int length = 0; if (green.MoveNumber != null) { lazyMoveNumberOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveNumberWithFloatItemsSyntax>(() => new PgnMoveNumberWithFloatItemsSyntax(this, Green.MoveNumber)); length += green.MoveNumber.Length; } else { lazyMoveNumberOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveNumberWithFloatItemsSyntax>(this, length); } if (green.Move != null) { lazyMoveOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveWithFloatItemsSyntax>(() => new PgnMoveWithFloatItemsSyntax(this, Green.Move)); length += green.Move.Length; } else { lazyMoveOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveWithFloatItemsSyntax>(this, length); } Nags = new SafeLazyObjectCollection <PgnNagWithFloatItemsSyntax>( green.Nags.Count, index => new PgnNagWithFloatItemsSyntax(this, index, Green.Nags[index])); Variations = new SafeLazyObjectCollection <PgnVariationWithFloatItemsSyntax>( green.Variations.Count, index => new PgnVariationWithFloatItemsSyntax(this, index, Green.Variations[index])); }