34e4f738 |
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 |