Separation of Internals from User and Application Programmer Interfaces

FCS makes a clear distinction between the internals of the program, that are subject to change from version to version, and between the interface supplied to the user or the application programmer. All the modules starting from instance.c and below are the internals of the program.

lib.c contains the API functions used by the programmer. cmd_line.c is an API to analyse a Freecell Solver command line. It itself uses only the lib.c API. It provides a more flexible interface for configuring Freecell Solver, even to the application programmer.

main.c , test_multi_parallel.c , threaded_range_solver.c , and fc_pro_range_solver.c are command line programs that use the command line interface and programmers interface. Others can be written (and have been written).