* common.h -- Common definitions for X and Windows NT versions of XBoard
*
* Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
+ * Massachusetts.
*
* Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
*
* Enhancements Copyright 2005 Alessandro Scotti
*
*------------------------------------------------------------------------
** See the file ChangeLog for a revision history. */
-#ifndef _COMMON
-#define _COMMON
+#ifndef XB_COMMON
+#define XB_COMMON
/* Begin compatibility grunge */
#endif
#else
+#ifdef X11
#include <X11/Intrinsic.h>
+#else
+typedef char Boolean;
+typedef char *String;
+#define True 1
+#define False 0
+#endif
#endif
#endif
/* End compatibility grunge */
+/* unsigned int 64 for engine nodes work and display */
+#ifdef WIN32
+ /* I don't know the name for this type of other compiler
+ * If it not work, just modify here
+ * This is for MS Visual Studio
+ */
+ #ifdef _MSC_VER
+ #define u64 unsigned __int64
+ #define s64 signed __int64
+ #define u64Display "%I64u"
+ #define s64Display "%I64d"
+ #define u64Const(c) (c ## UI64)
+ #define s64Const(c) (c ## I64)
+ #else
+ /* place holder
+ * or dummy types for other compiler
+ * [HGM] seems that -mno-cygwin comple needs %I64?
+ */
+ #define u64 unsigned long long
+ #define s64 signed long long
+ #ifdef USE_I64
+ #define u64Display "%I64u"
+ #define s64Display "%I64d"
+ #else
+ #define u64Display "%llu"
+ #define s64Display "%lld"
+ #endif
+ #define u64Const(c) (c ## ULL)
+ #define s64Const(c) (c ## LL)
+ #endif
+#else
+ /* GNU gcc */
+ #define u64 unsigned long long
+ #define s64 signed long long
+ #define u64Display "%llu"
+ #define s64Display "%lld"
+ #define u64Const(c) (c ## ull)
+ #define s64Const(c) (c ## ll)
+#endif
+
#define PROTOVER 2 /* engine protocol version */
// [HGM] license: Messages that engines must print to satisfy their license requirements for patented variants
outside world in ASCII. In a similar way, the different rank numbering
systems (starting at rank 0 or 1) are implemented by redefining '1'.
*/
-#define BOARD_RANKS 11 /* [HGM] for in declarations */
+#define BOARD_RANKS 17 /* [HGM] for in declarations */
#define BOARD_FILES 16 /* [HGM] for in declarations */
#define BOARD_HEIGHT (gameInfo.boardHeight) /* [HGM] made user adjustable */
-#define BOARD_WIDTH (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
+#define BOARD_WIDTH (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
#define BOARD_LEFT (gameInfo.holdingsWidth) /* [HGM] play-board edges */
#define BOARD_RGHT (gameInfo.boardWidth + gameInfo.holdingsWidth)
#define CASTLING (BOARD_RANKS-1) /* [HGM] hide in upper rank */
#define VIRGIN (BOARD_RANKS-2) /* [HGM] pieces not moved */
#define EP_STATUS CASTLING][(BOARD_FILES-2) /* [HGM] in upper rank */
#define HOLDINGS_SET CASTLING][(BOARD_FILES-1) /* [HGM] in upper-right corner*/
-#define ONE ('1'-(BOARD_HEIGHT>9)) /* [HGM] foremost board rank */
+#define ONE ('1'-(BOARD_HEIGHT==10)) /* [HGM] foremost board rank */
#define AAA ('a'-BOARD_LEFT) /* [HGM] leftmost board file */
#define VIRGIN_W 1 /* [HGM] flags in Board[VIRGIN][X] */
#define VIRGIN_B 2
#define ZIPPY_MAX_GAMES 0
#define ZIPPY_REPLAY_TIMEOUT 120
+typedef VOIDSTAR ProcRef;
+#define NoProc ((ProcRef) 0)
+typedef VOIDSTAR InputSourceRef;
+
+typedef void (*DelayedEventCallback) P((void));
+
+typedef enum { Press, Release } ClickType;
+
typedef enum {
BeginningOfGame, MachinePlaysWhite, MachinePlaysBlack,
AnalyzeMode, AnalyzeFile, TwoMachinesPlay,
/* [HGM] the order here is crucial for Crazyhouse & Shogi: */
/* only the first N pieces can go into the holdings, and */
/* promotions in those variants shift P-W to U-S */
- WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen,
- WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
+ WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen,
+ WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper,
- WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteKing,
+ WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion,
+ WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat,
+ WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger,
+ WhiteDolphin, WhiteStag, WhiteHorned, WhiteEagle, WhiteSword,
+ WhiteCrown, WhiteHCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing,
BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen,
- BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
+ BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
- BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing,
- EmptySquare,
+ BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion,
+ BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat,
+ BlackPSword, BlackMonarch, BlackMother, BlackNothing, BlackPRook, BlackPDagger,
+ BlackDolphin, BlackStag, BlackHorned, BlackEagle, BlackSword,
+ BlackCrown, BlackHCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing,
+ EmptySquare, DarkSquare,
NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING]
ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/
} ChessSquare;
#define PROMOTED (int)WhiteDragon - (int)WhiteRook + (int)
#define DEMOTED (int)WhiteRook - (int)WhiteDragon + (int)
#define SHOGI (int)EmptySquare + (int)
+#define CHUPROMOTED ((int)WhitePDragon - (int)WhiteDragon)*(gameInfo.variant == VariantChu) + PROMOTED
+#define IS_SHOGI(V) ((V) == VariantShogi || (V) == VariantChu)
+#define IS_LION(V) ((V) == WhiteLion || (V) == BlackLion)
typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
EndOfFile = 0,
WhiteKingSideCastle, WhiteQueenSideCastle,
WhiteKingSideCastleWild, WhiteQueenSideCastleWild,
- WhiteHSideCastleFR, WhiteASideCastleFR,
+ WhiteHSideCastleFR, WhiteASideCastleFR,
BlackKingSideCastle, BlackQueenSideCastle,
BlackKingSideCastleWild, BlackQueenSideCastleWild,
- BlackHSideCastleFR, BlackASideCastleFR,
+ BlackHSideCastleFR, BlackASideCastleFR,
WhitePromotion, WhiteNonPromotion,
BlackPromotion, BlackNonPromotion,
WhiteCapturesEnPassant, BlackCapturesEnPassant,
- WhiteDrop, BlackDrop,
+ WhiteDrop, BlackDrop, FirstLeg,
NormalMove, AmbiguousMove, IllegalMove, ImpossibleMove,
WhiteWins, BlackWins, GameIsDrawn, GameUnfinished,
GNUChessGame, XBoardGame, MoveNumberOne, Open, Close, Nothing,
} ColorClass;
typedef enum {
- SoundMove, SoundBell, SoundAlarm, SoundIcsWin, SoundIcsLoss,
+ SoundMove, SoundBell, SoundRoar, SoundAlarm, SoundIcsWin, SoundIcsLoss,
SoundIcsDraw, SoundIcsUnfinished, NSoundClasses
} SoundClass;
Variant35, /* Temporary name for possible future ICC wild 35 */
Variant36, /* Temporary name for possible future ICC wild 36 */
VariantShogi, /* [HGM] added variants */
+ VariantChu,
VariantXiangqi,
VariantCourier,
VariantGothic,
VariantCapablanca,
VariantKnightmate,
- VariantFairy,
+ VariantFairy,
VariantCylinder,
VariantFalcon,
VariantCapaRandom,
VariantGreat,
VariantTwilight,
VariantMakruk,
+ VariantASEAN,
VariantSChess,
VariantGrand,
VariantSpartan,
+ VariantLion,
+ VariantChuChess,
VariantUnknown /* Catchall for other unknown variants */
} VariantClass;
"wild35", \
"wild36", \
"shogi", \
+ "chu", \
"xiangqi", \
"courier", \
"gothic", \
"great",\
"twilight",\
"makruk",\
+ "asean",\
"seirawan",\
"grand",\
"spartan",\
+ "lion",\
+ "chuchess",\
"unknown" \
}
Boolean firstPlaysBlack;
Boolean noChessProgram;
char *host[ENGINES];
- char *bitmapDirectory;
+ char *themeNames;
+ char *pieceDirectory;
+ char *border;
char *soundDirectory;
char *remoteShell;
char *remoteUser;
float timeDelay;
char *timeControl;
+ Boolean trueColors;
Boolean icsActive;
+ Boolean autoBox;
char *icsHost;
char *icsPort;
char *icsCommPort; /* if set, use serial port instead of tcp host/port */
int loadGameIndex; /* game # within file */
char *saveGameFile;
Boolean autoSaveGames;
+ Boolean onlyOwn; /* [HGM] suppress auto-saving of observed games */
char *loadPositionFile;
int loadPositionIndex; /* position # within file */
char *savePositionFile;
+ Boolean fischerCastling;/* [HGM] fischer: allow Fischr castling in any variant */
Boolean matchMode;
int matchGames;
Boolean monoMode;
Boolean flipView;
Boolean autoFlipView;
char *cmailGameName; /* xboard only */
+ Boolean headers;
Boolean alwaysPromoteToQueen;
Boolean oldSaveStyle;
Boolean oneClick;
Boolean ponderNextMove;
Boolean periodicUpdates;
Boolean autoObserve;
+ Boolean autoCreateLogon;
Boolean autoComment;
Boolean getMoveList;
Boolean testLegality;
Boolean zippyPlay;
int flashCount; /* Number of times to flash (xboard only) */
int flashRate; /* Flashes per second (xboard only) */
- char *pixmapDirectory; /* Path to XPM/XIM files to use (xboard only) */
int msLoginDelay; /* Delay per character (in msec) while sending
ICS logon script (xboard only) */
Boolean colorize; /* If True, use the following colors to color text */
char *soundSeek;
char *soundMove; // [HGM] IMPORTANT: order must be as in SoundClass
char *soundBell;
+ char *soundRoar;
char *soundIcsAlarm;
char *soundIcsWin;
char *soundIcsLoss;
Boolean highlightLastMove;
Boolean highlightDragging;
Boolean blindfold; /* if true, no pieces are drawn */
- Boolean premove; /* true if premove feature enabled */
- Boolean premoveWhite; /* true if premoving White first move */
- char *premoveWhiteText; /* text of White premove 1 */
- Boolean premoveBlack; /* true if premoving Black first move */
- char *premoveBlackText; /* text of Black premove 1 */
- Boolean icsAlarm; /* true if sounding alarm at a certain time */
+ Boolean premove; /* true if premove feature enabled */
+ Boolean premoveWhite; /* true if premoving White first move */
+ char *premoveWhiteText; /* text of White premove 1 */
+ Boolean premoveBlack; /* true if premoving Black first move */
+ char *premoveBlackText; /* text of Black premove 1 */
+ Boolean icsAlarm; /* true if sounding alarm at a certain time */
int icsAlarmTime; /* time to sound alarm, in milliseconds */
Boolean autoRaiseBoard;
int fontSizeTolerance; /* xboard only */
char *chatBoxes;
int protocolVersion[ENGINES];
Boolean showButtonBar;
- Boolean icsEngineAnalyze;
+ Boolean icsEngineAnalyze;
Boolean variations; /* [HGM] enable variation-tree walking */
+ Boolean autoExtend; /* [HGM] enable playing move(s) of right-clicked PV in analysis mode */
/* [AS] New properties (down to the "ZIPPY" part) */
Boolean scoreIsAbsolute[ENGINES]; /* If true, engine score is always from white side */
Boolean hideThinkingFromHuman; /* If true, program thinking is generated but not displayed in human/computer matches */
Boolean useBitmaps;
Boolean useFont;
+ Boolean useBorder;
char * liteBackTextureFile; /* Name of texture bitmap for lite squares */
char * darkBackTextureFile; /* Name of texture bitmap for dark squares */
int liteBackTextureMode;
int evalHistColorWhite;
int evalHistColorBlack;
Boolean highlightMoveWithArrow;
+ Boolean tourney;
+ char * tourneyOptions;
int highlightArrowColor;
Boolean useStickyWindows;
Boolean bgObserve; /* [HGM] bughouse */
int zippyShortGame; /* [HGM] aborter */
#endif
Boolean lowTimeWarning; /* [HGM] low time */
+ Boolean quitNext;
char *lowTimeWarningColor;
char *serverFileName;
char *serverMovesName;
+ char *finger;
Boolean suppressLoadMoves;
int serverPause;
int timeOdds[ENGINES];
+ int drawDepth[ENGINES];
int timeOddsMode;
int accumulateTC[ENGINES];
int NPS[ENGINES];
extern WindowPlacement wpMoveHistory;
extern WindowPlacement wpGameList;
extern WindowPlacement wpTags;
+extern WindowPlacement wpTextMenu;
#define MAXENGINES 2000
-// [HGM] chat
+// [HGM] chat
#define MAX_CHAT 5
extern int chatCount;
extern char chatPartner[MAX_CHAT][MSG_SIZ];
+// Some prototypes of routines so general they should be available everywhere
+/* If status == 0, we are exiting with a benign message, not an error */
+void DisplayFatalError P((String message, int error, int status));
+void DisplayError P((String message, int error));
+
// [HGM] generally useful macros; there are way too many memory leaks...
#define FREE(x) if(x) free(x)
#define ASSIGN(x, y) if(x) free(x); x = strdup(y)
#define secondOptions engOptions[1]
#endif
-