aboutsummaryrefslogtreecommitdiff
path: root/src/cube.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-10-22 14:48:42 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2023-10-22 14:48:42 +0200
commit0c49ed5afc2ae9e4bc4aa1af9c655bbe1f3d14b8 (patch)
tree4e69457ed87cb06decc12889a1ded18c17610dad /src/cube.h
parent259c7326f78d5495f5dc51c619932599a5279f68 (diff)
downloadnissy-core-0c49ed5afc2ae9e4bc4aa1af9c655bbe1f3d14b8.tar.gz
nissy-core-0c49ed5afc2ae9e4bc4aa1af9c655bbe1f3d14b8.zip
Small change of plans, moved stuff around
Diffstat (limited to 'src/cube.h')
-rw-r--r--src/cube.h93
1 files changed, 89 insertions, 4 deletions
diff --git a/src/cube.h b/src/cube.h
index 67f04bf..cac6b01 100644
--- a/src/cube.h
+++ b/src/cube.h
@@ -1,14 +1,99 @@
1/* Constants *****************************************************************/
2
3/* Standard moves */
4#define U 0U
5#define U2 1U
6#define U3 2U
7#define D 3U
8#define D2 4U
9#define D3 5U
10#define R 6U
11#define R2 7U
12#define R3 8U
13#define L 9U
14#define L2 10U
15#define L3 11U
16#define F 12U
17#define F2 13U
18#define F3 14U
19#define B 15U
20#define B2 16U
21#define B3 17U
22
23/* Regular transformations (rotations) */
24#define UFr 0
25#define ULr 1
26#define UBr 2
27#define URr 3
28#define DFr 4
29#define DLr 5
30#define DBr 6
31#define DRr 7
32#define RUr 8
33#define RFr 9
34#define RDr 10
35#define RBr 11
36#define LUr 12
37#define LFr 13
38#define LDr 14
39#define LBr 15
40#define FUr 16
41#define FRr 17
42#define FDr 18
43#define FLr 19
44#define BUr 20
45#define BRr 21
46#define BDr 22
47#define BLr 23
48
49/* Mirrored transformations */
50#define UFm 24
51#define ULm 25
52#define UBm 26
53#define URm 27
54#define DFm 28
55#define DLm 29
56#define DBm 30
57#define DRm 31
58#define RUm 32
59#define RFm 33
60#define RDm 34
61#define RBm 35
62#define LUm 36
63#define LFm 37
64#define LDm 38
65#define LBm 39
66#define FUm 40
67#define FRm 41
68#define FDm 42
69#define FLm 43
70#define BUm 44
71#define BRm 45
72#define BDm 46
73#define BLm 47
74
75/* Errors */
76#define errormove 99U
77#define errortrans 99U
78
79/* Types *********************************************************************/
80
1/* TODO: ifdef for different implementations */ 81/* TODO: ifdef for different implementations */
2#include "cube_array.h" 82/* See doc/CUBE_INTERNAL.md for a description of the cube format */
83typedef struct {
84 uint8_t c[8];
85 uint8_t e[12];
86} cube_t;
3 87
4/* For moves and transformations, see constants.h */
5typedef uint8_t move_t; 88typedef uint8_t move_t;
6typedef uint8_t trans_t; 89typedef uint8_t trans_t;
7 90
8extern cube_t solvedcube; 91extern cube_t solvedcube;
9 92
93/* Functions *****************************************************************/
94
10/* Not all formats are supported for both read and write. */ 95/* Not all formats are supported for both read and write. */
11/* See utils/FORMAT.txt for details. */ 96/* See doc/CUBE_TEXT.md for details. */
12typedef enum {H48, SRC} format_t; 97typedef enum {H48, SRC} format_t;
13cube_t readcube(format_t, char *); 98cube_t readcube(format_t, char *);
14void writecube(format_t, cube_t, char *); 99void writecube(format_t, cube_t, char *);
@@ -28,5 +113,5 @@ cube_t move(cube_t, move_t);
28cube_t inverse(cube_t); 113cube_t inverse(cube_t);
29cube_t compose(cube_t, cube_t); 114cube_t compose(cube_t, cube_t);
30 115
31/* See utils/TRANSFORMATIONS.txt for how transformations are applied */ 116/* See doc/TRANSFORMATIONS.md for how transformations are applied */
32cube_t transform(cube_t, trans_t); 117cube_t transform(cube_t, trans_t);

Generated with cgit - Back to sebastiano.tronto.net