4#include "scid/_platform.h"
5#include "scid/movespec.h"
12 typedef struct scid_game scid_game;
14 typedef struct scid_game_pgn_options scid_game_pgn_options;
16 typedef struct scid_game_cursor scid_game_cursor;
18 typedef int scid_game_merge_moves_mode;
22 SCID_GAME_MERGE_MOVES_APPEND = 0,
23 SCID_GAME_MERGE_MOVES_INSERT_VARIATION = 1,
24 SCID_GAME_MERGE_MOVES_REPLACE = 2
29 scid_game_create_blank(
30 const scid_position* position,
31 scid_game** out_game);
36 const scid_position* position,
41 size_t out_diagnostic_capacity,
42 size_t* out_diagnostic_size);
46 scid_game_free(scid_game* game);
50 scid_game_pgn_options_create(scid_game_pgn_options** out_options);
54 scid_game_pgn_options_free(scid_game_pgn_options* options);
58 scid_game_pgn_options_symbolic_nags_set(
59 scid_game_pgn_options* options,
64 scid_game_pgn_options_supplemental_tags_set(
65 scid_game_pgn_options* options,
70 scid_game_pgn_options_comments_set(
71 scid_game_pgn_options* options,
76 scid_game_pgn_options_variations_set(
77 scid_game_pgn_options* options,
82 scid_game_pgn_options_line_width_set(
83 scid_game_pgn_options* options,
89 const scid_game* game,
90 const scid_game_pgn_options* options,
92 size_t out_text_capacity,
93 size_t* out_text_size);
97 scid_game_mainline_halfmove_count_get(
98 const scid_game* game,
103 scid_game_initial_comment_get(
104 const scid_game* game,
106 size_t out_text_capacity,
107 size_t* out_text_size);
112 const scid_game* game,
115 size_t out_text_capacity,
116 size_t* out_text_size);
127 scid_game_tag_count_get(
128 const scid_game* game,
133 scid_game_tag_at_get(
134 const scid_game* game,
137 size_t out_name_capacity,
138 size_t* out_name_size,
140 size_t out_value_capacity,
141 size_t* out_value_size);
145 scid_game_tag_remove(
152 scid_game_start_position_get(
153 const scid_game* game,
154 scid_position* out_position);
158 scid_game_final_position_get(
159 const scid_game* game,
160 scid_position* out_position);
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);
173 scid_game_cursor_create(
175 scid_game_cursor** out_cursor);
179 scid_game_cursor_clone(
181 const scid_game_cursor* source_cursor,
182 scid_game_cursor** out_cursor);
186 scid_game_cursor_free(scid_game_cursor* cursor);
190 scid_game_cursor_position_get(
191 const scid_game_cursor* cursor,
192 scid_position* out_position);
196 scid_game_cursor_ply_get(
197 const scid_game_cursor* cursor,
202 scid_game_cursor_variation_count_get(
203 const scid_game_cursor* cursor,
208 scid_game_cursor_variation_depth_get(
209 const scid_game_cursor* cursor,
214 scid_game_cursor_variation_index_get(
215 const scid_game_cursor* cursor,
220 scid_game_cursor_is_line_start(
221 const scid_game_cursor* cursor,
222 int* out_is_line_start);
226 scid_game_cursor_is_line_end(
227 const scid_game_cursor* cursor,
228 int* out_is_line_end);
232 scid_game_cursor_is_game_start(
233 const scid_game_cursor* cursor,
234 int* out_is_game_start);
238 scid_game_cursor_is_game_end(
239 const scid_game_cursor* cursor,
240 int* out_is_game_end);
244 scid_game_cursor_is_variation_start(
245 const scid_game_cursor* cursor,
246 int* out_is_variation_start);
250 scid_game_cursor_is_variation_end(
251 const scid_game_cursor* cursor,
252 int* out_is_variation_end);
256 scid_game_cursor_is_variation_empty(
257 const scid_game_cursor* cursor,
258 int* out_is_variation_empty);
262 scid_game_cursor_comment_get(
263 const scid_game_cursor* cursor,
265 size_t out_text_capacity,
266 size_t* out_text_size);
270 scid_game_cursor_comment_set(
272 const scid_game_cursor* cursor,
273 const char* comment);
277 scid_game_cursor_previous_movespec_get(
278 const scid_game_cursor* cursor,
283 scid_game_cursor_previous_move_san_get(
284 const scid_game_cursor* cursor,
286 size_t out_text_capacity,
287 size_t* out_text_size);
291 scid_game_cursor_previous_move_comment_get(
292 const scid_game_cursor* cursor,
294 size_t out_text_capacity,
295 size_t* out_text_size);
299 scid_game_cursor_previous_move_nag_count_get(
300 const scid_game_cursor* cursor,
305 scid_game_cursor_previous_move_nag_at_get(
306 const scid_game_cursor* cursor,
312 scid_game_cursor_next_movespec_get(
313 const scid_game_cursor* cursor,
318 scid_game_cursor_next_move_san_get(
319 const scid_game_cursor* cursor,
321 size_t out_text_capacity,
322 size_t* out_text_size);
326 scid_game_cursor_next_move_comment_get(
327 const scid_game_cursor* cursor,
329 size_t out_text_capacity,
330 size_t* out_text_size);
334 scid_game_cursor_next_move_nag_count_get(
335 const scid_game_cursor* cursor,
340 scid_game_cursor_next_move_nag_at_get(
341 const scid_game_cursor* cursor,
347 scid_game_cursor_to_start(
348 const scid_game_cursor* cursor,
349 scid_game_cursor** out_start_cursor);
353 scid_game_cursor_to_end(
354 const scid_game_cursor* cursor,
355 scid_game_cursor** out_end_cursor);
359 scid_game_cursor_to_ply(
360 const scid_game_cursor* cursor,
363 scid_game_cursor** out_ply_cursor);
367 scid_game_cursor_next(
368 const scid_game_cursor* cursor,
370 scid_game_cursor** out_next_cursor);
374 scid_game_cursor_previous(
375 const scid_game_cursor* cursor,
377 scid_game_cursor** out_previous_cursor);
381 scid_game_cursor_variation_enter(
382 const scid_game_cursor* cursor,
385 scid_game_cursor** out_variation_cursor);
389 scid_game_cursor_variation_exit(
390 const scid_game_cursor* cursor,
392 scid_game_cursor** out_parent_cursor);
396 scid_game_cursor_move_add(
398 const scid_game_cursor* cursor,
400 scid_game_cursor** out_next_cursor);
404 scid_game_cursor_variation_add(
406 const scid_game_cursor* cursor,
407 const char* initial_comment,
409 scid_game_cursor** out_variation_cursor);
413 scid_game_cursor_nag_add(
415 const scid_game_cursor* cursor,
421 scid_game_cursor_nag_remove(
423 const scid_game_cursor* cursor,
429 scid_game_cursor_nag_clear(
431 const scid_game_cursor* cursor);
435 scid_game_cursor_variation_promote_to_first(
437 const scid_game_cursor* cursor,
439 scid_game_cursor** out_promoted_cursor);
443 scid_game_cursor_variation_promote_to_mainline(
445 const scid_game_cursor* cursor,
447 scid_game_cursor** out_mainline_cursor);
451 scid_game_cursor_variation_delete(
453 const scid_game_cursor* cursor,
455 scid_game_cursor** out_parent_cursor);
459 scid_game_cursor_truncate(
461 const scid_game_cursor* cursor,
462 scid_game_cursor** out_cursor);
466 scid_game_cursor_truncate_before_cursor(
468 const scid_game_cursor* cursor,
469 scid_game_cursor** out_cursor);