aboutsummaryrefslogtreecommitdiff
path: root/src/solve.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/solve.h')
-rw-r--r--src/solve.h50
1 files changed, 46 insertions, 4 deletions
diff --git a/src/solve.h b/src/solve.h
index 9a284ff..b09c81b 100644
--- a/src/solve.h
+++ b/src/solve.h
@@ -2,10 +2,52 @@
2#define SOLVE_H 2#define SOLVE_H
3 3
4#include "moves.h" 4#include "moves.h"
5#include "steps.h"
6#include "trans.h"
7 5
8AlgList * solve(Cube *cube, ChoiceStep *cs, SolveOptions *opts); 6#define MAX_SOLVERS 99
9Alg * solve_2phase(Cube *cube, int nthreads); 7
8typedef struct dfsarg DfsArg;
9typedef struct threader Threader;
10typedef struct solver Solver;
11
12/* TODO: add solver and threader in DfsData, remove from dispatch args and similar */
13
14struct dfsarg {
15 void * cubedata;
16 void * threaddata;
17 SolveOptions * opts;
18 int d;
19 bool niss;
20 Alg * current_alg;
21};
22
23struct threader {
24 void (*append_sol)(Alg *, void *);
25 void (*dispatch)(DfsArg *, AlgList *, Solver *, Threader *);
26 int (*get_nsol)(void *);
27/* TODO: threader should have param, like solver? */
28};
29
30struct solver {
31 Moveset * moveset;
32 bool (*move_check_stop)(void *, DfsArg *, Threader *);
33 Alg * (*validate_solution)(void *, Alg *);
34 bool (*niss_makes_sense)(void *, void *, Alg *);
35/* TODO: move param to somewhere where it makes more sense */
36 void * param;
37/* TODO: the following should be part of a generic cube description */
38/* TODO: remove alloc? */
39 void * (*alloc_cubedata)(void *);
40 void (*copy_cubedata)(void *, void *, void *);
41 void (*free_cubedata)(void *, void *);
42 void (*invert_cube)(void *, void *);
43 bool (*is_solved)(void *, void *);
44 void (*apply_alg)(void *, void *, Alg *);
45/* TODO: remove dependence on Cube, preparation should be done before */
46 void * (*prepare_cube)(void *, Cube *);
47};
48
49void dfs(DfsArg *, Solver *, Threader *);
50/* TODO: remove dependence on Cube, preparation should be done before */
51AlgList * solve(Cube *, SolveOptions *, Solver **, Threader *);
10 52
11#endif 53#endif

Generated with cgit - Back to sebastiano.tronto.net