/* * move.h - main header file for the Freecell Solver library. * * Written by Shlomi Fish (shlomif@vipe.technion.ac.il), 2000 * * This file is in the public domain (it's uncopyrighted). */ #ifndef FC_SOLVE__FCS_USER_H #define FC_SOLVE__FCS_USER_H #include "fcs_enums.h" #include "fcs_move.h" #ifdef __cplusplus extern "C" { #endif extern void * freecell_solver_user_alloc(void); extern int freecell_solver_user_apply_preset( void * instance, const char * preset_name ); extern void freecell_solver_user_limit_iterations( void * user_instance, int max_iters ); extern int freecell_solver_user_set_tests_order( void * user_instance, const char * tests_order, char * * error_string ); extern int freecell_solver_user_solve_board( void * user_instance, const char * state_as_string ); extern int freecell_solver_user_resume_solution( void * user_instance ); extern int freecell_solver_user_get_next_move( void * user_instance, fcs_move_t * move ); extern char * freecell_solver_user_current_state_as_string( void * user_instance, int parseable_output, int canonized_order_output, int display_10_as_t ); extern void freecell_solver_user_free( void * user_instance ); extern int freecell_solver_user_get_current_depth( void * user_instance ); extern void freecell_solver_user_set_solving_method( void * user_instance, int method ); extern int freecell_solver_user_get_num_times( void * user_instance ); extern int freecell_solver_user_get_limit_iterations( void * user_instance ); extern int freecell_solver_user_get_moves_left( void * user_instance ); extern int freecell_solver_user_set_game( void * user_instance, int freecells_num, int stacks_num, int decks_num, int sequences_are_built_by, int unlimited_sequence_move, int empty_stacks_fill ); extern void freecell_solver_user_set_solution_optimization( void * user_instance, int optimize ); extern char * freecell_solver_user_move_to_string( fcs_move_t move, int standard_notation ); extern char * freecell_solver_user_move_to_string_w_state( void * user_instance, fcs_move_t move, int standard_notation ); extern void freecell_solver_user_limit_depth( void * user_instance, int max_depth ); extern int freecell_solver_user_set_num_freecells( void * user_instance, int freecells_num ); extern int freecell_solver_user_get_max_num_freecells(void); extern int freecell_solver_user_set_num_stacks( void * user_instance, int stacks_num ); extern int freecell_solver_user_get_max_num_stacks(void); extern int freecell_solver_user_set_num_decks( void * user_instance, int decks_num ); extern int freecell_solver_user_get_max_num_decks(void); extern char * freecell_solver_user_get_invalid_state_error_string( void * user_instance, int print_ts ); extern int freecell_solver_user_set_sequences_are_built_by_type( void * user_instance, int sbb ); extern int freecell_solver_user_set_empty_stacks_filled_by( void * user_instance, int es_fill ); extern int freecell_solver_user_set_sequence_move( void * user_instance, int unlimited ); extern int freecell_solver_user_set_a_star_weight( void * user_instance, int index, double weight ); typedef void (*freecell_solver_user_iter_handler_t) ( void * user_instance, int iter_num, int depth, void * ptr_state, int parent_iter_num, void * context ); extern void freecell_solver_user_set_iter_handler( void * user_instance, freecell_solver_user_iter_handler_t iter_handler, void * iter_handler_context ); extern char * freecell_solver_user_iter_state_as_string( void * user_instance, void * ptr_state, int parseable_output, int canonized_order_output, int display_10_as_t ); extern void freecell_solver_user_set_random_seed( void * user_instance, int seed ); extern int freecell_solver_user_get_num_states_in_collection( void * user_instance ); extern void freecell_solver_user_limit_num_states_in_collection( void * user_instance, int max_num_states ); extern int freecell_solver_user_next_soft_thread( void * user_instance ); extern void freecell_solver_user_set_soft_thread_step( void * user_instance, int num_times_step ); extern int freecell_solver_user_next_hard_thread( void * user_instance ); extern int freecell_solver_user_get_num_soft_threads_in_instance( void * user_instance ); extern void freecell_solver_user_set_calc_real_depth( void * user_instance, int calc_real_depth ); extern void freecell_solver_user_set_soft_thread_name( void * user_instance, char * name ); extern int freecell_solver_user_set_hard_thread_prelude( void * user_instance, char * prelude ); extern void freecell_solver_user_recycle( void * user_instance ); extern int freecell_solver_user_set_optimization_scan_tests_order( void * user_instance, const char * tests_order, char * * error_string ); extern void freecell_solver_user_set_reparent_states( void * user_instance, int to_reparent_states ); extern void freecell_solver_user_set_scans_synergy( void * user_instance, int synergy ); extern void freecell_solver_user_limit_current_instance_iterations( void * user_instance, int max_iters ); extern int freecell_solver_user_next_instance( void * user_instance ); /* * This function resets the user_instance, making it lose * all the previous command line arguments it encountered * */ extern int freecell_solver_user_reset( void * user_instance ); #ifdef __cplusplus } #endif #endif /* FC_SOLVE__FCS_USER_H */