aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/coord
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-03-12 16:40:07 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2025-03-12 16:40:07 +0100
commitbfb7b1ab9d2c85a256c42c006060ffe7c2652638 (patch)
tree08cada9caf1aa3c7d913c81f2f4d7f7a89c84a95 /src/solvers/coord
parent45eddc73d44f59d82fcf93e2213bb972c6b7c86a (diff)
downloadnissy-core-bfb7b1ab9d2c85a256c42c006060ffe7c2652638.tar.gz
nissy-core-bfb7b1ab9d2c85a256c42c006060ffe7c2652638.zip
Revert API change
Diffstat (limited to 'src/solvers/coord')
-rw-r--r--src/solvers/coord/common.h17
-rw-r--r--src/solvers/coord/gendata.h2
-rw-r--r--src/solvers/coord/solve.h16
3 files changed, 25 insertions, 10 deletions
diff --git a/src/solvers/coord/common.h b/src/solvers/coord/common.h
index d827665..f21a903 100644
--- a/src/solvers/coord/common.h
+++ b/src/solvers/coord/common.h
@@ -6,6 +6,7 @@ coord_t *all_coordinates[] = {
6STATIC void append_coord_name(const coord_t *, char *); 6STATIC void append_coord_name(const coord_t *, char *);
7STATIC coord_t *parse_coord(const char *, int); 7STATIC coord_t *parse_coord(const char *, int);
8STATIC uint8_t parse_axis(const char *, int); 8STATIC uint8_t parse_axis(const char *, int);
9STATIC void parse_coord_and_axis(const char *, int, coord_t **, uint8_t *);
9 10
10STATIC void 11STATIC void
11append_coord_name(const coord_t *coord, char *str) 12append_coord_name(const coord_t *coord, char *str)
@@ -44,3 +45,19 @@ parse_axis(const char *axis, int n)
44 45
45 return UINT8_ERROR; 46 return UINT8_ERROR;
46} 47}
48
49STATIC void
50parse_coord_and_axis(const char *str, int n, coord_t **coord, uint8_t *axis)
51{
52 int i;
53
54 for (i = 0; i < n; i++)
55 if (str[i] == '_')
56 break;
57
58 if (coord != NULL)
59 *coord = parse_coord(str, i);
60
61 if (axis != NULL)
62 *axis = i == n ? UINT8_ERROR : parse_axis(str+i+1, n-i-1);
63}
diff --git a/src/solvers/coord/gendata.h b/src/solvers/coord/gendata.h
index d366466..9512b93 100644
--- a/src/solvers/coord/gendata.h
+++ b/src/solvers/coord/gendata.h
@@ -9,7 +9,7 @@ gendata_coord_dispatch(const char *coordstr, void *buf)
9{ 9{
10 coord_t *coord; 10 coord_t *coord;
11 11
12 coord = parse_coord(coordstr, strlen(coordstr)); 12 parse_coord_and_axis(coordstr, strlen(coordstr), &coord, NULL);
13 13
14 if (coord == NULL) { 14 if (coord == NULL) {
15 LOG("Could not parse coordinate '%s'\n", coord); 15 LOG("Could not parse coordinate '%s'\n", coord);
diff --git a/src/solvers/coord/solve.h b/src/solvers/coord/solve.h
index 190ac1f..75c6a4e 100644
--- a/src/solvers/coord/solve.h
+++ b/src/solvers/coord/solve.h
@@ -20,9 +20,8 @@ typedef struct {
20 20
21STATIC int64_t solve_coord(cube_t, coord_t *, uint8_t, uint8_t, uint8_t, 21STATIC int64_t solve_coord(cube_t, coord_t *, uint8_t, uint8_t, uint8_t,
22 uint8_t, uint64_t, int, int, uint64_t, const void *, uint64_t, char *); 22 uint8_t, uint64_t, int, int, uint64_t, const void *, uint64_t, char *);
23STATIC int64_t solve_coord_dispatch(cube_t, const char *, const char *, 23STATIC int64_t solve_coord_dispatch(cube_t, const char *, uint8_t, uint8_t,
24 uint8_t, uint8_t, uint8_t, uint64_t, int, int, uint64_t, const void *, 24 uint8_t, uint64_t, int, int, uint64_t, const void *, uint64_t, char *);
25 uint64_t, char *);
26STATIC bool solve_coord_appendchar(char *, uint64_t, uint64_t *, char); 25STATIC bool solve_coord_appendchar(char *, uint64_t, uint64_t *, char);
27STATIC int64_t solve_coord_appendsolution(dfsarg_solve_coord_t *); 26STATIC int64_t solve_coord_appendsolution(dfsarg_solve_coord_t *);
28STATIC int64_t solve_coord_dfs(dfsarg_solve_coord_t *); 27STATIC int64_t solve_coord_dfs(dfsarg_solve_coord_t *);
@@ -123,8 +122,7 @@ solve_coord_dfs(dfsarg_solve_coord_t *arg)
123STATIC int64_t 122STATIC int64_t
124solve_coord_dispatch( 123solve_coord_dispatch(
125 cube_t cube, 124 cube_t cube,
126 const char *coordstr, 125 const char *coord_and_axis,
127 const char *options,
128 uint8_t nissflag, 126 uint8_t nissflag,
129 uint8_t minmoves, 127 uint8_t minmoves,
130 uint8_t maxmoves, 128 uint8_t maxmoves,
@@ -140,16 +138,16 @@ solve_coord_dispatch(
140 coord_t *coord; 138 coord_t *coord;
141 uint8_t axis; 139 uint8_t axis;
142 140
143 coord = parse_coord(coordstr, strlen(coordstr)); 141 parse_coord_and_axis(
144 axis = parse_axis(options, strlen(options)); 142 coord_and_axis, strlen(coord_and_axis), &coord, &axis);
145 143
146 if (coord == NULL) { 144 if (coord == NULL) {
147 LOG("Could not parse coordinate '%s'\n", coordstr); 145 LOG("Could not parse coordinate from '%s'\n", coord_and_axis);
148 return NISSY_ERROR_INVALID_SOLVER; 146 return NISSY_ERROR_INVALID_SOLVER;
149 } 147 }
150 148
151 if (axis == UINT8_ERROR) { 149 if (axis == UINT8_ERROR) {
152 LOG("Could not parse axis from options '%s'\n", options); 150 LOG("Could not parse axis from '%s'\n", coord_and_axis);
153 return NISSY_ERROR_INVALID_SOLVER; 151 return NISSY_ERROR_INVALID_SOLVER;
154 } 152 }
155 153

Generated with cgit - Back to sebastiano.tronto.net