1 // This file is part of Freecell Solver. It is subject to the license terms in
2 // the COPYING.txt file found in the top-level directory of this distribution
3 // and at http://fc-solve.shlomifish.org/docs/distro/COPYING.html . No part of
4 // Freecell Solver, including this file, may be copied, modified, propagated,
5 // or distributed except according to the terms contained in the COPYING file.
6 //
7 // Copyright (c) 2000 Shlomi Fish
8 // fcs_enums.h - header file for various Freecell Solver Enumerations. Common
9 // to the main program headers and to the library headers.
10 #pragma once
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 enum
17 {
18     FCS_ES_FILLED_BY_ANY_CARD,
19     FCS_ES_FILLED_BY_KINGS_ONLY,
20     FCS_ES_FILLED_BY_NONE
21 };
22 
23 enum
24 {
25     FCS_SEQ_BUILT_BY_ALTERNATE_COLOR,
26     FCS_SEQ_BUILT_BY_SUIT,
27     FCS_SEQ_BUILT_BY_RANK
28 };
29 
30 enum
31 {
32     FCS_TALON_NONE,
33     FCS_TALON_GYPSY,
34     FCS_TALON_KLONDIKE
35 };
36 
37 typedef enum
38 {
39     FCS_STATE_WAS_SOLVED,
40     FCS_STATE_IS_NOT_SOLVEABLE,
41     FCS_STATE_ALREADY_EXISTS,
42     FCS_STATE_EXCEEDS_MAX_NUM_TIMES,
43     FCS_STATE_BEGIN_SUSPEND_PROCESS,
44     FCS_STATE_SUSPEND_PROCESS,
45     FCS_STATE_EXCEEDS_MAX_DEPTH,
46     FCS_STATE_ORIGINAL_STATE_IS_NOT_SOLVEABLE,
47     FCS_STATE_INVALID_STATE,
48     FCS_STATE_NOT_BEGAN_YET,
49     FCS_STATE_DOES_NOT_EXIST,
50     FCS_STATE_OPTIMIZED,
51     FCS_STATE_FLARES_PLAN_ERROR,
52     FCS_STATE_SOFT_SUSPEND_PROCESS
53 } fc_solve_solve_process_ret_t;
54 
55 typedef enum
56 {
57     FCS_PRESET_CODE_OK,
58     FCS_PRESET_CODE_NOT_FOUND,
59     FCS_PRESET_CODE_FREECELLS_EXCEED_MAX,
60     FCS_PRESET_CODE_STACKS_EXCEED_MAX,
61     FCS_PRESET_CODE_DECKS_EXCEED_MAX
62 } fc_solve_preset_ret_code_t;
63 
64 enum
65 {
66     FC_SOLVE__STANDARD_NOTATION_NO = 0,
67     FC_SOLVE__STANDARD_NOTATION_REGULAR = 1,
68     FC_SOLVE__STANDARD_NOTATION_EXTENDED = 2
69 };
70 
71 #define FCS_METHOD_HARD_DFS 0
72 #define FCS_METHOD_SOFT_DFS 1
73 #define FCS_METHOD_BFS 2
74 #define FCS_METHOD_A_STAR 3
75 #define FCS_METHOD_RANDOM_DFS 5
76 #define FCS_METHOD_PATSOLVE 6
77 
78 #define FCS_NUM_BEFS_WEIGHTS 6
79 
80 #ifdef __cplusplus
81 }
82 #endif
83