/// <summary> /// Initializes a new instance of <see cref="RootPgnSyntax"/>. /// </summary> /// <param name="gameListSyntax"> /// The syntax tree containing a list of PGN games. /// </param> /// <param name="errors"> /// The collection of parse errors. /// </param> /// <exception cref="ArgumentNullException"> /// <paramref name="gameListSyntax"/> and/or <paramref name="errors"/> is null. /// </exception> public RootPgnSyntax(GreenPgnGameListSyntax gameListSyntax, List <PgnErrorInfo> errors) { if (gameListSyntax == null) { throw new ArgumentNullException(nameof(gameListSyntax)); } GameListSyntax = new PgnGameListSyntax(gameListSyntax); Errors = errors ?? throw new ArgumentNullException(nameof(errors)); }
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); } }