210073b1c307a39773114d9aac1472d7bcdb9cfa
[u/mdw/catacomb] / p-gentab.sh
1 #! /bin/sh
2
3 set -e
4
5 cat <<EOF
6 /* -*-c-*-
7 *
8 * Table of standard prime subgroups [generated]
9 */
10
11 #include "ptab.h"
12
13 #define N(x) (sizeof(x)/sizeof(*x))
14 #define MP(x) { x, x + N(x), N(x), 0, MP_CONST, 0 }
15
16 /*----- Prime data --------------------------------------------------------*/
17
18 EOF
19
20 names=""
21 while read t n; do
22
23 case $t in
24 group) ;;
25 alias) names="$names $n=$f" continue;;
26 \#* | "") continue;;
27 *) echo >&2 "$0: unknown keyword $t"; exit 1;;
28 esac
29
30 names="$names $n=$n"
31 cat <<EOF
32 /* --- Group $n --- */
33
34 EOF
35
36 n=`echo $n | sed 's/[^a-zA-Z0-9_][^a-zA-Z0-9_]*/_/g'`
37 read t p
38 if [ $t != p ]; then echo >&2 "$0: wanted p; found $t"; exit 1; fi
39 read t q
40 if [ $t != q ]; then echo >&2 "$0: wanted q; found $t"; exit 1; fi
41 read t g
42 if [ $t != g ]; then echo >&2 "$0: wanted g; found $t"; exit 1; fi
43
44 cat <<EOF
45 static mpw p_${n}_p[] = {
46 EOF
47 ./mpdump $p
48 cat <<EOF
49 };
50
51 static mpw p_${n}_q[] = {
52 EOF
53 ./mpdump $q
54 cat <<EOF
55 };
56
57 static mpw p_${n}_g[] = {
58 EOF
59 ./mpdump $g
60 cat <<EOF
61 };
62
63 static pdata p_$n = {
64 MP(p_${n}_p),
65 MP(p_${n}_q),
66 MP(p_${n}_g)
67 };
68
69 EOF
70
71 done
72
73 cat <<EOF
74 /*----- Main table --------------------------------------------------------*/
75
76 const pentry ptab[] = {
77 EOF
78 for i in $names; do
79 a=`echo $i | sed 's/=.*$//'`
80 n=`echo $i | sed 's/^.*=//; s/[^a-zA-Z0-9_][^a-zA-Z0-9_]*/_/g'`
81 cat <<EOF
82 { "$a", &p_$n },
83 EOF
84 done
85 cat <<EOF
86 { 0, 0 }
87 };
88
89 /*----- That's all, folks -------------------------------------------------*/
90 EOF