5050
5151typedef int (*TableIndexToBDDIndex)(int index);
5252
53- #define TABLE_INDEX_TO_BDD_INDEX (name, max_men ) \
54- int name ## _table_index_to_bdd_index(int index)
55-
5653// construct_bdd_table creates the table from which the bdd
5754// will be initialized. All entries are mapped to [0..convert_table.size()[
5855// where 0 represents a wildcard (ENDGAME_TABLE_ILLEGAL)
@@ -61,225 +58,41 @@ uchar *construct_bdd_table(const char *table, TableIndexToBDDIndex table_index_t
6158 vector<char > &convert_table,
6259 const BitList &unreachable);
6360
64- // ###########################
65- // ########## KK ###########
66- // ###########################
67- int compress_KK_table_index (vector<PiecePos> &piece_list);
68- void decompress_KK_table_index (int index, vector<PiecePos>& piece_list);
69- BDD_Index preprocess_KK_bdd_index (const vector<PiecePos> &piece_list);
70- TABLE_INDEX_TO_BDD_INDEX (KK,2 );
71-
72-
73-
74- // ############################
75- // ########## KXK ###########
76- // ############################
77- int compress_KXK_table_index (vector<PiecePos> &piece_list);
78- void decompress_KXK_table_index (int index, vector<PiecePos>& piece_list);
79- BDD_Index preprocess_KXK_bdd_index (const vector<PiecePos> &piece_list);
80- TABLE_INDEX_TO_BDD_INDEX (KXK,3 );
81-
82- // ############################
83- // ########## KPK ###########
84- // ############################
85- int compress_KPK_table_index (vector<PiecePos>& piece_list);
86- void decompress_KPK_table_index (int index, vector<PiecePos>& piece_list);
87- BDD_Index preprocess_KPK_bdd_index (const vector<PiecePos> &piece_list);
88- TABLE_INDEX_TO_BDD_INDEX (KPK,3 );
89-
90- // #############################
91- // ########## KXXK ###########
92- // #############################
93- int compress_KXXK_table_index (vector<PiecePos>& piece_list);
94- void decompress_KXXK_table_index (int index, vector<PiecePos>& piece_list);
95- BDD_Index preprocess_KXXK_bdd_index (const vector<PiecePos> &piece_list);
96- TABLE_INDEX_TO_BDD_INDEX (KXXK,4 );
97-
98- // #############################
99- // ########## KXYK ###########
100- // #############################
101- int compress_KXYK_table_index (vector<PiecePos>& piece_list);
102- void decompress_KXYK_table_index (int index, vector<PiecePos>& piece_list);
103- BDD_Index preprocess_KXYK_bdd_index (const vector<PiecePos> &piece_list);
104- TABLE_INDEX_TO_BDD_INDEX (KXYK,4 );
105-
106- // #############################
107- // ########## KXKY ###########
108- // #############################
109- int compress_KXKY_table_index (vector<PiecePos>& piece_list);
110- void decompress_KXKY_table_index (int index, vector<PiecePos>& piece_list);
111- BDD_Index preprocess_KXKY_bdd_index (const vector<PiecePos> &piece_list);
112- TABLE_INDEX_TO_BDD_INDEX (KXKY,4 );
113-
114- // #############################
115- // ########## KPPK ###########
116- // #############################
117- int compress_KPPK_table_index (vector<PiecePos>& piece_list);
118- void decompress_KPPK_table_index (int index, vector<PiecePos>& piece_list);
119- BDD_Index preprocess_KPPK_bdd_index (const vector<PiecePos> &piece_list);
120- TABLE_INDEX_TO_BDD_INDEX (KPPK,4 );
121-
122- // #############################
123- // ########## KXPK ###########
124- // #############################
125- int compress_KXPK_table_index (vector<PiecePos>& piece_list);
126- void decompress_KXPK_table_index (int index, vector<PiecePos>& piece_list);
127- BDD_Index preprocess_KXPK_bdd_index (const vector<PiecePos> &piece_list);
128- TABLE_INDEX_TO_BDD_INDEX (KXPK,4 );
129-
130- // #############################
131- // ########## KPKP ###########
132- // #############################
133- int compress_KPKP_table_index (vector<PiecePos>& piece_list);
134- void decompress_KPKP_table_index (int index, vector<PiecePos>& piece_list);
135- BDD_Index preprocess_KPKP_bdd_index (const vector<PiecePos> &piece_list);
136- TABLE_INDEX_TO_BDD_INDEX (KPKP,4 );
137-
138- // #############################
139- // ########## KXKP ###########
140- // #############################
141- int compress_KXKP_table_index (vector<PiecePos>& piece_list);
142- void decompress_KXKP_table_index (int index, vector<PiecePos>& piece_list);
143- BDD_Index preprocess_KXKP_bdd_index (const vector<PiecePos> &piece_list);
144- TABLE_INDEX_TO_BDD_INDEX (KXKP,4 );
145-
146-
61+ #define TABLES (endgame ) \
62+ int compress_ ## endgame ## _table_index(vector<PiecePos> &piece_list); \
63+ void decompress_ ## endgame ## _table_index(int index, vector<PiecePos>& piece_list); \
64+ BDD_Index preprocess_ ## endgame ## _bdd_index(const vector<PiecePos> &piece_list); \
65+ int endgame ## _table_index_to_bdd_index(int index);
66+
67+ TABLES (KK)
68+ TABLES(KXK)
69+ TABLES(KPK)
70+ TABLES(KXKX)
71+ TABLES(KXYK)
72+ TABLES(KXKY)
73+ TABLES(KPPK)
74+ TABLES(KXPK)
75+ TABLES(KPKP)
76+ TABLES(KXKP)
14777#ifdef ALLOW_5_MEN_ENDGAME
148-
149- // ##############################
150- // ########## KXXXK ###########
151- // ##############################
152- int compress_KXXXK_table_index (vector<PiecePos>& piece_list);
153- void decompress_KXXXK_table_index (int index, vector<PiecePos>& piece_list);
154- BDD_Index preprocess_KXXXK_bdd_index (const vector<PiecePos> &piece_list);
155- TABLE_INDEX_TO_BDD_INDEX (KXXXK,5 );
156-
157-
158- // ##############################
159- // ########## KPPPK ###########
160- // ##############################
161- int compress_KPPPK_table_index (vector<PiecePos>& piece_list);
162- void decompress_KPPPK_table_index (int index, vector<PiecePos>& piece_list);
163- BDD_Index preprocess_KPPPK_bdd_index (const vector<PiecePos> &piece_list);
164- TABLE_INDEX_TO_BDD_INDEX (KPPPK,5 );
165-
166-
167- // ##############################
168- // ########## KXXKY ###########
169- // ##############################
170- int compress_KXXKY_table_index (vector<PiecePos>& piece_list);
171- void decompress_KXXKY_table_index (int index, vector<PiecePos>& piece_list);
172- BDD_Index preprocess_KXXKY_bdd_index (const vector<PiecePos> &piece_list);
173- TABLE_INDEX_TO_BDD_INDEX (KXXKY,5 );
174-
175- // ##############################
176- // ########## KXXKP ###########
177- // ##############################
178- int compress_KXXKP_table_index (vector<PiecePos>& piece_list);
179- void decompress_KXXKP_table_index (int index, vector<PiecePos>& piece_list);
180- BDD_Index preprocess_KXXKP_bdd_index (const vector<PiecePos> &piece_list);
181- TABLE_INDEX_TO_BDD_INDEX (KXXKP,5 );
182-
183- // ##############################
184- // ########## KPPKX ###########
185- // ##############################
186- int compress_KPPKX_table_index (vector<PiecePos>& piece_list);
187- void decompress_KPPKX_table_index (int index, vector<PiecePos>& piece_list);
188- BDD_Index preprocess_KPPKX_bdd_index (const vector<PiecePos> &piece_list);
189- TABLE_INDEX_TO_BDD_INDEX (KPPKX,5 );
190-
191- // ##############################
192- // ########## KPPKP ###########
193- // ##############################
194- int compress_KPPKP_table_index (vector<PiecePos>& piece_list);
195- void decompress_KPPKP_table_index (int index, vector<PiecePos>& piece_list);
196- BDD_Index preprocess_KPPKP_bdd_index (const vector<PiecePos> &piece_list);
197- TABLE_INDEX_TO_BDD_INDEX (KPPKP,5 );
198-
199- // ##############################
200- // ########## KXYKZ ###########
201- // ##############################
202- int compress_KXYKZ_table_index (vector<PiecePos>& piece_list);
203- void decompress_KXYKZ_table_index (int index, vector<PiecePos>& piece_list);
204- BDD_Index preprocess_KXYKZ_bdd_index (const vector<PiecePos> &piece_list);
205- TABLE_INDEX_TO_BDD_INDEX (KXYKZ,5 );
206-
207- // ##############################
208- // ########## KXYKP ###########
209- // ##############################
210- int compress_KXYKP_table_index (vector<PiecePos>& piece_list);
211- void decompress_KXYKP_table_index (int index, vector<PiecePos>& piece_list);
212- BDD_Index preprocess_KXYKP_bdd_index (const vector<PiecePos> &piece_list);
213- TABLE_INDEX_TO_BDD_INDEX (KXYKP,5 );
214-
215- // ##############################
216- // ########## KXPKY ###########
217- // ##############################
218- int compress_KXPKY_table_index (vector<PiecePos>& piece_list);
219- void decompress_KXPKY_table_index (int index, vector<PiecePos>& piece_list);
220- BDD_Index preprocess_KXPKY_bdd_index (const vector<PiecePos> &piece_list);
221- TABLE_INDEX_TO_BDD_INDEX (KXPKY,5 );
222-
223- // ##############################
224- // ########## KXPKP ###########
225- // ##############################
226- int compress_KXPKP_table_index (vector<PiecePos>& piece_list);
227- void decompress_KXPKP_table_index (int index, vector<PiecePos>& piece_list);
228- BDD_Index preprocess_KXPKP_bdd_index (const vector<PiecePos> &piece_list);
229- TABLE_INDEX_TO_BDD_INDEX (KXPKP,5 );
230-
231-
232- // ##############################
233- // ########## KXXYK ###########
234- // ##############################
235- int compress_KXXYK_table_index (vector<PiecePos>& piece_list);
236- void decompress_KXXYK_table_index (int index, vector<PiecePos>& piece_list);
237- BDD_Index preprocess_KXXYK_bdd_index (const vector<PiecePos> &piece_list);
238- TABLE_INDEX_TO_BDD_INDEX (KXXYK,5 );
239-
240- // ##############################
241- // ########## KXXPK ###########
242- // ##############################
243- int compress_KXXPK_table_index (vector<PiecePos>& piece_list);
244- void decompress_KXXPK_table_index (int index, vector<PiecePos>& piece_list);
245- BDD_Index preprocess_KXXPK_bdd_index (const vector<PiecePos> &piece_list);
246- TABLE_INDEX_TO_BDD_INDEX (KXXPK,5 );
247-
248- // ##############################
249- // ########## KXYYK ###########
250- // ##############################
251- int compress_KXYYK_table_index (vector<PiecePos>& piece_list);
252- void decompress_KXYYK_table_index (int index, vector<PiecePos>& piece_list);
253- BDD_Index preprocess_KXYYK_bdd_index (const vector<PiecePos> &piece_list);
254- TABLE_INDEX_TO_BDD_INDEX (KXYYK,5 );
255-
256- // ##############################
257- // ########## KXPPK ###########
258- // ##############################
259- int compress_KXPPK_table_index (vector<PiecePos>& piece_list);
260- void decompress_KXPPK_table_index (int index, vector<PiecePos>& piece_list);
261- BDD_Index preprocess_KXPPK_bdd_index (const vector<PiecePos> &piece_list);
262- TABLE_INDEX_TO_BDD_INDEX (KXPPK,5 );
263-
264- // ##############################
265- // ########## KXYZK ###########
266- // ##############################
267- int compress_KXYZK_table_index (vector<PiecePos>& piece_list);
268- void decompress_KXYZK_table_index (int index, vector<PiecePos>& piece_list);
269- BDD_Index preprocess_KXYZK_bdd_index (const vector<PiecePos> &piece_list);
270- TABLE_INDEX_TO_BDD_INDEX (KXYZK,5 );
271-
272- // ##############################
273- // ########## KXYPK ###########
274- // ##############################
275- int compress_KXYPK_table_index (vector<PiecePos>& piece_list);
276- void decompress_KXYPK_table_index (int index, vector<PiecePos>& piece_list);
277- BDD_Index preprocess_KXYPK_bdd_index (const vector<PiecePos> &piece_list);
278- TABLE_INDEX_TO_BDD_INDEX (KXYPK,5 );
279-
280- #endif // #ifdef ALLOW_5_MEN_ENDGAME
281-
282-
283- #undef TABLE_INDEX_TO_BDD_INDEX
284-
285- #endif // #define _ENDGAME_INDEXING_
78+ TABLES (KXXXK)
79+ TABLES(KPPPK)
80+ TABLES(KXXKY)
81+ TABLES(KXXKP)
82+ TABLES(KPPKX)
83+ TABLES(KPPKP)
84+ TABLES(KXYKZ)
85+ TABLES(KXYKP)
86+ TABLES(KXPKY)
87+ TABLES(KXPKP)
88+ TABLES(KXXYK)
89+ TABLES(KXXPK)
90+ TABLES(KXYYK)
91+ TABLES(KXPPK)
92+ TABLES(KXYZK)
93+ TABLES(KXYPK)
94+ #endif
95+
96+ #undef TABLES
97+
98+ #endif
0 commit comments