1/*
2 * This file is part of Freecell Solver. It is subject to the license terms in
3 * the COPYING.txt file found in the top-level directory of this distribution
4 * and at http://fc-solve.shlomifish.org/docs/distro/COPYING.html . No part of
5 * Freecell Solver, including this file, may be copied, modified, propagated,
6 * or distributed except according to the terms contained in the COPYING file.
7 *
8 * Copyright (c) 2000 Shlomi Fish
9 */
10/*
11 * config.h - Configuration file for Freecell Solver
12 *
13 * ${AUTOGENERATED_CONFIG_H}
14*/
15#pragma once
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#include "freecell-solver/fcs_back_compat.h"
22
23#cmakedefine COMPACT_STATES
24#cmakedefine INDIRECT_STACK_STATES
25
26#cmakedefine FCS_RCS_STATES
27#cmakedefine CARD_DEBUG_PRES
28
29/* The size of a single pack in alloc.c/alloc.h measured in 1024 chars. */
30#cmakedefine FCS_IA_PACK_SIZE ${FCS_IA_PACK_SIZE}
31
32#ifndef FCS_FREECELL_ONLY
33#cmakedefine FCS_FREECELL_ONLY
34#endif
35
36#cmakedefine FCS_DISABLE_SIMPLE_SIMON
37#cmakedefine FCS_SINGLE_HARD_THREAD
38#cmakedefine FCS_WITHOUT_FC_PRO_MOVES_COUNT
39#cmakedefine FCS_WITHOUT_TRIM_MAX_STORED_STATES
40/*
41 * Get rid of the visited_iter counter on each state's extra_info. It is
42 * used a little for debugging, but otherwise is not needed for the run-time
43 * operation.
44 * */
45#cmakedefine FCS_WITHOUT_VISITED_ITER
46/*
47 * Disable the patsolve code at compile time in case it isn't wanted.
48 * */
49#ifndef FCS_DISABLE_PATSOLVE
50#cmakedefine FCS_DISABLE_PATSOLVE
51#endif
52/*
53 * Get rid of the "depth" field on each state's extra_info. It is
54 * used a little, but otherwise is not needed for the run-time
55 * operation.
56 * */
57#cmakedefine FCS_HARD_CODE_STATE_DEPTH_FIELD
58#cmakedefine FCS_WITHOUT_DEPTH_FIELD
59#cmakedefine FCS_WITHOUT_CMD_LINE_HELP
60#cmakedefine FCS_WITHOUT_ITER_HANDLER
61#cmakedefine FCS_WITHOUT_MAX_NUM_STATES
62#cmakedefine FCS_DISABLE_MULTI_FLARES
63#cmakedefine FCS_DISABLE_MULTI_NEXT_INSTS
64#cmakedefine FCS_DISABLE_MOVES_TRACKING
65#cmakedefine FCS_DISABLE_NUM_STORED_STATES
66#cmakedefine FCS_WITHOUT_EXPORTED_RESUME_SOLUTION
67#cmakedefine FCS_DISABLE_STATE_VALIDITY_CHECK
68#cmakedefine FCS_ENABLE_PRUNE__R_TF__UNCOND
69#cmakedefine FCS_USE_PRECOMPILED_CMD_LINE_THEME
70#cmakedefine FCS_RANGE_SOLVERS_PRINT_SOLVED
71#cmakedefine FCS_UNSAFE
72/*
73 * This flag controls a hash behaviour. It seems to improve things somewhat.
74 * */
75#cmakedefine FCS_INLINED_HASH_COMPARISON ${FCS_INLINED_HASH_COMPARISON}
76#cmakedefine FCS_INT_BIT_SIZE_LOG2 ${FCS_INT_BIT_SIZE_LOG2}
77#cmakedefine FCS_WITH_CONTEXT_VARIABLE
78/* This is an integer that specifies the maximal size of identifiers
79 * in chars/bytes. */
80#cmakedefine FCS_MAX_IDENT_LEN ${FCS_MAX_IDENT_LEN}
81/*
82 * The size of void*.
83 */
84@SIZEOF_VOID_P_CODE@
85
86// This flag determines whether we are using the more compact but slower,
87// internal move tokens.
88#cmakedefine FCS_USE_COMPACT_MOVE_TOKENS
89#define FCS_HARD_CODED_NUM_FCS_FOR_FREECELL_ONLY ${FCS_HARD_CODED_NUM_FCS_FOR_FREECELL_ONLY}
90
91#ifndef FCS_HARD_CODED_NUM_FCS_FOR_FREECELL_ONLY
92#define FCS_HARD_CODED_NUM_FCS_FOR_FREECELL_ONLY 4
93#endif
94
95#ifndef FCS_HARD_CODE_SCANS_SYNERGY_AS_TRUE
96#cmakedefine FCS_HARD_CODE_SCANS_SYNERGY_AS_TRUE
97#endif
98
99#ifndef FCS_HARD_CODE_REPARENT_STATES_AS_FALSE
100#cmakedefine FCS_HARD_CODE_REPARENT_STATES_AS_FALSE
101#endif
102
103#ifndef FCS_HARD_CODE_CALC_REAL_DEPTH_AS_FALSE
104#cmakedefine FCS_HARD_CODE_CALC_REAL_DEPTH_AS_FALSE
105#endif
106
107#ifdef FCS_FREECELL_ONLY
108#define HARD_CODED_NUM_FREECELLS FCS_HARD_CODED_NUM_FCS_FOR_FREECELL_ONLY
109#define HARD_CODED_NUM_STACKS 8
110#define HARD_CODED_NUM_DECKS 1
111#endif
112
113#ifdef HARD_CODED_NUM_FREECELLS
114#define MAX_NUM_FREECELLS HARD_CODED_NUM_FREECELLS
115#else
116#define MAX_NUM_FREECELLS ${MAX_NUM_FREECELLS}
117#endif
118
119#cmakedefine FCS_DBM_FREECELLS_NUM ${FCS_DBM_FREECELLS_NUM}
120
121#ifdef HARD_CODED_NUM_STACKS
122#define MAX_NUM_STACKS HARD_CODED_NUM_STACKS
123#else
124#define MAX_NUM_STACKS ${MAX_NUM_STACKS}
125#endif
126
127#define MAX_NUM_INITIAL_CARDS_IN_A_STACK ${MAX_NUM_INITIAL_CARDS_IN_A_STACK}
128
129#ifdef HARD_CODED_NUM_DECKS
130#define MAX_NUM_DECKS HARD_CODED_NUM_DECKS
131#else
132#define MAX_NUM_DECKS ${MAX_NUM_DECKS}
133#endif
134
135
136#define FCS_STATE_STORAGE_INDIRECT 0
137#define FCS_STATE_STORAGE_INTERNAL_HASH 1
138#define FCS_STATE_STORAGE_LIBAVL2_TREE 2
139#define FCS_STATE_STORAGE_LIBREDBLACK_TREE 3
140#define FCS_STATE_STORAGE_GLIB_TREE 4
141#define FCS_STATE_STORAGE_GLIB_HASH 5
142#define FCS_STATE_STORAGE_DB_FILE 6
143#define FCS_STATE_STORAGE_JUDY 7
144#define FCS_STATE_STORAGE_GOOGLE_DENSE_HASH 8
145#define FCS_STATE_STORAGE_KAZ_TREE 9
146
147#define FCS_STACK_STORAGE_NULL (-1)
148#define FCS_STACK_STORAGE_INTERNAL_HASH 0
149#define FCS_STACK_STORAGE_LIBAVL2_TREE 1
150#define FCS_STACK_STORAGE_LIBREDBLACK_TREE 2
151#define FCS_STACK_STORAGE_GLIB_TREE 3
152#define FCS_STACK_STORAGE_GLIB_HASH 4
153#define FCS_STACK_STORAGE_JUDY 5
154#define FCS_STACK_STORAGE_GOOGLE_DENSE_HASH 6
155
156#define FCS_STATE_STORAGE ${FCS_STATE_STORAGE}
157#define FCS_STACK_STORAGE ${FCS_STACK_STORAGE}
158
159#define FCS_RCS_CACHE_STORAGE_JUDY 0
160#define FCS_RCS_CACHE_STORAGE_KAZ_TREE 1
161
162#define FCS_RCS_CACHE_STORAGE ${FCS_RCS_CACHE_STORAGE}
163
164#cmakedefine FCS_ZERO_FREECELLS_MODE
165
166#cmakedefine HAVE_STRNCASECMP
167#cmakedefine HAVE_STRNDUP
168#cmakedefine HAVE_VASPRINTF
169#cmakedefine FCS_USE_INT128_FOR_VAR_BASE
170#define FCS_CMD_LINE_ENABLE_INCREMENTAL_SOLVING ${FCS_CMD_LINE_ENABLE_INCREMENTAL_SOLVING}
171
172/* Version number of package */
173#define VERSION "${VERSION}"
174
175#define FCS_WHICH_STATES_GOOGLE_HASH__DENSE  0
176#define FCS_WHICH_STATES_GOOGLE_HASH__SPARSE 1
177
178#define FCS_WHICH_COLUMNS_GOOGLE_HASH__DENSE  0
179#define FCS_WHICH_COLUMNS_GOOGLE_HASH__SPARSE 1
180
181#define FCS_WHICH_COLUMNS_GOOGLE_HASH ${FCS_WHICH_COLUMNS_GOOGLE_HASH}
182#define FCS_WHICH_STATES_GOOGLE_HASH ${FCS_WHICH_STATES_GOOGLE_HASH}
183
184// How many ranks there are - Ace to King == 13.
185#define FCS_MAX_RANK ${FCS_MAX_RANK}
186#ifdef __cplusplus
187};
188#endif
189