diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-07-03 17:15:24 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-07-03 17:15:24 +0200 |
| commit | 425eee24421bf0a19c7e0199d2e3ecba3318c8f4 (patch) | |
| tree | e6e84901c00593da4f165584e19878b3f6d34b60 /shell.c | |
| parent | 4a16da26dacdb37b9ef8d3d11e10ecb94b0cf396 (diff) | |
| download | nissy-core-425eee24421bf0a19c7e0199d2e3ecba3318c8f4.tar.gz nissy-core-425eee24421bf0a19c7e0199d2e3ecba3318c8f4.zip | |
Preparing for table stats
Diffstat (limited to 'shell.c')
| -rw-r--r-- | shell.c | 32 |
1 files changed, 32 insertions, 0 deletions
| @@ -29,6 +29,7 @@ typedef struct { | |||
| 29 | int8_t maxmoves; | 29 | int8_t maxmoves; |
| 30 | int8_t optimal; | 30 | int8_t optimal; |
| 31 | int64_t maxsolutions; | 31 | int64_t maxsolutions; |
| 32 | uint8_t id[16]; | ||
| 32 | } args_t; | 33 | } args_t; |
| 33 | 34 | ||
| 34 | static void print_cube_result(int64_t, char [static 22]); | 35 | static void print_cube_result(int64_t, char [static 22]); |
| @@ -40,6 +41,7 @@ static int64_t applymoves_exec(args_t *); | |||
| 40 | static int64_t applytrans_exec(args_t *); | 41 | static int64_t applytrans_exec(args_t *); |
| 41 | static int64_t frommoves_exec(args_t *); | 42 | static int64_t frommoves_exec(args_t *); |
| 42 | static int64_t convert_exec(args_t *); | 43 | static int64_t convert_exec(args_t *); |
| 44 | static int64_t gencube_exec(args_t *); | ||
| 43 | static int64_t datasize_exec(args_t *); | 45 | static int64_t datasize_exec(args_t *); |
| 44 | static int64_t gendata_exec(args_t *); | 46 | static int64_t gendata_exec(args_t *); |
| 45 | static int64_t solve_exec(args_t *); | 47 | static int64_t solve_exec(args_t *); |
| @@ -63,6 +65,7 @@ static bool set_minmoves(int, char **, args_t *); | |||
| 63 | static bool set_maxmoves(int, char **, args_t *); | 65 | static bool set_maxmoves(int, char **, args_t *); |
| 64 | static bool set_optimal(int, char **, args_t *); | 66 | static bool set_optimal(int, char **, args_t *); |
| 65 | static bool set_maxsolutions(int, char **, args_t *); | 67 | static bool set_maxsolutions(int, char **, args_t *); |
| 68 | static bool set_id(int, char **, args_t *); | ||
| 66 | 69 | ||
| 67 | #define COMMAND(N, E) { .name = N, .exec = E } | 70 | #define COMMAND(N, E) { .name = N, .exec = E } |
| 68 | struct { | 71 | struct { |
| @@ -75,6 +78,7 @@ struct { | |||
| 75 | COMMAND("applytrans", applytrans_exec), | 78 | COMMAND("applytrans", applytrans_exec), |
| 76 | COMMAND("frommoves", frommoves_exec), | 79 | COMMAND("frommoves", frommoves_exec), |
| 77 | COMMAND("convert", convert_exec), | 80 | COMMAND("convert", convert_exec), |
| 81 | COMMAND("gencube", gencube_exec), | ||
| 78 | COMMAND("datasize", datasize_exec), | 82 | COMMAND("datasize", datasize_exec), |
| 79 | COMMAND("gendata", gendata_exec), | 83 | COMMAND("gendata", gendata_exec), |
| 80 | COMMAND("solve", solve_exec), | 84 | COMMAND("solve", solve_exec), |
| @@ -102,6 +106,7 @@ struct { | |||
| 102 | OPTION("-M", 1, set_maxmoves), | 106 | OPTION("-M", 1, set_maxmoves), |
| 103 | OPTION("-O", 1, set_optimal), | 107 | OPTION("-O", 1, set_optimal), |
| 104 | OPTION("-n", 1, set_maxsolutions), | 108 | OPTION("-n", 1, set_maxsolutions), |
| 109 | OPTION("-id", 16, set_id), | ||
| 105 | OPTION(NULL, 0, NULL) | 110 | OPTION(NULL, 0, NULL) |
| 106 | }; | 111 | }; |
| 107 | 112 | ||
| @@ -215,6 +220,18 @@ convert_exec(args_t *args) | |||
| 215 | } | 220 | } |
| 216 | 221 | ||
| 217 | static int64_t | 222 | static int64_t |
| 223 | gencube_exec(args_t *args) | ||
| 224 | { | ||
| 225 | char result[PRINTCUBE_BUFFER_SIZE]; | ||
| 226 | int64_t ret; | ||
| 227 | |||
| 228 | ret = nissy_gencube(args->id, args->str_options, result); | ||
| 229 | print_str_result(ret, result); | ||
| 230 | |||
| 231 | return ret; | ||
| 232 | } | ||
| 233 | |||
| 234 | static int64_t | ||
| 218 | datasize_exec(args_t *args) | 235 | datasize_exec(args_t *args) |
| 219 | { | 236 | { |
| 220 | int64_t ret; | 237 | int64_t ret; |
| @@ -551,6 +568,21 @@ set_maxsolutions(int argc, char **argv, args_t *args) | |||
| 551 | return parse_int64(argv[0], &args->maxsolutions); | 568 | return parse_int64(argv[0], &args->maxsolutions); |
| 552 | } | 569 | } |
| 553 | 570 | ||
| 571 | static bool | ||
| 572 | set_id(int argc, char **argv, args_t *args) | ||
| 573 | { | ||
| 574 | int i; | ||
| 575 | int64_t n; | ||
| 576 | |||
| 577 | for (i = 0; i < 16; i++) { | ||
| 578 | if (!parse_int64(argv[i], &n)) | ||
| 579 | return false; | ||
| 580 | args->id[i] = (uint8_t)n; | ||
| 581 | } | ||
| 582 | |||
| 583 | return true; | ||
| 584 | } | ||
| 585 | |||
| 554 | void log_stderr(const char *str, ...) | 586 | void log_stderr(const char *str, ...) |
| 555 | { | 587 | { |
| 556 | va_list args; | 588 | va_list args; |
