From d1747a694ea65a463d6e9b6f7408ae969a8bfff5 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Thu, 7 Aug 2025 17:13:49 +0200 Subject: Added solver aliases --- src/solvers/dispatch.h | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) (limited to 'src/solvers/dispatch.h') 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 @@ typedef struct { + const char *solvername; const char *prefix; long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]); long long (*gendata)( @@ -12,7 +13,7 @@ typedef struct { int (*)(void *), void *); } solver_dispatch_t; -STATIC solver_dispatch_t *match_solver(const char *); +STATIC solver_dispatch_t match_solver(const char *); solver_dispatch_t solver_dispatchers[] = { { @@ -41,20 +42,51 @@ solver_dispatch_t solver_dispatchers[] = { } }; -STATIC solver_dispatch_t * +const char *solver_aliases[][2] = { + { "optimal", "h48h7k2" }, + { "eofb", "coord_EO_UF" }, + { "eorl", "coord_EO_UR" }, + { "eoud", "coord_EO_FD" }, + { "drud", "coord_DR_UF" }, + { "drrl", "coord_DR_RF" }, + { "drfb", "coord_DR_FD" }, + { "drudslice", "coord_DRSLICE_UF" }, + { "drrlslice", "coord_DRSLICE_LF" }, + { "drfbslice", "coord_DRSLICE_BU" }, + { "drud-eofb", "coord_DREO_UF" }, + { "drrl-eofb", "coord_DREO_RF" }, + { "drud-eorl", "coord_DREO_UR" }, + { "drfb-eorl", "coord_DREO_RU" }, + { "drrl-eoud", "coord_DREO_FR" }, + { "drfb-eoud", "coord_DREO_FD" }, + { "drudfin", "mcoord_DRFIN_UF" }, + { "drrlfin", "mcoord_DRFIN_LF" }, + { "drfbfin", "mcoord_DRFIN_BU" }, + { "htr-drud", "coord_HTR_UF" }, + { "htr-drrl", "coord_HTR_LF" }, + { "htr-drfb", "coord_HTR_BU" }, + { NULL, NULL } +}; + +STATIC solver_dispatch_t match_solver(const char *name) { const char *prefix; + solver_dispatch_t ret; int i; - if (name == NULL) - return NULL; + for (i = 0; solver_aliases[i][0] != NULL; i++) + if (!strcmp(name, solver_aliases[i][0])) + return match_solver(solver_aliases[i][1]); for (i = 0; solver_dispatchers[i].prefix != NULL; i++) { prefix = solver_dispatchers[i].prefix; - if (!strncmp(name, prefix, strlen(prefix))) - return &solver_dispatchers[i]; + if (!strncmp(name, prefix, strlen(prefix))) { + ret = solver_dispatchers[i]; + ret.solvername = name; + return ret; + } } - return NULL; + return solver_dispatchers[i]; } -- cgit v1.3