Cute Chess  0.1
tbconfig.h
1 /*
2  * tbconfig.h
3  * (C) 2015 basil, all rights reserved,
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in
13  * all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22  */
23 
24 #ifndef TBCONFIG_H
25 #define TBCONFIG_H
26 
27 /****************************************************************************/
28 /* BUILD CONFIG: */
29 /****************************************************************************/
30 
31 /*
32  * Define TB_CUSTOM_POP_COUNT to override the internal popcount
33  * implementation. To do this supply a macro or function definition
34  * here:
35  */
36 /* #define TB_CUSTOM_POP_COUNT(x) <DEFINITION> */
37 
38 /*
39  * Define TB_CUSTOM_LSB to override the internal lsb
40  * implementation. To do this supply a macro or function definition
41  * here:
42  */
43 /* #define TB_CUSTOM_LSB(x) <DEFINITION> */
44 
45 /*
46  * Define TB_CUSTOM_BSWAP32 to override the internal bswap32
47  * implementation. To do this supply a macro or function definition
48  * here:
49  */
50 /* #define TB_CUSTOM_BSWAP32(x) <DEFINITION> */
51 
52 /*
53  * Define TB_CUSTOM_BSWAP64 to override the internal bswap64
54  * implementation. To do this supply a macro or function definition
55  * here:
56  */
57 /* #define TB_CUSTOM_BSWAP64(x) <DEFINITION> */
58 
59 /*
60  * Define TB_NO_STDINT if you do not want to use <stdint.h> or it is not
61  * available.
62  */
63 /* #define TB_NO_STDINT */
64 
65 /*
66  * Define TB_NO_STDBOOL if you do not want to use <stdbool.h> or it is not
67  * available or unnecessary (e.g. C++).
68  */
69 #define TB_NO_STDBOOL
70 
71 /*
72  * Define TB_NO_THREADS if your program is not multi-threaded.
73  */
74 /* #define TB_NO_THREADS */
75 
76 /*
77  * Define TB_NO_HELPER_API if you do not need the helper API.
78  */
79 #define TB_NO_HELPER_API
80 
81 /*
82  * Define TB_NO_HW_POP_COUNT if there is no hardware popcount instruction.
83  */
84 #define TB_NO_HW_POP_COUNT
85 
86 /***************************************************************************/
87 /* ENGINE INTEGRATION CONFIG */
88 /***************************************************************************/
89 
90 /*
91  * If you are integrating tbprobe into an engine, you can replace some of
92  * tbprobe's built-in functionality with that already provided by the engine.
93  * This is OPTIONAL. If no definition are provided then tbprobe will use its
94  * own internal defaults. That said, for engines it is generally a good idea
95  * to avoid redundancy.
96  */
97 
98 /*
99  * Define TB_KING_ATTACKS(square) to return the king attacks bitboard for a
100  * king at `square'.
101  */
102 /* #define TB_KING_ATTACKS(square) <DEFINITION> */
103 
104 /*
105  * Define TB_KNIGHT_ATTACKS(square) to return the knight attacks bitboard for
106  * a knight at `square'.
107  */
108 /* #define TB_KNIGHT_ATTACKS(square) <DEFINITION> */
109 
110 /*
111  * Define TB_ROOK_ATTACKS(square, occ) to return the rook attacks bitboard
112  * for a rook at `square' assuming the given `occ' occupancy bitboard.
113  */
114 /* #define TB_ROOK_ATTACKS(square, occ) <DEFINITION> */
115 
116 /*
117  * Define TB_BISHOP_ATTACKS(square, occ) to return the bishop attacks bitboard
118  * for a bishop at `square' assuming the given `occ' occupancy bitboard.
119  */
120 /* #define TB_BISHOP_ATTACKS(square, occ) <DEFINITION> */
121 
122 /*
123  * Define TB_QUEEN_ATTACKS(square, occ) to return the queen attacks bitboard
124  * for a queen at `square' assuming the given `occ' occupancy bitboard.
125  * NOTE: If no definition is provided then tbprobe will use:
126  * TB_ROOK_ATTACKS(square, occ) | TB_BISHOP_ATTACKS(square, occ)
127  */
128 /* #define TB_QUEEN_ATTACKS(square, occ) <DEFINITION> */
129 
130 /*
131  * Define TB_PAWN_ATTACKS(square, color) to return the pawn attacks bitboard
132  * for a `color' pawn at `square'.
133  * NOTE: This definition must work for pawns on ranks 1 and 8. For example,
134  * a white pawn on e1 attacks d2 and f2. A black pawn on e1 attacks
135  * nothing. Etc.
136  * NOTE: This definition must not include en passant captures.
137  */
138 /* #define TB_PAWN_ATTACKS(square, color) <DEFINITION> */
139 
140 #endif