/// <summary> /// Initializes a new instance of <see cref="GreenPgnPlySyntax"/>. /// </summary> /// <param name="moveNumber"> /// The move number. This is an optional parameter. /// </param> /// <param name="move"> /// The move. This is an optional parameter. /// </param> /// <param name="nags"> /// The NAG (Numeric Annotation Glyph) nodes. /// </param> /// <param name="variations"> /// The variation nodes. /// </param> /// <exception cref="ArgumentNullException"> /// <paramref name="nags"/> and/or <paramref name="variations"/> is null. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="moveNumber"/> is null, <paramref name="move"/> is null, and both <paramref name="nags"/> and <paramref name="variations"/> are empty. /// </exception> public GreenPgnPlySyntax( GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> moveNumber, GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> move, IEnumerable <GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> > nags, IEnumerable <GreenWithPlyFloatItemsSyntax <GreenPgnVariationSyntax> > variations) { if (nags == null) { throw new ArgumentNullException(nameof(nags)); } if (variations == null) { throw new ArgumentNullException(nameof(variations)); } MoveNumber = moveNumber; Move = move; Nags = ReadOnlySpanList <GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> > .Create(nags); Variations = ReadOnlySpanList <GreenWithPlyFloatItemsSyntax <GreenPgnVariationSyntax> > .Create(variations); int length = Nags.Length + Variations.Length; if (moveNumber != null) { length += moveNumber.Length; } if (move != null) { length += move.Length; } if (length == 0) { throw new ArgumentException($"{nameof(GreenPgnPlySyntax)} cannot be empty."); } Length = length; }
internal PgnVariationWithFloatItemsSyntax(PgnPlySyntax parent, int parentIndex, GreenWithPlyFloatItemsSyntax <GreenPgnVariationSyntax> green) : base(parent, green) { ParentIndex = parentIndex; }
internal PgnNagWithFloatItemsSyntax(PgnPlySyntax parent, int parentIndex, GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> green) : base(parent, green) { ParentIndex = parentIndex; }
internal PgnMoveWithFloatItemsSyntax(PgnPlySyntax parent, GreenWithPlyFloatItemsSyntax <GreenWithTriviaSyntax> green) : base(parent, green) { }