aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--shell/shell.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/shell/shell.c b/shell/shell.c
index a9a1bc7..8800094 100644
--- a/shell/shell.c
+++ b/shell/shell.c
@@ -18,6 +18,7 @@
18#define FLAG_COMMAND "-command" 18#define FLAG_COMMAND "-command"
19#define FLAG_STR_CUBE "-cubestr" 19#define FLAG_STR_CUBE "-cubestr"
20#define FLAG_MOVES "-moves" 20#define FLAG_MOVES "-moves"
21#define FLAG_MOVES2 "-moves2"
21#define FLAG_TRANS "-trans" 22#define FLAG_TRANS "-trans"
22#define FLAG_SOLVER "-solver" 23#define FLAG_SOLVER "-solver"
23#define FLAG_NISSTYPE "-nisstype" 24#define FLAG_NISSTYPE "-nisstype"
@@ -39,6 +40,7 @@ typedef struct {
39 char *str_command; 40 char *str_command;
40 char *str_cube; 41 char *str_cube;
41 char *str_moves; 42 char *str_moves;
43 char *str_moves2;
42 char *str_trans; 44 char *str_trans;
43 char *str_solver; 45 char *str_solver;
44 char *str_nisstype; 46 char *str_nisstype;
@@ -59,6 +61,7 @@ static int64_t gendata_exec(args_t *);
59static int64_t solve_exec(args_t *); 61static int64_t solve_exec(args_t *);
60static int64_t solve_scramble_exec(args_t *); 62static int64_t solve_scramble_exec(args_t *);
61static int64_t countmoves_exec(args_t *); 63static int64_t countmoves_exec(args_t *);
64static int64_t comparemoves_exec(args_t *);
62static int64_t help_exec(args_t *); 65static int64_t help_exec(args_t *);
63 66
64static int parse_args(int, char **, args_t *); 67static int parse_args(int, char **, args_t *);
@@ -69,6 +72,7 @@ static bool set_cube(int, char **, args_t *);
69static bool set_str_command(int, char **, args_t *); 72static bool set_str_command(int, char **, args_t *);
70static bool set_str_cube(int, char **, args_t *); 73static bool set_str_cube(int, char **, args_t *);
71static bool set_str_moves(int, char **, args_t *); 74static bool set_str_moves(int, char **, args_t *);
75static bool set_str_moves2(int, char **, args_t *);
72static bool set_str_trans(int, char **, args_t *); 76static bool set_str_trans(int, char **, args_t *);
73static bool set_str_solver(int, char **, args_t *); 77static bool set_str_solver(int, char **, args_t *);
74static bool set_str_nisstype(int, char **, args_t *); 78static bool set_str_nisstype(int, char **, args_t *);
@@ -91,6 +95,7 @@ struct {
91 OPTION(FLAG_COMMAND, 1, set_str_command), 95 OPTION(FLAG_COMMAND, 1, set_str_command),
92 OPTION(FLAG_STR_CUBE, 1, set_str_cube), 96 OPTION(FLAG_STR_CUBE, 1, set_str_cube),
93 OPTION(FLAG_MOVES, 1, set_str_moves), 97 OPTION(FLAG_MOVES, 1, set_str_moves),
98 OPTION(FLAG_MOVES2, 1, set_str_moves2),
94 OPTION(FLAG_TRANS, 1, set_str_trans), 99 OPTION(FLAG_TRANS, 1, set_str_trans),
95 OPTION(FLAG_SOLVER, 1, set_str_solver), 100 OPTION(FLAG_SOLVER, 1, set_str_solver),
96 OPTION(FLAG_NISSTYPE, 1, set_str_nisstype), 101 OPTION(FLAG_NISSTYPE, 1, set_str_nisstype),
@@ -185,6 +190,13 @@ struct {
185 countmoves_exec 190 countmoves_exec
186 ), 191 ),
187 COMMAND( 192 COMMAND(
193 "compare",
194 "compare " FLAG_MOVES " MOVES " FLAG_MOVES2 " MOVES2",
195 "Compare the two move sequences."
196 INFO_MOVESFORMAT,
197 comparemoves_exec
198 ),
199 COMMAND(
188 "help", 200 "help",
189 "help [" FLAG_COMMAND " COMMAND]", 201 "help [" FLAG_COMMAND " COMMAND]",
190 "If no COMMAND is specified, prints some generic information " 202 "If no COMMAND is specified, prints some generic information "
@@ -476,6 +488,29 @@ countmoves_exec(args_t *args)
476} 488}
477 489
478static int64_t 490static int64_t
491comparemoves_exec(args_t *args)
492{
493 long long cmp;
494
495 if ((cmp = nissy_comparemoves(args->str_moves, args->str_moves2)) < 0)
496 return cmp;
497
498 switch (cmp) {
499 case NISSY_COMPARE_MOVES_EQUAL:
500 printf("The two move sequences are equal\n");
501 break;
502 case NISSY_COMPARE_MOVES_DIFFERENT:
503 printf("The two move sequences are different\n");
504 break;
505 default:
506 printf("Error: unknown case\n");
507 return -1;
508 }
509
510 return 0;
511}
512
513static int64_t
479help_exec(args_t *args) 514help_exec(args_t *args)
480{ 515{
481 int i; 516 int i;
@@ -512,6 +547,7 @@ parse_args(int argc, char **argv, args_t *args)
512 .cube = "", 547 .cube = "",
513 .str_cube = "", 548 .str_cube = "",
514 .str_moves = "", 549 .str_moves = "",
550 .str_moves2 = "",
515 .str_trans = "", 551 .str_trans = "",
516 .str_solver = "", 552 .str_solver = "",
517 .str_nisstype = "", 553 .str_nisstype = "",
@@ -632,6 +668,14 @@ set_str_moves(int argc, char **argv, args_t *args)
632} 668}
633 669
634static bool 670static bool
671set_str_moves2(int argc, char **argv, args_t *args)
672{
673 args->str_moves2 = argv[0];
674
675 return true;
676}
677
678static bool
635set_str_trans(int argc, char **argv, args_t *args) 679set_str_trans(int argc, char **argv, args_t *args)
636{ 680{
637 args->str_trans = argv[0]; 681 args->str_trans = argv[0];

Generated with cgit - Back to sebastiano.tronto.net