diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2025-08-07 17:13:49 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2025-08-07 17:13:49 +0200 |
| commit | d1747a694ea65a463d6e9b6f7408ae969a8bfff5 (patch) | |
| tree | 3cc9cab0b71a3c08851a2676cf5dde392444627a /src/solvers/dispatch.h | |
| parent | 22282840b74d434b79e87d82e4ea075baa82a51c (diff) | |
| download | nissy-core-d1747a694ea65a463d6e9b6f7408ae969a8bfff5.tar.gz nissy-core-d1747a694ea65a463d6e9b6f7408ae969a8bfff5.zip | |
Added solver aliases
Diffstat (limited to '')
| -rw-r--r-- | src/solvers/dispatch.h | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/src/solvers/dispatch.h b/src/solvers/dispatch.h index 013468c..7e647ce 100644 --- a/src/solvers/dispatch.h +++ b/src/solvers/dispatch.h | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | typedef struct { | 1 | typedef struct { |
| 2 | const char *solvername; | ||
| 2 | const char *prefix; | 3 | const char *prefix; |
| 3 | long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]); | 4 | long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]); |
| 4 | long long (*gendata)( | 5 | long long (*gendata)( |
| @@ -12,7 +13,7 @@ typedef struct { | |||
| 12 | int (*)(void *), void *); | 13 | int (*)(void *), void *); |
| 13 | } solver_dispatch_t; | 14 | } solver_dispatch_t; |
| 14 | 15 | ||
| 15 | STATIC solver_dispatch_t *match_solver(const char *); | 16 | STATIC solver_dispatch_t match_solver(const char *); |
| 16 | 17 | ||
| 17 | solver_dispatch_t solver_dispatchers[] = { | 18 | solver_dispatch_t solver_dispatchers[] = { |
| 18 | { | 19 | { |
| @@ -41,20 +42,51 @@ solver_dispatch_t solver_dispatchers[] = { | |||
| 41 | } | 42 | } |
| 42 | }; | 43 | }; |
| 43 | 44 | ||
| 44 | STATIC solver_dispatch_t * | 45 | const char *solver_aliases[][2] = { |
| 46 | { "optimal", "h48h7k2" }, | ||
| 47 | { "eofb", "coord_EO_UF" }, | ||
| 48 | { "eorl", "coord_EO_UR" }, | ||
| 49 | { "eoud", "coord_EO_FD" }, | ||
| 50 | { "drud", "coord_DR_UF" }, | ||
| 51 | { "drrl", "coord_DR_RF" }, | ||
| 52 | { "drfb", "coord_DR_FD" }, | ||
| 53 | { "drudslice", "coord_DRSLICE_UF" }, | ||
| 54 | { "drrlslice", "coord_DRSLICE_LF" }, | ||
| 55 | { "drfbslice", "coord_DRSLICE_BU" }, | ||
| 56 | { "drud-eofb", "coord_DREO_UF" }, | ||
| 57 | { "drrl-eofb", "coord_DREO_RF" }, | ||
| 58 | { "drud-eorl", "coord_DREO_UR" }, | ||
| 59 | { "drfb-eorl", "coord_DREO_RU" }, | ||
| 60 | { "drrl-eoud", "coord_DREO_FR" }, | ||
| 61 | { "drfb-eoud", "coord_DREO_FD" }, | ||
| 62 | { "drudfin", "mcoord_DRFIN_UF" }, | ||
| 63 | { "drrlfin", "mcoord_DRFIN_LF" }, | ||
| 64 | { "drfbfin", "mcoord_DRFIN_BU" }, | ||
| 65 | { "htr-drud", "coord_HTR_UF" }, | ||
| 66 | { "htr-drrl", "coord_HTR_LF" }, | ||
| 67 | { "htr-drfb", "coord_HTR_BU" }, | ||
| 68 | { NULL, NULL } | ||
| 69 | }; | ||
| 70 | |||
| 71 | STATIC solver_dispatch_t | ||
| 45 | match_solver(const char *name) | 72 | match_solver(const char *name) |
| 46 | { | 73 | { |
| 47 | const char *prefix; | 74 | const char *prefix; |
| 75 | solver_dispatch_t ret; | ||
| 48 | int i; | 76 | int i; |
| 49 | 77 | ||
| 50 | if (name == NULL) | 78 | for (i = 0; solver_aliases[i][0] != NULL; i++) |
| 51 | return NULL; | 79 | if (!strcmp(name, solver_aliases[i][0])) |
| 80 | return match_solver(solver_aliases[i][1]); | ||
| 52 | 81 | ||
| 53 | for (i = 0; solver_dispatchers[i].prefix != NULL; i++) { | 82 | for (i = 0; solver_dispatchers[i].prefix != NULL; i++) { |
| 54 | prefix = solver_dispatchers[i].prefix; | 83 | prefix = solver_dispatchers[i].prefix; |
| 55 | if (!strncmp(name, prefix, strlen(prefix))) | 84 | if (!strncmp(name, prefix, strlen(prefix))) { |
| 56 | return &solver_dispatchers[i]; | 85 | ret = solver_dispatchers[i]; |
| 86 | ret.solvername = name; | ||
| 87 | return ret; | ||
| 88 | } | ||
| 57 | } | 89 | } |
| 58 | 90 | ||
| 59 | return NULL; | 91 | return solver_dispatchers[i]; |
| 60 | } | 92 | } |
