HooverChessUtils_PgnReader 0.9.0
Loading...
Searching...
No Matches
pgnscannertokens.h
Go to the documentation of this file.
1// Hoover Chess Utilities / PGN reader
2// Copyright (C) 2022-2025 Sami Kiminki
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <https://www.gnu.org/licenses/>.
16
17#ifndef HOOVER_CHESS_UTILS__PGN_READER__PGNSCANNERTOKENS_H_INCLUDED
18#define HOOVER_CHESS_UTILS__PGN_READER__PGNSCANNERTOKENS_H_INCLUDED
19
20#include "pgnreader-types.h"
21
23
24#include <cinttypes>
25#include <variant>
26
28{
29
32
148
149constexpr inline std::uint32_t pgnScannerTokenToMaskBit(PgnScannerToken token) noexcept
150{
151 return std::uint32_t { 1U << static_cast<unsigned>(token) };
152};
153
171
189
192{
194 std::uint32_t num;
195};
196
199{
203 std::uint8_t nag;
204};
205
212
215{
217 const char *errorMessage;
218};
219
233
235
236}
237
238#endif
Set of squares. Implemented using a bit-mask.
Definition chessboard-types-squareset.h:35
PgnResult
Game result.
Definition pgnreader-types.h:32
Piece
Named piece.
Definition chessboard-types.h:204
Square
Named square.
Definition chessboard-types.h:122
constexpr std::uint32_t pgnScannerTokenToMaskBit(PgnScannerToken token) noexcept
Definition pgnscannertokens.h:149
PgnScannerToken
PGN scanner token.
Definition pgnscannertokens.h:37
@ VARIATION_START
Variation start ('(')
Definition pgnscannertokens.h:57
@ VARIATION_END
Variation end ('(')
Definition pgnscannertokens.h:60
@ COMMENT_TEXT
Block comment text line OR single line comment.
Definition pgnscannertokens.h:127
@ TAG_START
PGN tag start ('[')
Definition pgnscannertokens.h:45
@ MOVENUM
Move number.
Definition pgnscannertokens.h:65
@ MOVE_PIECE_ROOK
Rook move.
Definition pgnscannertokens.h:100
@ ERROR
Tokenizer error.
Definition pgnscannertokens.h:146
@ COMMENT_NEWLINE
New line within a block comment.
Definition pgnscannertokens.h:130
@ MOVE_PIECE_KNIGHT
Knight move.
Definition pgnscannertokens.h:90
@ MOVE_PIECE_BISHOP
Bishop move.
Definition pgnscannertokens.h:95
@ MOVE_PAWN
Pawn advance (non-promoting)
Definition pgnscannertokens.h:70
@ TAG_KEY
PGN tag key.
Definition pgnscannertokens.h:48
@ MOVE_PAWN_PROMO
Pawn capture (promoting)
Definition pgnscannertokens.h:80
@ TAG_END
PGN tag end (']')
Definition pgnscannertokens.h:54
@ NAG
Numeric annotation glyph.
Definition pgnscannertokens.h:121
@ MOVE_SHORT_CASTLE
Short castling move.
Definition pgnscannertokens.h:113
@ MOVE_PAWN_CAPTURE
Pawn capture (non-promoting)
Definition pgnscannertokens.h:75
@ NONE
Null token (placeholder only)
Definition pgnscannertokens.h:39
@ COMMENT_END
Block comment end.
Definition pgnscannertokens.h:133
@ END_OF_FILE
End of file.
Definition pgnscannertokens.h:42
@ RESULT
PGN game result (terminator)
Definition pgnscannertokens.h:138
@ MOVE_PIECE_KING
King move.
Definition pgnscannertokens.h:110
@ TAG_VALUE
PGN tag value.
Definition pgnscannertokens.h:51
@ MOVE_LONG_CASTLE
Long castling move.
Definition pgnscannertokens.h:116
@ MOVE_PAWN_PROMO_CAPTURE
Pawn capture (promoting)
Definition pgnscannertokens.h:85
@ COMMENT_START
Block comment start.
Definition pgnscannertokens.h:124
@ MOVE_PIECE_QUEEN
Queen move.
Definition pgnscannertokens.h:105
Definition chessboard-types-squareset.h:30
Additional token info for error token.
Definition pgnscannertokens.h:215
const char * errorMessage
Error message provided by the scanner.
Definition pgnscannertokens.h:217
Additional token info for move number token.
Definition pgnscannertokens.h:192
std::uint32_t num
Move number.
Definition pgnscannertokens.h:194
Additional token info for numeric annotation glyph.
Definition pgnscannertokens.h:199
std::uint8_t nag
Glyph number.
Definition pgnscannertokens.h:203
Additional token info for pawn move.
Definition pgnscannertokens.h:156
Piece promoPiece
Promotion piece for PgnScannerToken::MOVE_PAWN_PROMO and PgnScannerToken::MOVE_PAWN_PROMO_CAPTURE.
Definition pgnscannertokens.h:169
Square dstSq
Destination square of the move.
Definition pgnscannertokens.h:166
SquareSet srcMask
Allowed source squares per the move specification.
Definition pgnscannertokens.h:163
Additional token info for piece move.
Definition pgnscannertokens.h:174
bool capture
Whether move is a capture move.
Definition pgnscannertokens.h:184
Square dstSq
Destination square of the move.
Definition pgnscannertokens.h:187
SquareSet srcMask
Allowed source squares per the move specification.
Definition pgnscannertokens.h:181
Additional token info for game result.
Definition pgnscannertokens.h:208
PgnResult result
Game result.
Definition pgnscannertokens.h:210
Union of all additional scanner information. The applicable union member depends the PGN scanner toke...
Definition pgnscannertokens.h:225
PgnScannerTokenInfo_MOVENUM moveNum
Definition pgnscannertokens.h:228
PgnScannerTokenInfo_PIECE_MOVE pieceMove
Definition pgnscannertokens.h:227
PgnScannerTokenInfo_RESULT result
Definition pgnscannertokens.h:230
PgnScannerTokenInfo_ERROR error
Definition pgnscannertokens.h:231
PgnScannerTokenInfo_NAG nag
Definition pgnscannertokens.h:229
PgnScannerTokenInfo_PAWN_MOVE pawnMove
Definition pgnscannertokens.h:226