aboutsummaryrefslogtreecommitdiff
path: root/src/solve.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-05-01 12:48:55 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2023-05-01 12:48:55 +0200
commit6f4313bc1ed5be794146e6ca2fd73f48c7906061 (patch)
treea79c8be8613e8b4256d609477f98f440bfd7168c /src/solve.h
parent1a5bfe9b08707b0aef748d7921a419ba4a046fba (diff)
downloadnissy-classic-6f4313bc1ed5be794146e6ca2fd73f48c7906061.tar.gz
nissy-classic-6f4313bc1ed5be794146e6ca2fd73f48c7906061.zip
Reverted to 2.0.3
Diffstat (limited to 'src/solve.h')
-rw-r--r--src/solve.h51
1 files changed, 4 insertions, 47 deletions
diff --git a/src/solve.h b/src/solve.h
index 8182887..6ce6609 100644
--- a/src/solve.h
+++ b/src/solve.h
@@ -2,53 +2,10 @@
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"
5 7
6#define MAX_SOLVERS 99 8AlgList * solve(Cube cube, Step *step, SolveOptions *opts);
7 9Alg * solve_2phase(Cube cube, int nthreads);
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/* TODO: revisit apply_move, maybe apply_alg? or both? */
40 void * (*alloc_cubedata)(void *);
41 void (*copy_cubedata)(void *, void *, void *);
42 void (*free_cubedata)(void *, void *);
43 void (*invert_cube)(void *, void *);
44 bool (*is_solved)(void *, void *);
45 void (*apply_move)(void *, void *, Move);
46/* TODO: remove dependence on Cube, preparation should be done before */
47 void * (*prepare_cube)(void *, Cube *);
48};
49
50void dfs(DfsArg *, Solver *, Threader *);
51/* TODO: remove dependence on Cube, preparation should be done before */
52AlgList * solve(Cube *, SolveOptions *, Solver **, Threader *);
53 10
54#endif 11#endif

Generated with cgit - Back to sebastiano.tronto.net