48 std::uint64_t offset = 0;
49 std::uint32_t length = 0;
55 scid::core::ratingT whiteElo = 0;
56 scid::core::ratingT blackElo = 0;
57 scid::core::ratingTypeT whiteRatingType = 0;
58 scid::core::ratingTypeT blackRatingType = 0;
59 scid::core::dateT date = scid::core::ZERO_DATE;
60 scid::core::dateT eventDate = scid::core::ZERO_DATE;
61 scid::core::resultT result = scid::core::RESULT_None;
62 scid::core::uint variationCount = 0;
63 scid::core::uint commentCount = 0;
64 scid::core::uint nagCount = 0;
65 std::uint16_t halfMoveCount = 0;
66 matSigT finalMaterial = 0;
67 scid::core::byte storedLineCode = 0;
68 EcoCode ecoCode = ECO_CODE_NONE;
69 std::uint32_t flags = 0;
70 std::array<scid::core::byte, 9> homePawnData = {};
73 bool hasFlag(std::uint32_t mask)
const {
return (flags & mask) == mask; }
74 bool hasStartFlag()
const {
return hasFlag(1u << GAME_FLAG_START); }
75 bool hasPromotionsFlag()
const {
return hasFlag(1u << GAME_FLAG_PROMO); }
76 bool hasUnderPromoFlag()
const {
return hasFlag(1u << GAME_FLAG_UPROMO); }
77 bool hasDeleteFlag()
const {
return hasFlag(1u << GAME_FLAG_DELETE); }
78 bool hasComments()
const {
return commentCount > 0; }
79 bool hasVariations()
const {
return variationCount > 0; }
80 scid::core::uint year()
const {
return scid::core::date_GetYear(date); }
81 scid::core::uint month()
const {
return scid::core::date_GetMonth(date); }
82 scid::core::uint day()
const {
return scid::core::date_GetDay(date); }
83 scid::core::byte rating()
const;
84 scid::core::uint flagString(
char* dest,
const char* flags)
const;
88 std::optional<scid::core::dateT> date;
89 std::optional<idNumberT> event;
90 std::optional<idNumberT> round;
91 std::optional<scid::core::ratingT> whiteElo;
92 std::optional<scid::core::ratingT> blackElo;
93 std::optional<EcoCode> ecoCode;
96 return !date && !
event && !round && !whiteElo && !blackElo &&