1 /* 2 * backgammon.h 3 * 4 * by Gary Wong <gtw@gnu.org>, 1999, 2000, 2001, 2002. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of version 3 or later of the GNU General Public License as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * 19 * $Id: backgammon.h,v 1.462 2018/06/10 18:17:59 plm Exp $ 20 */ 21 22 #ifndef BACKGAMMON_H 23 #define BACKGAMMON_H 24 25 #include "common.h" 26 27 #include "output.h" 28 #include "analysis.h" 29 #include "eval.h" 30 #include "rollout.h" 31 32 #define STRINGIZEAUX(num) #num 33 #define STRINGIZE(num) STRINGIZEAUX(num) 34 35 #define MAX_CUBE ( 1 << 12 ) 36 #define MAX_NAME_LEN 32 37 #ifndef BUILD_DATE 38 #define BUILD_DATE_STR " " __DATE__ 39 #else 40 #define BUILD_DATE_STR STRINGIZE(BUILD_DATE) 41 #endif 42 43 #define VERSION_STRING "GNU Backgammon " VERSION " " BUILD_DATE_STR 44 #define GNUBG_CHARSET "UTF-8" 45 46 extern const char *intro_string; 47 typedef struct _command { 48 /* Command name (NULL indicates end of list) */ 49 const char *sz; 50 /* Command handler; NULL to use default subcommand handler */ 51 void (*pf) (char *); 52 /* Documentation; NULL for abbreviations */ 53 const char *szHelp; 54 const char *szUsage; 55 /* List of subcommands (NULL if none) */ 56 struct _command *pc; 57 } command; 58 59 typedef struct _procrecorddata { 60 /* Record handler */ 61 int (*pfProcessRecord) (struct _procrecorddata *); 62 void *pvUserData; 63 void *avInputData[8]; 64 void *avOutputData[8]; 65 } procrecorddata; 66 67 #define PROCREC_HINT_ARGIN_SHOWPROGRESS 0 68 #define PROCREC_HINT_ARGIN_MAXMOVES 1 69 #define PROCREC_HINT_ARGOUT_MATCHSTATE 0 70 #define PROCREC_HINT_ARGOUT_CUBEINFO 1 71 #define PROCREC_HINT_ARGOUT_MOVELIST 2 72 #define PROCREC_HINT_ARGOUT_MOVERECORD 3 73 #define PROCREC_HINT_ARGOUT_INDEX 4 74 75 76 typedef enum _playertype { 77 PLAYER_HUMAN, PLAYER_GNU, PLAYER_EXTERNAL 78 } playertype; 79 80 typedef struct _player { 81 /* For all player types: */ 82 char szName[MAX_NAME_LEN]; 83 playertype pt; 84 /* For PLAYER_GNU: */ 85 evalsetup esChequer; 86 evalsetup esCube; 87 movefilter aamf[MAX_FILTER_PLIES][MAX_FILTER_PLIES]; 88 /* For PLAYER_EXTERNAL: */ 89 int h; 90 char *szSocket; 91 } player; 92 93 typedef enum _movetype { 94 MOVE_GAMEINFO, 95 MOVE_NORMAL, 96 MOVE_DOUBLE, 97 MOVE_TAKE, 98 MOVE_DROP, 99 MOVE_RESIGN, 100 MOVE_SETBOARD, 101 MOVE_SETDICE, 102 MOVE_SETCUBEVAL, 103 MOVE_SETCUBEPOS 104 } movetype; 105 106 typedef struct _movegameinfo { 107 /* ordinal number of the game within a match */ 108 int i; 109 /* match length */ 110 int nMatch; 111 /* match score BEFORE the game */ 112 int anScore[2]; 113 /* the Crawford rule applies during this match */ 114 int fCrawford; 115 /* this is the Crawford game */ 116 int fCrawfordGame; 117 int fJacoby; 118 /* who won (-1 = unfinished) */ 119 int fWinner; 120 /* how many points were scored by the winner */ 121 int nPoints; 122 /* the game was ended by resignation */ 123 int fResigned; 124 /* how many automatic doubles were rolled */ 125 int nAutoDoubles; 126 /* Type of game */ 127 bgvariation bgv; 128 /* Cube used in game */ 129 int fCubeUse; 130 statcontext sc; 131 } xmovegameinfo; 132 133 typedef struct _cubedecisiondata { 134 float aarOutput[2][NUM_ROLLOUT_OUTPUTS]; 135 float aarStdDev[2][NUM_ROLLOUT_OUTPUTS]; 136 evalsetup esDouble; 137 CMark cmark; 138 } cubedecisiondata; 139 140 typedef struct _movenormal { 141 /* Move made. */ 142 int anMove[8]; 143 /* index into the movelist of the move that was made */ 144 unsigned int iMove; 145 skilltype stMove; 146 } xmovenormal; 147 148 typedef struct _moveresign { 149 int nResigned; 150 evalsetup esResign; 151 float arResign[NUM_ROLLOUT_OUTPUTS]; 152 skilltype stResign; 153 skilltype stAccept; 154 } xmoveresign; 155 156 typedef struct _movesetboard { 157 positionkey key; /* always stored as if player 0 was on roll */ 158 } xmovesetboard; 159 160 typedef struct _movesetcubeval { 161 int nCube; 162 } xmovesetcubeval; 163 164 typedef struct _movesetcubepos { 165 int fCubeOwner; 166 } xmovesetcubepos; 167 168 typedef struct _moverecord { 169 /* 170 * Common variables 171 */ 172 /* type of the move */ 173 movetype mt; 174 /* annotation */ 175 char *sz; 176 /* move record is for player */ 177 int fPlayer; 178 /* luck analysis (shared between MOVE_SETDICE and MOVE_NORMAL) */ 179 /* dice rolled */ 180 unsigned int anDice[2]; 181 /* classification of luck */ 182 lucktype lt; 183 /* magnitude of luck */ 184 float rLuck; /* ERR_VAL means unknown */ 185 /* move analysis (shared between MOVE_SETDICE and MOVE_NORMAL) */ 186 /* evaluation setup for move analysis */ 187 evalsetup esChequer; 188 /* evaluation of the moves */ 189 movelist ml; 190 /* cube analysis (shared between MOVE_NORMAL and MOVE_DOUBLE) */ 191 /* 0 in match play, even numbers are doubles, raccoons 192 * odd numbers are beavers, aardvarken, etc. */ 193 int nAnimals; 194 /* the evaluation and settings */ 195 cubedecisiondata *CubeDecPtr; 196 cubedecisiondata CubeDec; 197 /* skill for the cube decision */ 198 skilltype stCube; 199 /* "private" data */ 200 xmovegameinfo g; /* game information */ 201 xmovenormal n; /* chequerplay move */ 202 xmoveresign r; /* resignation */ 203 xmovesetboard sb; /* setting up board */ 204 xmovesetcubeval scv; /* setting cube */ 205 xmovesetcubepos scp; /* setting cube owner */ 206 } moverecord; 207 208 209 typedef struct _matchinfo { /* SGF match information */ 210 char *pchRating[2]; 211 char *pchEvent; 212 char *pchRound; 213 char *pchPlace; 214 char *pchAnnotator; 215 char *pchComment; /* malloc()ed, or NULL if unknown */ 216 unsigned int nYear; 217 unsigned int nMonth; 218 unsigned int nDay; /* 0 for nYear means date unknown */ 219 } matchinfo; 220 221 typedef struct _decisionData { 222 float aarOutput[2][NUM_ROLLOUT_OUTPUTS]; 223 float aarStdDev[2][NUM_ROLLOUT_OUTPUTS]; 224 rolloutstat aarsStatistics[2][2]; 225 float aarRates[2][2]; 226 cubeinfo *pci; 227 const evalcontext *pec; 228 evalsetup *pes; 229 ConstTanBoard pboard; 230 char *szOutput; 231 int n; 232 } decisionData; 233 234 typedef struct _moveData { 235 moverecord *pmr; 236 matchstate *pms; 237 const evalsetup *pesChequer; 238 evalsetup *pesCube; 239 movefilter(*aamf)[MAX_FILTER_PLIES]; 240 } moveData; 241 242 typedef struct _findData { 243 movelist *pml; 244 ConstTanBoard pboard; 245 positionkey *keyMove; 246 float rThr; 247 const cubeinfo *pci; 248 const evalcontext *pec; 249 int anDice[2]; 250 movefilter(*aamf)[MAX_FILTER_PLIES]; 251 } findData; 252 253 typedef struct _scoreData { 254 move *pm; 255 const cubeinfo *pci; 256 const evalcontext *pec; 257 } scoreData; 258 259 typedef void (*AsyncFun) (void *); 260 261 void asyncDumpDecision(decisionData * pdd); 262 void asyncFindBestMoves(findData * pfd); 263 void asyncFindMove(findData * pfd); 264 void asyncScoreMove(scoreData * psd); 265 void asyncEvalRoll(decisionData * pdd); 266 void asyncAnalyzeMove(moveData * pmd); 267 void asyncGammonRates(decisionData * pdd); 268 void asyncMoveDecisionE(decisionData * pdd); 269 void asyncCubeDecisionE(decisionData * pdd); 270 void asyncCubeDecision(decisionData * pdd); 271 int RunAsyncProcess(AsyncFun fun, void *data, const char *msg); 272 273 /* There is a global storedmoves struct to maintain the list of moves 274 * for "=n" notation (e.g. "hint", "rollout =1 =2 =4"). 275 * Anything that _writes_ stored moves ("hint", "show moves", "add move") 276 * should free the old dynamic move list first (sm.ml.amMoves), if it is 277 * non-NULL. 278 * Anything that _reads_ stored moves should check that the move is still 279 * valid (i.e. auchKey matches the current board and anDice matches the 280 * current dice). */ 281 282 /* 283 * Store cube analysis 284 * 285 */ 286 287 /* List of moverecords representing the current game. One of the elements in 288 * lMatch. 289 * Typically the last game in the match). 290 */ 291 extern listOLD *plGame; 292 293 /* Current move inside plGame (typically the most recently 294 * one played, but "previous" and "next" commands navigate back and forth). 295 */ 296 extern listOLD *plLastMove; 297 298 /* The current match. 299 * A list of games. Each game is a list of moverecords. 300 * Note that the first list element is empty. The first game is in 301 * lMatch.plNext->p. Same is true for games. 302 */ 303 extern listOLD lMatch; 304 305 extern int automaticTask; 306 307 extern char *aszCopying[]; 308 extern const char *aszGameResult[]; 309 extern const char *aszLuckType[]; 310 extern const char *aszLuckTypeAbbr[]; 311 extern const char *aszLuckTypeCommand[]; 312 extern const char *aszSkillType[]; 313 extern const char *aszSkillTypeAbbr[]; 314 extern const char *aszSkillTypeCommand[]; 315 extern char *aszWarranty[]; 316 extern char *default_export_folder; 317 extern char *default_import_folder; 318 extern char *default_sgf_folder; 319 extern char *log_file_name; 320 extern char *szCurrentFileName; 321 extern char *szCurrentFolder; 322 extern const char szDefaultPrompt[]; 323 extern char *szLang; 324 extern const char *szPrompt; 325 extern const char *szHomeDirectory; 326 extern evalcontext ecLuck; 327 extern evalsetup esAnalysisChequer; 328 extern evalsetup esAnalysisCube; 329 extern evalsetup esEvalChequer; 330 extern evalsetup esEvalCube; 331 extern int fEvalSameAsAnalysis; 332 extern evalsetup *GetEvalChequer(void); 333 extern evalsetup *GetEvalCube(void); 334 extern float arLuckLevel[N_LUCKS]; 335 extern float arSkillLevel[N_SKILLS]; 336 extern float rEvalsPerSec; 337 extern float rRatingOffset; 338 extern int fAnalyseCube; 339 extern int fAnalyseDice; 340 extern int fAnalyseMove; 341 extern int fAutoBearoff; 342 extern int fAutoCrawford; 343 extern int fAutoGame; 344 extern int fAutoMove; 345 extern int fAutoRoll; 346 extern int fCheat; 347 extern int fComputing; 348 extern int nConfirmDefault; 349 extern int fConfirmNew; 350 extern int fConfirmSave; 351 extern int nAutoSaveTime; 352 extern int fAutoSaveRollout; 353 extern int fAutoSaveAnalysis; 354 extern int fAutoSaveConfirmDelete; 355 extern int fCubeEqualChequer; 356 extern int fPlayersAreSame; 357 extern int fTruncEqualPlayer0; 358 extern int fCubeUse; 359 extern int fDisplay; 360 extern int fFullScreen; 361 extern int fGotoFirstGame; 362 extern int fInvertMET; 363 extern int fJacoby; 364 extern int fNextTurn; 365 extern int fOutputRawboard; 366 extern int fRecord; 367 extern int fShowProgress; 368 extern int fStyledGamelist; 369 extern int fTutor; 370 extern int fTutorChequer; 371 extern int fTutorCube; 372 extern int log_rollouts; 373 extern int nThreadPriority; 374 extern int nToolbarStyle; 375 extern int nTutorSkillCurrent; 376 #if defined(USE_BOARD3D) 377 extern int fSync; 378 extern int fResetSync; 379 #endif 380 extern matchinfo mi; 381 extern matchstate ms; 382 extern ConstTanBoard msBoard(void); 383 extern movefilter aamfAnalysis[MAX_FILTER_PLIES][MAX_FILTER_PLIES]; 384 extern movefilter aamfEval[MAX_FILTER_PLIES][MAX_FILTER_PLIES]; 385 typedef movefilter TmoveFilter[MAX_FILTER_PLIES][MAX_FILTER_PLIES]; 386 typedef const movefilter (*ConstTmoveFilter)[MAX_FILTER_PLIES]; 387 388 extern TmoveFilter *GetEvalMoveFilter(void); 389 extern player ap[2]; 390 extern char default_names[2][31]; 391 extern char player1aliases[256]; 392 extern rolloutcontext rcRollout; 393 extern skilltype TutorSkill; 394 extern statcontext scMatch; 395 extern unsigned int afCheatRoll[2]; 396 extern unsigned int cAutoDoubles; 397 extern unsigned int nBeavers; 398 extern unsigned int nDefaultLength; 399 extern rngcontext *rngctxRollout; 400 401 extern command acAnnotateMove[]; 402 extern command acSetAnalysisPlayer[]; 403 extern command acSetCheatPlayer[]; 404 extern command acSetEvalParam[]; 405 extern command acSetEvaluation[]; 406 extern command acSetExportParameters[]; 407 extern command acSetGeometryValues[]; 408 extern command acSetPlayer[]; 409 extern command acSetRNG[]; 410 extern command acSetRollout[]; 411 extern command acSetRolloutJsd[]; 412 extern command acSetRolloutLate[]; 413 extern command acSetRolloutLatePlayer[]; 414 extern command acSetRolloutLimit[]; 415 extern command acSetRolloutPlayer[]; 416 extern command acSetTruncation[]; 417 extern command acTop[]; 418 419 extern int fInteractive; 420 421 #if defined(_LIBINTL_H) && defined(__MINGW32__) 422 #warning "libintl.h already included expect warnings under mingw" 423 #endif 424 425 /* now we can include libintl.h */ 426 #include <glib/gi18n.h> 427 /* Like strncpy, except it does the right thing */ 428 extern char *strcpyn(char *szDest, const char *szSrc, int cch); 429 430 extern char *GetMatchCheckSum(void); 431 extern char *CheckCommand(char *sz, command * ac); 432 extern char *FormatMoveHint(char *sz, const matchstate * pms, movelist * pml, 433 int i, int fRankKnown, int fDetailProb, int fShowParameters); 434 extern char *FormatPrompt(void); 435 extern const char *GetBuildInfoString(void); 436 extern char *GetInput(char *szPrompt); 437 extern char *GetLuckAnalysis(const matchstate * pms, float rLuck); 438 extern const char *GetMoveString(moverecord * pmr, int *pPlayer, gboolean addSkillMarks); 439 extern double get_time(void); 440 extern char *NextToken(char **ppch); 441 extern char *NextTokenGeneral(char **ppch, const char *szTokens); 442 extern char *SetupLanguage(const char *newLangCode); 443 extern command *FindHelpCommand(command * pcBase, char *sz, char *pchCommand, char *pchUsage); 444 extern float ParseReal(char **ppch); 445 extern int AnalyzeMove(moverecord * pmr, matchstate * pms, 446 const listOLD * plGame, statcontext * psc, 447 const evalsetup * pesChequer, evalsetup * pesCube, 448 movefilter aamf[MAX_FILTER_PLIES][MAX_FILTER_PLIES], 449 const int afAnalysePlayers[2], float *doubleError); 450 extern void EvaluateRoll(float ar[NUM_ROLLOUT_OUTPUTS], int nDie1, int nDie2, const TanBoard anBoard, 451 const cubeinfo * pci, const evalcontext * pec); 452 extern int CompareNames(char *sz0, char *sz1); 453 extern int confirmOverwrite(const char *sz, const int f); 454 extern int EPC(const TanBoard anBoard, float *arEPC, float *arMu, 455 float *arSigma, int *pfSource, const int fOnlyBearoff); 456 extern int EvalCmp(const evalcontext *, const evalcontext *, const int); 457 extern int getFinalScore(int *anScore); 458 extern int GetInputYN(char *szPrompt); 459 extern int GiveAdvice(skilltype Skill); 460 extern int InternalCommandNext(int mark, int cmark, int n); 461 extern int NextTurn(int fPlayNext); 462 extern int ParseKeyValue(char **ppch, char *apch[2]); 463 extern int ParseNumber(char **ppch); 464 extern int ParsePlayer(char *sz); 465 extern int ParsePosition(TanBoard an, char **ppch, char *pchDesc); 466 extern int SetToggle(const char *szName, int *pf, char *sz, const char *szOn, const char *szOff); 467 extern moverecord *get_current_moverecord(int *pfHistory); 468 extern moverecord *LinkToDouble(moverecord * pmr); 469 #if defined(HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL) 470 extern moverecord *NewMoveRecord(void) __attribute__((returns_nonnull)); 471 #else 472 extern moverecord *NewMoveRecord(void); 473 #endif 474 extern void HandleInterrupt(int idSignal); 475 extern void AddGame(moverecord * pmr); 476 extern void AddMoveRecord(moverecord * pmr); 477 extern void ApplyMoveRecord(matchstate * pms, const listOLD * plGame, const moverecord * pmr); 478 extern void CalculateBoard(void); 479 extern void CancelCubeAction(void); 480 extern void ChangeGame(listOLD * plGameNew); 481 extern void UpdateGame(int fShowBoard); 482 extern void ClearMatch(void); 483 extern void ClearMoveRecord(void); 484 extern void DisectPath(const char *path, const char *extension, char **name, char **folder); 485 extern void FixMatchState(matchstate * pms, const moverecord * pmr); 486 extern void FreeMatch(void); 487 extern void GetMatchStateCubeInfo(cubeinfo * pci, const matchstate * pms); 488 extern void HandleCommand(char *sz, command * ac); 489 extern void InitBoard(TanBoard anBoard, const bgvariation bgv); 490 extern void PortableSignal(int nSignal, void (*p) (int), psighandler * pOld, int fRestart); 491 extern void PortableSignalRestore(int nSignal, psighandler * p); 492 extern void PrintCheatRoll(const int fPlayer, const int n); 493 extern void ProgressEnd(void); 494 extern void ProgressStart(const char *sz); 495 extern void ProgressStartValue(char *sz, int iMax); 496 extern void ProgressValueAdd(int iValue); 497 extern void ProgressValue(int iValue); 498 extern void PromptForExit(void); 499 extern void Prompt(void); 500 extern void ResetInterrupt(void); 501 extern void SaveRolloutSettings(FILE * pf, const char *sz, rolloutcontext * prc); 502 extern void setDefaultFileName(char *path); 503 extern void SetMatchDate(matchinfo * pmi); 504 extern void SetMatchID(const char *szMatchID); 505 extern void SetMatchInfo(char **ppch, const char *sz, char *szMessage); 506 extern void SetMoveRecord(moverecord *pmr); 507 extern void SetTurn(int i); 508 extern void show_8912(TanBoard anBoard, char *sz); 509 extern void show_bearoff(TanBoard an, char *sz); 510 extern void ShowBoard(void); 511 extern void show_keith(TanBoard an, char *sz); 512 extern void show_kleinman(TanBoard an, char *sz); 513 extern void show_isight(TanBoard an, char *sz); 514 extern void show_thorp(TanBoard an, char *sz); 515 extern void TextToClipboard(const char *sz); 516 extern void UpdateSettings(void); 517 extern void UpdateSetting(void *p); 518 extern void CommandAccept(char *); 519 extern void CommandAgree(char *); 520 extern void CommandAnalyseClearGame(char *); 521 extern void CommandAnalyseClearMatch(char *); 522 extern void CommandAnalyseClearMove(char *); 523 extern void CommandAnalyseGame(char *); 524 extern void CommandAnalyseMatch(char *); 525 extern void CommandAnalyseMove(char *); 526 extern void CommandAnalyseRolloutCube(char *); 527 extern void CommandAnalyseRolloutGame(char *); 528 extern void CommandAnalyseRolloutMatch(char *); 529 extern void CommandAnalyseRolloutMove(char *); 530 extern void CommandAnalyseSession(char *); 531 extern void CommandAnnotateAccept(char *); 532 extern void CommandAnnotateAddComment(char *); 533 extern void CommandAnnotateBad(char *); 534 extern void CommandAnnotateClearComment(char *); 535 extern void CommandAnnotateClearLuck(char *); 536 extern void CommandAnnotateClearSkill(char *); 537 extern void CommandAnnotateCube(char *); 538 extern void CommandAnnotateDouble(char *); 539 extern void CommandAnnotateDoubtful(char *); 540 extern void CommandAnnotateDrop(char *); 541 extern void CommandAnnotateLucky(char *); 542 extern void CommandAnnotateMove(char *); 543 extern void CommandAnnotateReject(char *); 544 extern void CommandAnnotateResign(char *); 545 extern void CommandAnnotateUnlucky(char *); 546 extern void CommandAnnotateVeryBad(char *); 547 extern void CommandAnnotateVeryLucky(char *); 548 extern void CommandAnnotateVeryUnlucky(char *); 549 extern void CommandCalibrate(char *); 550 extern void CommandClearCache(char *); 551 extern void CommandClearHint(char *); 552 extern void CommandClearTurn(char *); 553 extern void CommandCMarkCubeSetNone(char *); 554 extern void CommandCMarkCubeSetRollout(char *); 555 extern void CommandCMarkCubeShow(char *); 556 extern void CommandCMarkGameClear(char *); 557 extern void CommandCMarkGameShow(char *); 558 extern void CommandCMarkMatchClear(char *); 559 extern void CommandCMarkMatchShow(char *); 560 extern void CommandCMarkMoveClear(char *); 561 extern void CommandCMarkMoveSetNone(char *); 562 extern void CommandCMarkMoveSetRollout(char *); 563 extern void CommandCMarkMoveShow(char *); 564 extern void CommandCopy(char *); 565 extern void CommandDecline(char *); 566 extern void CommandDiceRolls(char *); 567 extern void CommandDouble(char *); 568 extern void CommandDrop(char *); 569 extern void CommandEndGame(char *); 570 extern void CommandEq2MWC(char *); 571 extern void CommandEval(char *); 572 extern void CommandExportGameGam(char *); 573 extern void CommandExportGameSnowieTxt(char *); 574 extern void CommandExportGameHtml(char *); 575 extern void CommandExportGameLaTeX(char *); 576 extern void CommandExportGamePDF(char *); 577 extern void CommandExportGamePS(char *); 578 extern void CommandExportGameText(char *); 579 extern void CommandExportHTMLImages(char *); 580 extern void CommandExportMatchHtml(char *); 581 extern void CommandExportMatchLaTeX(char *); 582 extern void CommandExportMatchMat(char *); 583 extern void CommandExportMatchSnowieTxt(char *); 584 extern void CommandExportMatchPDF(char *); 585 extern void CommandExportMatchPS(char *); 586 extern void CommandExportMatchText(char *); 587 extern void CommandExportPositionGammOnLine(char *); 588 extern void CommandExportPositionGOL2Clipboard(char *); 589 extern void CommandExportPositionHtml(char *); 590 extern void CommandExportPositionJF(char *); 591 extern void CommandExportPositionPDF(char *); 592 extern void CommandExportPositionPNG(char *); 593 extern void CommandExportPositionPS(char *); 594 extern void CommandExportPositionSnowieTxt(char *); 595 extern void CommandExportPositionSVG(char *); 596 extern void CommandExportPositionText(char *); 597 extern void CommandExternal(char *); 598 extern void CommandFirstGame(char *); 599 extern void CommandFirstMove(char *); 600 extern void CommandHelp(char *); 601 extern void CommandHint(char *); 602 extern void CommandHistory(char *); 603 extern void CommandImportAuto(char *); 604 extern void CommandImportBGRoom(char *); 605 extern void CommandImportEmpire(char *); 606 extern void CommandImportJF(char *); 607 extern void CommandImportMat(char *); 608 extern void CommandImportOldmoves(char *); 609 extern void CommandImportParty(char *); 610 extern void CommandImportSGG(char *); 611 extern void CommandImportSnowieTxt(char *); 612 extern void CommandImportTMG(char *); 613 extern void CommandListGame(char *); 614 extern void CommandListMatch(char *); 615 extern void CommandLoadCommands(char *); 616 extern void CommandLoadGame(char *); 617 extern void CommandLoadMatch(char *); 618 extern void CommandLoadPosition(char *); 619 extern void CommandLoadPython(char *); 620 extern void CommandMove(char *); 621 extern void CommandMWC2Eq(char *); 622 extern void CommandNewGame(char *); 623 extern void CommandNewMatch(char *); 624 extern void CommandNewSession(char *); 625 extern void CommandNext(char *); 626 extern void CommandNotImplemented(char *); 627 extern void CommandPlay(char *); 628 extern void CommandPrevious(char *); 629 extern void CommandQuit(char *); 630 extern void CommandRedouble(char *); 631 extern void CommandReject(char *); 632 extern void CommandRelationalAddMatch(char *); 633 extern void CommandRelationalEraseAll(char *); 634 extern void CommandRelationalErase(char *); 635 extern void CommandRelationalSelect(char *); 636 extern void CommandRelationalSetup(char *); 637 extern void CommandRelationalShowDetails(char *); 638 extern void CommandRelationalShowPlayers(char *); 639 extern void CommandRelationalTest(char *); 640 extern void CommandResign(char *); 641 extern void CommandRoll(char *); 642 extern void CommandRollout(char *); 643 extern void CommandSaveGame(char *); 644 extern void CommandSaveMatch(char *); 645 extern void CommandSavePosition(char *); 646 extern void CommandSaveSettings(char *); 647 extern void CommandSetAnalysisChequerplay(char *); 648 extern void CommandSetAnalysisCube(char *); 649 extern void CommandSetAnalysisCubedecision(char *); 650 extern void CommandSetAnalysisLimit(char *); 651 extern void CommandSetAnalysisLuckAnalysis(char *); 652 extern void CommandSetAnalysisLuck(char *); 653 extern void CommandSetAnalysisMoveFilter(char *); 654 extern void CommandSetAnalysisMoves(char *); 655 extern void CommandSetAnalysisPlayerAnalyse(char *); 656 extern void CommandSetAnalysisPlayer(char *); 657 extern void CommandSetAnalysisThresholdBad(char *); 658 extern void CommandSetAnalysisThresholdDoubtful(char *); 659 extern void CommandSetAnalysisThresholdLucky(char *); 660 extern void CommandSetAnalysisThresholdUnlucky(char *); 661 extern void CommandSetAnalysisThresholdVeryBad(char *); 662 extern void CommandSetAnalysisThresholdVeryLucky(char *); 663 extern void CommandSetAnalysisThresholdVeryUnlucky(char *); 664 extern void CommandSetAnalysisWindows(char *); 665 extern void CommandSetAnnotation(char *); 666 extern void CommandSetAppearance(char *); 667 extern void CommandSetAutoBearoff(char *); 668 extern void CommandSetAutoCrawford(char *); 669 extern void CommandSetAutoDoubles(char *); 670 extern void CommandSetAutoGame(char *); 671 extern void CommandSetAutoMove(char *); 672 extern void CommandSetAutoRoll(char *); 673 extern void CommandSetAutoSaveAnalysis(char *sz); 674 extern void CommandSetAutoSaveConfirmDelete(char *sz); 675 extern void CommandSetAutoSaveRollout(char *sz); 676 extern void CommandSetAutoSaveTime(char *sz); 677 extern void CommandSetBeavers(char *); 678 extern void CommandSetBoard(char *); 679 extern void CommandSetBrowser(char *); 680 extern void CommandSetCache(char *); 681 extern void CommandSetCalibration(char *); 682 extern void CommandSetCheatEnable(char *); 683 extern void CommandSetCheatPlayer(char *); 684 extern void CommandSetCheatPlayerRoll(char *); 685 extern void CommandSetClockwise(char *); 686 extern void CommandSetCommandWindow(char *); 687 extern void CommandSetConfirmDefault(char *); 688 extern void CommandSetConfirmNew(char *); 689 extern void CommandSetConfirmSave(char *); 690 extern void CommandSetCrawford(char *); 691 extern void CommandSetCubeCentre(char *); 692 extern void CommandSetCubeEfficiencyContact(char *); 693 extern void CommandSetCubeEfficiencyCrashed(char *); 694 extern void CommandSetCubeEfficiencyOS(char *); 695 extern void CommandSetCubeEfficiencyRaceCoefficient(char *); 696 extern void CommandSetCubeEfficiencyRaceFactor(char *); 697 extern void CommandSetCubeEfficiencyRaceMax(char *); 698 extern void CommandSetCubeEfficiencyRaceMin(char *); 699 extern void CommandSetCubeOwner(char *); 700 extern void CommandSetCubeUse(char *); 701 extern void CommandSetCubeValue(char *); 702 extern void CommandSetDelay(char *); 703 extern void CommandSetDice(char *); 704 extern void CommandSetDisplay(char *); 705 extern void CommandSetDockPanels(char *); 706 extern void CommandSetEvalChequerplay(char *); 707 extern void CommandSetEvalCubedecision(char *); 708 extern void CommandSetEvalCubeful(char *); 709 extern void CommandSetEvalDeterministic(char *); 710 extern void CommandSetEvalMoveFilter(char *); 711 extern void CommandSetEvalNoise(char *); 712 extern void CommandSetEvalParamEvaluation(char *); 713 extern void CommandSetEvalParamRollout(char *); 714 extern void CommandSetEvalParamType(char *); 715 extern void CommandSetEvalPlies(char *); 716 extern void CommandSetEvalPrune(char *); 717 extern void CommandSetEvalSameAsAnalysis(char *); 718 extern void CommandSetExportCubeDisplayActual(char *); 719 extern void CommandSetExportCubeDisplayBad(char *); 720 extern void CommandSetExportCubeDisplayClose(char *); 721 extern void CommandSetExportCubeDisplayDoubtful(char *); 722 extern void CommandSetExportCubeDisplayMissed(char *); 723 extern void CommandSetExportCubeDisplayUnmarked(char *); 724 extern void CommandSetExportCubeDisplayVeryBad(char *); 725 extern void CommandSetExportCubeParameters(char *); 726 extern void CommandSetExportCubeProb(char *); 727 extern void CommandSetExportFolder(char *); 728 extern void CommandSetExportHTMLCSSExternal(char *); 729 extern void CommandSetExportHTMLCSSHead(char *); 730 extern void CommandSetExportHTMLCSSInline(char *); 731 extern void CommandSetExportHTMLPictureURL(char *); 732 extern void CommandSetExportHtmlSize(char *); 733 extern void CommandSetExportHTMLTypeBBS(char *); 734 extern void CommandSetExportHTMLTypeFibs2html(char *); 735 extern void CommandSetExportHTMLTypeGNU(char *); 736 extern void CommandSetExportIncludeAnalysis(char *); 737 extern void CommandSetExportIncludeAnnotations(char *); 738 extern void CommandSetExportIncludeMatchInfo(char *); 739 extern void CommandSetExportIncludeStatistics(char *); 740 extern void CommandSetExportMovesDisplayBad(char *); 741 extern void CommandSetExportMovesDisplayDoubtful(char *); 742 extern void CommandSetExportMovesDisplayUnmarked(char *); 743 extern void CommandSetExportMovesDisplayVeryBad(char *); 744 extern void CommandSetExportMovesNumber(char *); 745 extern void CommandSetExportMovesParameters(char *); 746 extern void CommandSetExportMovesProb(char *); 747 extern void CommandSetExportParametersEvaluation(char *); 748 extern void CommandSetExportParametersRollout(char *); 749 extern void CommandSetExportPNGSize(char *); 750 extern void CommandSetExportShowBoard(char *); 751 extern void CommandSetExportShowPlayer(char *); 752 extern void CommandSetFullScreen(char *); 753 extern void CommandSetGameList(char *); 754 extern void CommandSetGeometryAnalysis(char *); 755 extern void CommandSetGeometryCommand(char *); 756 extern void CommandSetGeometryGame(char *); 757 extern void CommandSetGeometryHeight(char *); 758 extern void CommandSetGeometryHint(char *); 759 extern void CommandSetGeometryMain(char *); 760 extern void CommandSetGeometryMax(char *); 761 extern void CommandSetGeometryMessage(char *); 762 extern void CommandSetGeometryPosX(char *); 763 extern void CommandSetGeometryPosY(char *); 764 extern void CommandSetGeometryTheory(char *); 765 extern void CommandSetGeometryWidth(char *); 766 extern void CommandSetGNUBgID(char *); 767 extern void CommandSetXGID(char *); 768 extern void CommandSetGotoFirstGame(char *); 769 extern void CommandSetGUIAnimationBlink(char *); 770 extern void CommandSetGUIAnimationNone(char *); 771 extern void CommandSetGUIAnimationSlide(char *); 772 extern void CommandSetGUIAnimationSpeed(char *); 773 extern void CommandSetGUIBeep(char *); 774 extern void CommandSetGUIDiceArea(char *); 775 extern void CommandSetGUIDragTargetHelp(char *); 776 extern void CommandSetGUIGrayEdit(char *); 777 extern void CommandSetGUIHighDieFirst(char *); 778 extern void CommandSetGUIIllegal(char *); 779 extern void CommandSetGUIMoveListDetail(char *); 780 extern void CommandSetGUIShowIDs(char *); 781 extern void CommandSetGUIShowPipsEPC(char *); 782 extern void CommandSetGUIShowPipsNone(char *); 783 extern void CommandSetGUIShowPipsPips(char *); 784 extern void CommandSetGUIShowPipsWastage(char *); 785 extern void CommandSetGUIUseStatsPanel(char *); 786 extern void CommandSetGUIWindowPositions(char *); 787 extern void CommandSetImportFolder(char *); 788 extern void CommandSetInvertMatchEquityTable(char *); 789 extern void CommandSetJacoby(char *); 790 extern void CommandSetLang(char *); 791 extern void CommandSetMatchAnnotator(char *); 792 extern void CommandSetMatchComment(char *); 793 extern void CommandSetMatchDate(char *); 794 extern void CommandSetMatchEvent(char *); 795 extern void CommandSetMatchID(char *); 796 extern void CommandSetMatchLength(char *); 797 extern void CommandSetMatchPlace(char *); 798 extern void CommandSetMatchRating(char *); 799 extern void CommandSetMatchRound(char *); 800 extern void CommandSetMessage(char *); 801 extern void CommandSetMET(char *); 802 extern void CommandSetOutputDigits(char *); 803 extern void CommandSetOutputErrorRateFactor(char *); 804 extern void CommandSetOutputMatchPC(char *); 805 extern void CommandSetOutputMWC(char *); 806 extern void CommandSetOutputOutput(char *sz); 807 extern void CommandSetOutputRawboard(char *); 808 extern void CommandSetOutputWinPC(char *); 809 extern void CommandSetPanels(char *); 810 extern void CommandSetPanelWidth(char *); 811 extern void CommandSetPlayer(char *); 812 extern void CommandSetPlayerChequerplay(char *); 813 extern void CommandSetPlayerCubedecision(char *); 814 extern void CommandSetPlayerExternal(char *); 815 extern void CommandSetPlayerGNU(char *); 816 extern void CommandSetPlayerHuman(char *); 817 extern void CommandSetPlayerMoveFilter(char *); 818 extern void CommandSetPlayerName(char *); 819 extern void CommandSetPostCrawford(char *); 820 extern void CommandSetPriorityAboveNormal(char *); 821 extern void CommandSetPriorityBelowNormal(char *); 822 extern void CommandSetPriorityHighest(char *); 823 extern void CommandSetPriorityIdle(char *); 824 extern void CommandSetPriorityNice(char *); 825 extern void CommandSetPriorityNormal(char *); 826 extern void CommandSetPriorityTimeCritical(char *); 827 extern void CommandSetPrompt(char *); 828 extern void CommandSetRatingOffset(char *); 829 extern void CommandSetRecord(char *); 830 extern void CommandSetRNGBBS(char *); 831 extern void CommandSetRNG(char *); 832 extern void CommandSetRNGFile(char *); 833 extern void CommandSetRNGIsaac(char *); 834 extern void CommandSetRNGManual(char *); 835 extern void CommandSetRNGMD5(char *); 836 extern void CommandSetRNGMersenne(char *); 837 extern void CommandSetRNGRandomDotOrg(char *); 838 extern void CommandSetRolloutBearoffTruncationExact(char *); 839 extern void CommandSetRolloutBearoffTruncationOS(char *); 840 extern void CommandSetRollout(char *); 841 extern void CommandSetRolloutChequerplay(char *); 842 extern void CommandSetRolloutCubedecision(char *); 843 extern void CommandSetRolloutCubeEqualChequer(char *); 844 extern void CommandSetRolloutCubeful(char *); 845 extern void CommandSetRolloutInitial(char *); 846 extern void CommandSetRolloutJsd(char *); 847 extern void CommandSetRolloutJsdEnable(char *); 848 extern void CommandSetRolloutJsdLimit(char *); 849 extern void CommandSetRolloutJsdMinGames(char *); 850 extern void CommandSetRolloutLate(char *); 851 extern void CommandSetRolloutLateChequerplay(char *); 852 extern void CommandSetRolloutLateCubedecision(char *); 853 extern void CommandSetRolloutLateEnable(char *); 854 extern void CommandSetRolloutLateMoveFilter(char *); 855 extern void CommandSetRolloutLatePlayer(char *); 856 extern void CommandSetRolloutLatePlies(char *); 857 extern void CommandSetRolloutLimit(char *); 858 extern void CommandSetRolloutLimitEnable(char *); 859 extern void CommandSetRolloutLimitMinGames(char *); 860 extern void CommandSetRolloutLogEnable(char *); 861 extern void CommandSetRolloutLogFile(char *); 862 extern void CommandSetRolloutMaxError(char *); 863 extern void CommandSetRolloutMoveFilter(char *); 864 extern void CommandSetRolloutPlayer(char *); 865 extern void CommandSetRolloutPlayerChequerplay(char *); 866 extern void CommandSetRolloutPlayerCubedecision(char *); 867 extern void CommandSetRolloutPlayerLateChequerplay(char *); 868 extern void CommandSetRolloutPlayerLateCubedecision(char *); 869 extern void CommandSetRolloutPlayerLateMoveFilter(char *); 870 extern void CommandSetRolloutPlayerMoveFilter(char *); 871 extern void CommandSetRolloutPlayersAreSame(char *); 872 extern void CommandSetRolloutRNG(char *); 873 extern void CommandSetRolloutRotate(char *); 874 extern void CommandSetRolloutSeed(char *); 875 extern void CommandSetRolloutTrials(char *); 876 extern void CommandSetRolloutTruncation(char *); 877 extern void CommandSetRolloutTruncationChequer(char *); 878 extern void CommandSetRolloutTruncationCube(char *); 879 extern void CommandSetRolloutTruncationEnable(char *); 880 extern void CommandSetRolloutTruncationEqualPlayer0(char *); 881 extern void CommandSetRolloutTruncationPlies(char *); 882 extern void CommandSetRolloutVarRedn(char *); 883 extern void CommandSetScore(char *); 884 extern void CommandSetSeed(char *); 885 extern void CommandSetSGFFolder(char *); 886 extern void CommandSetSoundEnable(char *); 887 extern void CommandSetSoundSoundAgree(char *); 888 extern void CommandSetSoundSoundAnalysisFinished(char *); 889 extern void CommandSetSoundSoundBotDance(char *); 890 extern void CommandSetSoundSoundBotWinGame(char *); 891 extern void CommandSetSoundSoundBotWinMatch(char *); 892 extern void CommandSetSoundSoundChequer(char *); 893 extern void CommandSetSoundSoundDouble(char *); 894 extern void CommandSetSoundSoundDrop(char *); 895 extern void CommandSetSoundSoundExit(char *); 896 extern void CommandSetSoundSoundHumanDance(char *); 897 extern void CommandSetSoundSoundHumanWinGame(char *); 898 extern void CommandSetSoundSoundHumanWinMatch(char *); 899 extern void CommandSetSoundSoundMove(char *); 900 extern void CommandSetSoundSoundRedouble(char *); 901 extern void CommandSetSoundSoundResign(char *); 902 extern void CommandSetSoundSoundRoll(char *); 903 extern void CommandSetSoundSoundStart(char *); 904 extern void CommandSetSoundSoundTake(char *); 905 extern void CommandSetSoundSystemCommand(char *); 906 extern void CommandSetStyledGameList(char *); 907 extern void CommandSetTheoryWindow(char *); 908 extern void CommandSetThreads(char *); 909 extern void CommandSetToolbar(char *); 910 extern void CommandSetTurn(char *); 911 extern void CommandSetTutorChequer(char *); 912 extern void CommandSetTutorCube(char *); 913 extern void CommandSetTutorMode(char *); 914 extern void CommandSetTutorSkillBad(char *); 915 extern void CommandSetTutorSkillDoubtful(char *); 916 extern void CommandSetTutorSkillVeryBad(char *); 917 extern void CommandSetVariation1ChequerHypergammon(char *); 918 extern void CommandSetVariation2ChequerHypergammon(char *); 919 extern void CommandSetVariation3ChequerHypergammon(char *); 920 extern void CommandSetVariationNackgammon(char *); 921 extern void CommandSetVariationStandard(char *); 922 extern void CommandSetVsync3d(char *); 923 extern void CommandSetWarning(char *); 924 extern void CommandShow8912(char *); 925 extern void CommandShowAliases(char *); 926 extern void CommandShowAnalysis(char *); 927 extern void CommandShowAutoSave(char *); 928 extern void CommandShowAutomatic(char *); 929 extern void CommandShowBearoff(char *); 930 extern void CommandShowBeavers(char *); 931 extern void CommandShowBoard(char *); 932 extern void CommandShowBrowser(char *); 933 extern void CommandShowBuildInfo(char *); 934 extern void CommandShowCache(char *); 935 extern void CommandShowCalibration(char *); 936 extern void CommandShowCheat(char *); 937 extern void CommandShowClockwise(char *); 938 extern void CommandShowCommands(char *); 939 extern void CommandShowConfirm(char *); 940 extern void CommandShowCopying(char *); 941 extern void CommandShowCrawford(char *); 942 extern void CommandShowCredits(char *); 943 extern void CommandShowCube(char *); 944 extern void CommandShowCubeEfficiency(char *); 945 extern void CommandShowDelay(char *); 946 extern void CommandShowDice(char *); 947 extern void CommandShowDisplay(char *); 948 extern void CommandShowEngine(char *); 949 extern void CommandShowEvaluation(char *); 950 extern void CommandShowExport(char *); 951 extern void CommandShowFullBoard(char *); 952 extern void CommandShowGammonValues(char *); 953 extern void CommandShowGeometry(char *); 954 extern void CommandShowJacoby(char *); 955 extern void CommandShowKeith(char *); 956 extern void CommandShowKleinman(char *); 957 extern void CommandShowIsight(char *); 958 extern void CommandShowLang(char *); 959 extern void CommandShowManualAbout(char *); 960 extern void CommandShowManualWeb(char *); 961 extern void CommandShowMarketWindow(char *); 962 extern void CommandShowMatchEquityTable(char *); 963 extern void CommandShowMatchInfo(char *); 964 extern void CommandShowMatchLength(char *); 965 extern void CommandShowMatchResult(char *); 966 extern void CommandShowOneSidedRollout(char *); 967 extern void CommandShowOutput(char *); 968 extern void CommandShowPanels(char *); 969 extern void CommandShowPipCount(char *); 970 extern void CommandShowPlayer(char *); 971 extern void CommandShowPostCrawford(char *); 972 extern void CommandShowPrompt(char *); 973 extern void CommandShowRatingOffset(char *); 974 extern void CommandShowRNG(char *); 975 extern void CommandShowRollout(char *); 976 extern void CommandShowRolls(char *); 977 extern void CommandShowScore(char *); 978 extern void CommandShowScoreSheet(char *); 979 extern void CommandShowSeed(char *); 980 extern void CommandShowSound(char *); 981 extern void CommandShowStatisticsGame(char *); 982 extern void CommandShowStatisticsMatch(char *); 983 extern void CommandShowStatisticsSession(char *); 984 extern void CommandShowTemperatureMap(char *); 985 extern void CommandShowThorp(char *); 986 extern void CommandShowThreads(char *); 987 extern void CommandShowTurn(char *); 988 extern void CommandShowTutor(char *); 989 extern void CommandShowVariation(char *); 990 extern void CommandShowVersion(char *); 991 extern void CommandShowWarning(char *); 992 extern void CommandShowWarranty(char *); 993 extern void CommandSwapPlayers(char *); 994 extern void CommandTake(char *); 995 extern void CommandSetDefaultNames(char *sz); 996 extern void CommandSetAliases(char *sz); 997 extern void hint_move(char *sz, gboolean show, procrecorddata * procdatarec); 998 extern void hint_double(int show, int did_double); 999 extern void hint_take(int show, int did_take); 1000 extern void find_skills(moverecord * pmr, const matchstate * pms, int did_double, int did_take); 1001 extern int getGameNumber(const listOLD * plGame); 1002 extern int getMoveNumber(const listOLD * plGame, const void *p); 1003 extern int CheckGameExists(void); 1004 extern void pmr_cubedata_set(moverecord * pmr, evalsetup * pes, float output[2][NUM_ROLLOUT_OUTPUTS], 1005 float stddev[2][NUM_ROLLOUT_OUTPUTS]); 1006 extern void pmr_movelist_set(moverecord * pmr, evalsetup * pes, movelist * pml); 1007 extern listOLD *game_add_pmr_hint(listOLD * plGame); 1008 extern void game_remove_pmr_hint(listOLD * pl_hint); 1009 extern gboolean game_is_last(listOLD * plGame); 1010 extern void pmr_hint_destroy(void); 1011 extern void StopAutomaticPlay(void); 1012 extern gboolean save_autosave(gpointer unused); 1013 extern void delete_autosave(void); 1014 extern int get_input_discard(void); 1015 extern void SaveGame(FILE * pf, listOLD * plGame); 1016 1017 extern int fMatchCancelled; 1018 extern int fJustSwappedPlayers; 1019 1020 extern void ProcessEvents(void); 1021 #if !defined(USE_MULTITHREAD) 1022 extern void CallbackProgress(void); 1023 #endif 1024 extern void SetRNG(rng * prng, rngcontext * rngctx, rng rngNew, char *szSeed); 1025 extern int check_resigns(cubeinfo * pci); 1026 extern int quick_roll(void); 1027 extern int board_in_list(const movelist * pml, const TanBoard old_board, const TanBoard board, int *an); 1028 extern int GetManualDice(unsigned int anDice[2]); 1029 1030 #endif /* BACKGAMMON_H */ 1031