You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/kpat/freecell-solver/fcs_user.h

276 lines
5.8 KiB

/*
* 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 */