libscid snapshot+0cce79d72e38
Chess applications made easy.
Source on GitHub License GPL v2
Loading...
Searching...
No Matches
game.h
1#ifndef SCID_GAME_H
2#define SCID_GAME_H
3
4#include "scid/_platform.h"
5#include "scid/movespec.h"
6
7#ifdef __cplusplus
8extern "C"
9{
10#endif
11
12 typedef struct scid_game scid_game;
13
14 typedef struct scid_game_pgn_options scid_game_pgn_options;
15
16 typedef struct scid_game_cursor scid_game_cursor;
17
18 typedef int scid_game_merge_moves_mode;
19
20 enum
21 {
22 SCID_GAME_MERGE_MOVES_APPEND = 0,
23 SCID_GAME_MERGE_MOVES_INSERT_VARIATION = 1,
24 SCID_GAME_MERGE_MOVES_REPLACE = 2
25 };
26
27
28 SCID_API scid_error
29 scid_game_create_blank(
30 const scid_position* position,
31 scid_game** out_game);
32
33
34 SCID_API scid_error
35 scid_game_create(
36 const scid_position* position,
37 const char* pgn,
38 size_t pgn_size,
39 scid_game** out_game,
40 char* out_diagnostic,
41 size_t out_diagnostic_capacity,
42 size_t* out_diagnostic_size);
43
44
45 SCID_API void
46 scid_game_free(scid_game* game);
47
48
49 SCID_API scid_error
50 scid_game_pgn_options_create(scid_game_pgn_options** out_options);
51
52
53 SCID_API void
54 scid_game_pgn_options_free(scid_game_pgn_options* options);
55
56
57 SCID_API scid_error
58 scid_game_pgn_options_symbolic_nags_set(
59 scid_game_pgn_options* options,
60 int enabled);
61
62
63 SCID_API scid_error
64 scid_game_pgn_options_supplemental_tags_set(
65 scid_game_pgn_options* options,
66 int enabled);
67
68
69 SCID_API scid_error
70 scid_game_pgn_options_comments_set(
71 scid_game_pgn_options* options,
72 int enabled);
73
74
75 SCID_API scid_error
76 scid_game_pgn_options_variations_set(
77 scid_game_pgn_options* options,
78 int enabled);
79
80
81 SCID_API scid_error
82 scid_game_pgn_options_line_width_set(
83 scid_game_pgn_options* options,
84 unsigned line_width);
85
86
87 SCID_API scid_error
88 scid_game_to_pgn(
89 const scid_game* game,
90 const scid_game_pgn_options* options,
91 char* out_text,
92 size_t out_text_capacity,
93 size_t* out_text_size);
94
95
96 SCID_API scid_error
97 scid_game_mainline_halfmove_count_get(
98 const scid_game* game,
99 size_t* out_count);
100
101
102 SCID_API scid_error
103 scid_game_initial_comment_get(
104 const scid_game* game,
105 char* out_text,
106 size_t out_text_capacity,
107 size_t* out_text_size);
108
109
110 SCID_API scid_error
111 scid_game_tag_get(
112 const scid_game* game,
113 const char* name,
114 char* out_text,
115 size_t out_text_capacity,
116 size_t* out_text_size);
117
118
119 SCID_API scid_error
120 scid_game_tag_set(
121 scid_game* game,
122 const char* name,
123 const char* value);
124
125
126 SCID_API scid_error
127 scid_game_tag_count_get(
128 const scid_game* game,
129 size_t* out_count);
130
131
132 SCID_API scid_error
133 scid_game_tag_at_get(
134 const scid_game* game,
135 size_t index,
136 char* out_name,
137 size_t out_name_capacity,
138 size_t* out_name_size,
139 char* out_value,
140 size_t out_value_capacity,
141 size_t* out_value_size);
142
143
144 SCID_API scid_error
145 scid_game_tag_remove(
146 scid_game* game,
147 const char* name,
148 int* out_removed);
149
150
151 SCID_API scid_error
152 scid_game_start_position_get(
153 const scid_game* game,
154 scid_position* out_position);
155
156
157 SCID_API scid_error
158 scid_game_final_position_get(
159 const scid_game* game,
160 scid_position* out_position);
161
162
163 SCID_API scid_error
164 scid_game_merge_moves(
165 scid_game* target_game,
166 const scid_game_cursor* target_cursor,
167 const scid_game* source_game,
168 scid_game_merge_moves_mode mode,
169 scid_game_cursor** out_cursor);
170
171
172 SCID_API scid_error
173 scid_game_cursor_create(
174 scid_game* game,
175 scid_game_cursor** out_cursor);
176
177
178 SCID_API scid_error
179 scid_game_cursor_clone(
180 scid_game* game,
181 const scid_game_cursor* source_cursor,
182 scid_game_cursor** out_cursor);
183
184
185 SCID_API void
186 scid_game_cursor_free(scid_game_cursor* cursor);
187
188
189 SCID_API scid_error
190 scid_game_cursor_position_get(
191 const scid_game_cursor* cursor,
192 scid_position* out_position);
193
194
195 SCID_API scid_error
196 scid_game_cursor_ply_get(
197 const scid_game_cursor* cursor,
198 size_t* out_ply);
199
200
201 SCID_API scid_error
202 scid_game_cursor_variation_count_get(
203 const scid_game_cursor* cursor,
204 size_t* out_count);
205
206
207 SCID_API scid_error
208 scid_game_cursor_variation_depth_get(
209 const scid_game_cursor* cursor,
210 size_t* out_depth);
211
212
213 SCID_API scid_error
214 scid_game_cursor_variation_index_get(
215 const scid_game_cursor* cursor,
216 size_t* out_index);
217
218
219 SCID_API scid_error
220 scid_game_cursor_is_line_start(
221 const scid_game_cursor* cursor,
222 int* out_is_line_start);
223
224
225 SCID_API scid_error
226 scid_game_cursor_is_line_end(
227 const scid_game_cursor* cursor,
228 int* out_is_line_end);
229
230
231 SCID_API scid_error
232 scid_game_cursor_is_game_start(
233 const scid_game_cursor* cursor,
234 int* out_is_game_start);
235
236
237 SCID_API scid_error
238 scid_game_cursor_is_game_end(
239 const scid_game_cursor* cursor,
240 int* out_is_game_end);
241
242
243 SCID_API scid_error
244 scid_game_cursor_is_variation_start(
245 const scid_game_cursor* cursor,
246 int* out_is_variation_start);
247
248
249 SCID_API scid_error
250 scid_game_cursor_is_variation_end(
251 const scid_game_cursor* cursor,
252 int* out_is_variation_end);
253
254
255 SCID_API scid_error
256 scid_game_cursor_is_variation_empty(
257 const scid_game_cursor* cursor,
258 int* out_is_variation_empty);
259
260
261 SCID_API scid_error
262 scid_game_cursor_comment_get(
263 const scid_game_cursor* cursor,
264 char* out_text,
265 size_t out_text_capacity,
266 size_t* out_text_size);
267
268
269 SCID_API scid_error
270 scid_game_cursor_comment_set(
271 scid_game* game,
272 const scid_game_cursor* cursor,
273 const char* comment);
274
275
276 SCID_API scid_error
277 scid_game_cursor_previous_movespec_get(
278 const scid_game_cursor* cursor,
279 scid_movespec* out_move);
280
281
282 SCID_API scid_error
283 scid_game_cursor_previous_move_san_get(
284 const scid_game_cursor* cursor,
285 char* out_text,
286 size_t out_text_capacity,
287 size_t* out_text_size);
288
289
290 SCID_API scid_error
291 scid_game_cursor_previous_move_comment_get(
292 const scid_game_cursor* cursor,
293 char* out_text,
294 size_t out_text_capacity,
295 size_t* out_text_size);
296
297
298 SCID_API scid_error
299 scid_game_cursor_previous_move_nag_count_get(
300 const scid_game_cursor* cursor,
301 size_t* out_count);
302
303
304 SCID_API scid_error
305 scid_game_cursor_previous_move_nag_at_get(
306 const scid_game_cursor* cursor,
307 size_t index,
308 scid_nag* out_nag);
309
310
311 SCID_API scid_error
312 scid_game_cursor_next_movespec_get(
313 const scid_game_cursor* cursor,
314 scid_movespec* out_move);
315
316
317 SCID_API scid_error
318 scid_game_cursor_next_move_san_get(
319 const scid_game_cursor* cursor,
320 char* out_text,
321 size_t out_text_capacity,
322 size_t* out_text_size);
323
324
325 SCID_API scid_error
326 scid_game_cursor_next_move_comment_get(
327 const scid_game_cursor* cursor,
328 char* out_text,
329 size_t out_text_capacity,
330 size_t* out_text_size);
331
332
333 SCID_API scid_error
334 scid_game_cursor_next_move_nag_count_get(
335 const scid_game_cursor* cursor,
336 size_t* out_count);
337
338
339 SCID_API scid_error
340 scid_game_cursor_next_move_nag_at_get(
341 const scid_game_cursor* cursor,
342 size_t index,
343 scid_nag* out_nag);
344
345
346 SCID_API scid_error
347 scid_game_cursor_to_start(
348 const scid_game_cursor* cursor,
349 scid_game_cursor** out_start_cursor);
350
351
352 SCID_API scid_error
353 scid_game_cursor_to_end(
354 const scid_game_cursor* cursor,
355 scid_game_cursor** out_end_cursor);
356
357
358 SCID_API scid_error
359 scid_game_cursor_to_ply(
360 const scid_game_cursor* cursor,
361 size_t ply,
362 int* out_moved,
363 scid_game_cursor** out_ply_cursor);
364
365
366 SCID_API scid_error
367 scid_game_cursor_next(
368 const scid_game_cursor* cursor,
369 int* out_moved,
370 scid_game_cursor** out_next_cursor);
371
372
373 SCID_API scid_error
374 scid_game_cursor_previous(
375 const scid_game_cursor* cursor,
376 int* out_moved,
377 scid_game_cursor** out_previous_cursor);
378
379
380 SCID_API scid_error
381 scid_game_cursor_variation_enter(
382 const scid_game_cursor* cursor,
383 size_t index,
384 int* out_entered,
385 scid_game_cursor** out_variation_cursor);
386
387
388 SCID_API scid_error
389 scid_game_cursor_variation_exit(
390 const scid_game_cursor* cursor,
391 int* out_exited,
392 scid_game_cursor** out_parent_cursor);
393
394
395 SCID_API scid_error
396 scid_game_cursor_move_add(
397 scid_game* game,
398 const scid_game_cursor* cursor,
399 scid_movespec move,
400 scid_game_cursor** out_next_cursor);
401
402
403 SCID_API scid_error
404 scid_game_cursor_variation_add(
405 scid_game* game,
406 const scid_game_cursor* cursor,
407 const char* initial_comment,
408 int* out_added,
409 scid_game_cursor** out_variation_cursor);
410
411
412 SCID_API scid_error
413 scid_game_cursor_nag_add(
414 scid_game* game,
415 const scid_game_cursor* cursor,
416 scid_nag nag,
417 int* out_added);
418
419
420 SCID_API scid_error
421 scid_game_cursor_nag_remove(
422 scid_game* game,
423 const scid_game_cursor* cursor,
424 int is_move_nag,
425 int* out_removed);
426
427
428 SCID_API scid_error
429 scid_game_cursor_nag_clear(
430 scid_game* game,
431 const scid_game_cursor* cursor);
432
433
434 SCID_API scid_error
435 scid_game_cursor_variation_promote_to_first(
436 scid_game* game,
437 const scid_game_cursor* cursor,
438 int* out_promoted,
439 scid_game_cursor** out_promoted_cursor);
440
441
442 SCID_API scid_error
443 scid_game_cursor_variation_promote_to_mainline(
444 scid_game* game,
445 const scid_game_cursor* cursor,
446 int* out_promoted,
447 scid_game_cursor** out_mainline_cursor);
448
449
450 SCID_API scid_error
451 scid_game_cursor_variation_delete(
452 scid_game* game,
453 const scid_game_cursor* cursor,
454 int* out_deleted,
455 scid_game_cursor** out_parent_cursor);
456
457
458 SCID_API scid_error
459 scid_game_cursor_truncate(
460 scid_game* game,
461 const scid_game_cursor* cursor,
462 scid_game_cursor** out_cursor);
463
464
465 SCID_API scid_error
466 scid_game_cursor_truncate_before_cursor(
467 scid_game* game,
468 const scid_game_cursor* cursor,
469 scid_game_cursor** out_cursor);
470
471#ifdef __cplusplus
472}
473#endif
474
475#endif
Definition movespec.h:13