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