From 08efbd62ef956327924aaea1fcfa97fde4dc1678 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 1 Nov 2023 19:26:09 +0100 Subject: Reworked moves and transformations, moved some stuff --- utils/gentranscode.sh | 47 +++++++++++++++++++++++++++++++++++++---------- utils/gentransswitch.sh | 8 ++++++++ 2 files changed, 45 insertions(+), 10 deletions(-) create mode 100755 utils/gentransswitch.sh (limited to 'utils') diff --git a/utils/gentranscode.sh b/utils/gentranscode.sh index f820d7c..63888c6 100755 --- a/utils/gentranscode.sh +++ b/utils/gentranscode.sh @@ -3,15 +3,42 @@ gcc -DDEBUG h48_to_src.c ../src/cube.c -o h48_to_src gcc -DDEBUG invert.c ../src/cube.c -o invert -for f in transform_??_???.txt; do - trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" - printf '[%s] = ' "$trans" - if [ "$1" = "-i" ]; then - ./invert <"$f" | ./h48_to_src - else - ./h48_to_src <"$f" - fi - printf ',\n' -done +# Old version +genarray() { + for f in transform_??_???.txt; do + trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" + printf '[%s] = ' "$trans" + if [ "$1" = "-i" ]; then + ./invert <"$f" | ./h48_to_src + else + ./h48_to_src <"$f" + fi + printf ',\n' + done +} +genfuncs() { + for f in transform_??_???.txt; do + trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" + printf 'static inline cube_t\ninline_trans_%s' "$trans" + [ "$1" = "-i" ] && printf '_inverse' + printf '(cube_t c)\n{\n' + printf '\tcube_t ret;\n' + printf '\tcube_t tn = {\n' + ./h48_to_src <"$f" | sed 's/^/\t/' | \ + tail -n 3 | head -n 2 + printf '\t};\n\tcube_t ti = {\n' + ./invert <"$f" | ./h48_to_src | sed 's/^/\t/' | \ + tail -n 3 | head -n 2 + printf '\t};\n\n' + printf '\tret = compose(tn, c);\n' + printf '\tret = compose(ret, ti);\n' + if [ -n "$(echo "$trans" | grep "m")" ]; then + printf '\tret = flipallcorners(ret);\n' + fi + printf '\n\treturn ret;\n}\n\n' + done +} + +genfuncs rm -f h48_to_src invert diff --git a/utils/gentransswitch.sh b/utils/gentransswitch.sh new file mode 100755 index 0000000..6883973 --- /dev/null +++ b/utils/gentransswitch.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +printf '\tswitch (t) {\n' +for f in transform_??_???.txt; do + t="$(echo $f | sed 's/.*_// ; s/\.txt//')" + printf '\tcase %s:\n\t\treturn inline_trans_%s(c);\n' "$t" "$t" +done +printf '\t}\n' -- cgit v1.3