3#include "scid/core/game_cursor.h"
4#include "scid/core/notation.h"
5#include "scid/core/pgn/traversal.h"
12namespace scid::core::gamepos {
18 std::vector<int> NAGs;
20 std::string lastMoveSAN;
41template <
typename TCont>
45 if (cursor.isAtVariationStart() && !cursor.isAtGameStart())
49 auto &gamepos = dest.back();
51 auto position = cursor.currentPosition();
53 position->PrintFEN(strBuf,
sizeof(strBuf));
55 gamepos.RAVdepth = cursor.variationDepth();
56 gamepos.RAVnum = cursor.variationIndex();
57 if (
auto move = cursor.previousMove()) {
58 for (
auto nag : move->metadata.nags)
59 gamepos.NAGs.push_back(scid::core::nagCode(nag));
60 gamepos.comment = move->metadata.comment;
61 }
else if (
auto variation = cursor.currentVariation()) {
62 gamepos.comment = variation->initialComment;
64 gamepos.comment = game.movetext().initialComment;
67 scid::core::notation::previousSan(game, cursor.location());
69 }
while (scid::core::pgn::nextLocation(cursor));
79 std::vector<GamePos> res;
80 collectPositions(game, res);
Definition game_cursor.h:13
Definition game_positions.h:14