aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-06-11 07:48:58 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2024-06-11 07:48:58 +0200
commitc89c5a1832354d656757c5aff49018d0313838e0 (patch)
treec01d1cedfcdf850f2df66a209a7e4c04c247293f /src
parent2ec81876eb59bb3e7c544774aa222988c1f574c4 (diff)
downloadnissy-core-c89c5a1832354d656757c5aff49018d0313838e0.tar.gz
nissy-core-c89c5a1832354d656757c5aff49018d0313838e0.zip
Cleaned up cube.h
Diffstat (limited to 'src')
-rw-r--r--src/cube.h18
-rw-r--r--src/cube_public.h111
-rw-r--r--src/io_cube.h4
3 files changed, 107 insertions, 26 deletions
diff --git a/src/cube.h b/src/cube.h
index b5f4211..6b68f00 100644
--- a/src/cube.h
+++ b/src/cube.h
@@ -1,6 +1,7 @@
1/* 1/*
2All the functions below return 0 in case of success and a positive number 2All the functions below return 0 in case of success and a positive
3in case of error. See (TODO: documentation) for details. 3number in case of error, unless otherwise specified. See (TODO:
4documentation) for details.
4*/ 5*/
5 6
6int nissy_compose( 7int nissy_compose(
@@ -43,13 +44,21 @@ int nissy_writecube(
43 char *result 44 char *result
44); 45);
45 46
46int nissy_gendata( 47int nissy_convertcube(
48 const char *format_in,
49 const char *format_out,
50 const char *cube_string,
51 char *result
52);
53
54/* Returns the number of bytes written, or -1 in case of error */
55int64_t nissy_gendata(
47 const char *solver, 56 const char *solver,
48 const char *options, 57 const char *options,
49 void *generated_data, 58 void *generated_data,
50 int64_t *generated_bytes
51); 59);
52 60
61/* Returns the number of solutions found, or -1 in case of error */
53int nissy_solve( 62int nissy_solve(
54 const char cube[static 22], 63 const char cube[static 22],
55 const char *solver, 64 const char *solver,
@@ -61,5 +70,4 @@ int nissy_solve(
61 int8_t optimal, 70 int8_t optimal,
62 const void *data, 71 const void *data,
63 char *solutions, 72 char *solutions,
64 int *n_solutions
65); 73);
diff --git a/src/cube_public.h b/src/cube_public.h
index ade8778..1b0cc14 100644
--- a/src/cube_public.h
+++ b/src/cube_public.h
@@ -1,13 +1,15 @@
1int check_error(cube_t, char [static 22]); 1int write_result(cube_t, char [static 22]);
2 2
3int 3int
4check_error(cube_t cube, char result[static 22]) 4write_result(cube_t cube, char result[static 22])
5{ 5{
6 if (!isconsistent(cube)) { 6 if (!isconsistent(cube)) {
7 writecube("B32", zero, result); 7 writecube("B32", zero, result);
8 return 2; 8 return 2;
9 } 9 }
10 10
11 writecube("B32", cube, result);
12
11 return issolvable(cube) ? 0 : 1; 13 return issolvable(cube) ? 0 : 1;
12} 14}
13 15
@@ -22,54 +24,121 @@ nissy_compose(
22 24
23 c = readcube("B32", cube); 25 c = readcube("B32", cube);
24 p = readcube("B32", permutation); 26 p = readcube("B32", permutation);
25
26 res = compose(c, p); 27 res = compose(c, p);
27 28
28 return check_error(res, result); 29 return write_result(res, result);
29} 30}
30 31
31int 32int
32nissy_inverse( 33nissy_inverse(
33 const char cube[static 22], 34 const char cube[static 22],
34 char result[static 22] 35 char result[static 22]
35); 36)
37{
38 cube_t c, res;
39
40 c = readcube("B32", cube);
41 res = inverse(c);
42
43 return write_result(res, result);
44}
36 45
37int nissy_applymoves( 46int
47nissy_applymoves(
38 const char cube[static 22], 48 const char cube[static 22],
39 const char *moves, 49 const char *moves,
40 char result[static 22] 50 char result[static 22]
41); 51)
52{
53 cube_t c, res;
42 54
43int nissy_applytrans( 55 c = readcube("B32", cube);
56 res = applymoves(c, moves);
57
58 return write_result(res, result);
59}
60
61int
62nissy_applytrans(
44 const char cube[static 22], 63 const char cube[static 22],
45 const char *transformation, 64 const char *transformation,
46 char result[static 22] 65 char result[static 22]
47); 66)
67{
68 cube_t c, res;
48 69
49int nissy_frommoves( 70 c = readcube("B32", cube);
71 res = applytrans(c, transformation);
72
73 return write_result(res, result);
74}
75
76int
77nissy_frommoves(
50 const char *moves, 78 const char *moves,
51 char result[static 22] 79 char result[static 22]
52); 80)
81{
82 cube_t res;
83
84 res = applymoves(solved, moves);
53 85
54int nissy_readcube( 86 return write_result(res, result);
87}
88
89int
90nissy_readcube(
55 const char *format, 91 const char *format,
56 const char *cube_string, 92 const char *cube_string,
57 char result[static 22] 93 char result[static 22]
58); 94)
95{
96 cube_t res;
97
98 res = readcube(format, cube_string);
99
100 return write_result(res, result);
101}
102
103int
104nissy_convertcube(
105 const char *format_in,
106 const char *format_out,
107 const char *cube_string,
108 char *result
109)
110{
111 cube_t c;
59 112
60int nissy_writecube( 113 c = readcube(format_in, cube_string);
114 writecube(format_out, c, result);
115
116 return isconsistent(c) ? 0 : 2;
117}
118
119int
120nissy_writecube(
61 const char *format, 121 const char *format,
62 const char cube[static 22], 122 const char cube[static 22],
63 char *result 123 char *result
64); 124)
125{
126 return nissy_convertcube("B32", format, cube, result);
127}
65 128
66int64_t nissy_gendata( 129int64_t
130nissy_gendata(
67 const char *solver, 131 const char *solver,
68 const char *options, 132 const char *options,
69 void *data 133 void *data
70); 134)
135{
136 /* TODO: move gendata here? */
137 return gendata(solver, options, data);
138}
71 139
72int64_t nissy_solve( 140int64_t
141nissy_solve(
73 const char cube[static 22], 142 const char cube[static 22],
74 const char *solver, 143 const char *solver,
75 const char *options, 144 const char *options,
@@ -80,4 +149,8 @@ int64_t nissy_solve(
80 int8_t optimal, 149 int8_t optimal,
81 const void *data, 150 const void *data,
82 char *solutions 151 char *solutions
83); 152)
153{
154 /* TODO: move solve_generic here? */
155 return -1;
156}
diff --git a/src/io_cube.h b/src/io_cube.h
index 430d3ac..3e7880e 100644
--- a/src/io_cube.h
+++ b/src/io_cube.h
@@ -60,7 +60,7 @@ writecube(const char *format, cube_t cube, char *buf)
60 size_t len; 60 size_t len;
61 61
62 if (!isconsistent(cube)) { 62 if (!isconsistent(cube)) {
63 errormsg = "ERROR: cannot write inconsistent cube"; 63 errormsg = "ERROR: inconsistent";
64 goto writecube_error; 64 goto writecube_error;
65 } 65 }
66 66
@@ -73,7 +73,7 @@ writecube(const char *format, cube_t cube, char *buf)
73 } 73 }
74 } 74 }
75 75
76 errormsg = "ERROR: cannot write cube in the given format"; 76 errormsg = "ERROR: format";
77 77
78writecube_error: 78writecube_error:
79 DBG_LOG("writecube error, see stdout for details\n"); 79 DBG_LOG("writecube error, see stdout for details\n");

Generated with cgit - Back to sebastiano.tronto.net