1 Introduction 1.1 Introduction 1.2 History 1.3 Terminology card, suit, card number, state (= board), stack, freecell, foundation (sometimes erroneously referred to in the code as deck). deck (=a pack of 4 suits of 13 cards each). move (= supermove), atomic move, move stack multimove canonizing states, normalizing states 2 The card.c module 2.1 Converting cards to and from strings 3 The state.h header 3.1 How states are represented in FCS 3.1.1 Debug States 3.1.2 Compact States 3.1.3 Indirect Stack States 3.2 The macros used to manage the states. 4 The state.c module 4.1 fcs_card_compare 4.2 fcs_duplicate_state (mainly in Indirect Stack States) 4.3 fcs_stack_compare 4.4 The difference between fcs_stack_compare_for_comparison and fcs_stack_compare_for_stack_sort 4.4 fcs_canonize_state 4.5 fcs_state_compare - why we can use memcmp 4.6 fcs_initial_user_state_to_c 4.7 fcs_check_state_validity 4.8 fcs_state_as_string 5 move.c 5.1 How moves are represnted and handled. 5.2 Move stacks and their operations 5.3 fcs_move_stack_normalize 6 How the different scans are handled. (scans.c and caas.c) 6.1 Theoretical description of the scans. 6.1.1 What is DFS 6.1.2 What is BFS 6.1.3 What is A* 6.2 The check_and_add_state function. 6.3 The DFS scan 6.4 The BFS scan 6.5 The A* scan 7 Overview of the tests (the freecell.c file) <<< Fill In >>> 8 The Interface functions (intrface.c) <<< Fill In >>> 9 Utility modules 9.1 fcs_isa.c 9.2 fcs_hash.c 9.3 md5c.c 9.4 pqueue.c 9.5 fcs_dm.c 9.6 preset.c 10 Overview of the fcs_user interface functions <<< Fill In >>>