diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2025-03-12 16:40:07 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2025-03-12 16:40:07 +0100 |
| commit | bfb7b1ab9d2c85a256c42c006060ffe7c2652638 (patch) | |
| tree | 08cada9caf1aa3c7d913c81f2f4d7f7a89c84a95 /src | |
| parent | 45eddc73d44f59d82fcf93e2213bb972c6b7c86a (diff) | |
| download | nissy-core-bfb7b1ab9d2c85a256c42c006060ffe7c2652638.tar.gz nissy-core-bfb7b1ab9d2c85a256c42c006060ffe7c2652638.zip | |
Revert API change
Diffstat (limited to 'src')
| -rw-r--r-- | src/nissy.c | 4 | ||||
| -rw-r--r-- | src/nissy.h | 4 | ||||
| -rw-r--r-- | src/solvers/coord/common.h | 17 | ||||
| -rw-r--r-- | src/solvers/coord/gendata.h | 2 | ||||
| -rw-r--r-- | src/solvers/coord/solve.h | 16 |
5 files changed, 26 insertions, 17 deletions
diff --git a/src/nissy.c b/src/nissy.c index ed1d3f4..eb483a0 100644 --- a/src/nissy.c +++ b/src/nissy.c | |||
| @@ -503,7 +503,6 @@ long long | |||
| 503 | nissy_solve( | 503 | nissy_solve( |
| 504 | const char cube[static NISSY_SIZE_B32], | 504 | const char cube[static NISSY_SIZE_B32], |
| 505 | const char *solver, | 505 | const char *solver, |
| 506 | const char *options, | ||
| 507 | unsigned nissflag, | 506 | unsigned nissflag, |
| 508 | unsigned minmoves, | 507 | unsigned minmoves, |
| 509 | unsigned maxmoves, | 508 | unsigned maxmoves, |
| @@ -569,11 +568,10 @@ nissy_solve( | |||
| 569 | parse_ret = parse_h48_solver(solver, &h, &k); | 568 | parse_ret = parse_h48_solver(solver, &h, &k); |
| 570 | if (parse_ret != NISSY_OK) | 569 | if (parse_ret != NISSY_OK) |
| 571 | return parse_ret; | 570 | return parse_ret; |
| 572 | /* TODO give warning if options is not NULL or empty? */ | ||
| 573 | return solve_h48(c, minmoves, maxmoves, maxsols, | 571 | return solve_h48(c, minmoves, maxmoves, maxsols, |
| 574 | opt, t, data_size, data, sols_size, sols, stats); | 572 | opt, t, data_size, data, sols_size, sols, stats); |
| 575 | } else if (!strncmp(solver, "coord_", 6)) { | 573 | } else if (!strncmp(solver, "coord_", 6)) { |
| 576 | return solve_coord_dispatch(c, solver + 6, options, nissflag, | 574 | return solve_coord_dispatch(c, solver + 6, nissflag, |
| 577 | minmoves, maxmoves, maxsols, opt, t, data_size, data, | 575 | minmoves, maxmoves, maxsols, opt, t, data_size, data, |
| 578 | sols_size, sols); | 576 | sols_size, sols); |
| 579 | } else { | 577 | } else { |
diff --git a/src/nissy.h b/src/nissy.h index 9c26292..6c5a3e6 100644 --- a/src/nissy.h +++ b/src/nissy.h | |||
| @@ -257,9 +257,6 @@ Solve the given cube using the given solver and options. | |||
| 257 | Parameters: | 257 | Parameters: |
| 258 | cube - The cube to solver, in B32 format. | 258 | cube - The cube to solver, in B32 format. |
| 259 | solver - The name of the solver. | 259 | solver - The name of the solver. |
| 260 | options - Extra options for the solver. Some solver require additional | ||
| 261 | parameters, some do not. For example, a coordinate solver | ||
| 262 | may require an "axis" (UD, FB, RL) as a parameter. | ||
| 263 | nissflag - The flags for NISS (linear, inverse, mixed, or combinations). | 260 | nissflag - The flags for NISS (linear, inverse, mixed, or combinations). |
| 264 | minmoves - The minimum number of moves for a solution. | 261 | minmoves - The minimum number of moves for a solution. |
| 265 | maxmoves - The maximum number of moves for a solution. | 262 | maxmoves - The maximum number of moves for a solution. |
| @@ -293,7 +290,6 @@ long long | |||
| 293 | nissy_solve( | 290 | nissy_solve( |
| 294 | const char cube[static NISSY_SIZE_B32], | 291 | const char cube[static NISSY_SIZE_B32], |
| 295 | const char *solver, | 292 | const char *solver, |
| 296 | const char *options, | ||
| 297 | unsigned nissflag, | 293 | unsigned nissflag, |
| 298 | unsigned minmoves, | 294 | unsigned minmoves, |
| 299 | unsigned maxmoves, | 295 | unsigned maxmoves, |
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[] = { | |||
| 6 | STATIC void append_coord_name(const coord_t *, char *); | 6 | STATIC void append_coord_name(const coord_t *, char *); |
| 7 | STATIC coord_t *parse_coord(const char *, int); | 7 | STATIC coord_t *parse_coord(const char *, int); |
| 8 | STATIC uint8_t parse_axis(const char *, int); | 8 | STATIC uint8_t parse_axis(const char *, int); |
| 9 | STATIC void parse_coord_and_axis(const char *, int, coord_t **, uint8_t *); | ||
| 9 | 10 | ||
| 10 | STATIC void | 11 | STATIC void |
| 11 | append_coord_name(const coord_t *coord, char *str) | 12 | append_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 | |||
| 49 | STATIC void | ||
| 50 | parse_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 | ||
| 21 | STATIC int64_t solve_coord(cube_t, coord_t *, uint8_t, uint8_t, uint8_t, | 21 | STATIC 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 *); |
| 23 | STATIC int64_t solve_coord_dispatch(cube_t, const char *, const char *, | 23 | STATIC 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 *); | ||
| 26 | STATIC bool solve_coord_appendchar(char *, uint64_t, uint64_t *, char); | 25 | STATIC bool solve_coord_appendchar(char *, uint64_t, uint64_t *, char); |
| 27 | STATIC int64_t solve_coord_appendsolution(dfsarg_solve_coord_t *); | 26 | STATIC int64_t solve_coord_appendsolution(dfsarg_solve_coord_t *); |
| 28 | STATIC int64_t solve_coord_dfs(dfsarg_solve_coord_t *); | 27 | STATIC int64_t solve_coord_dfs(dfsarg_solve_coord_t *); |
| @@ -123,8 +122,7 @@ solve_coord_dfs(dfsarg_solve_coord_t *arg) | |||
| 123 | STATIC int64_t | 122 | STATIC int64_t |
| 124 | solve_coord_dispatch( | 123 | solve_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 | ||
