3 function banner(name, s, i)
5 s = "/*----- " name " ";
6 while (length(s) < 75) s = s "-";
12 gsub(/[^0-9A-Za-z_]+/, "_", name);
19 print " * Table of prime groups [generated]";
22 print "#include \"ptab.h\"";
24 print "#define N(x) (sizeof(x)/sizeof(*x))";
25 print "#define MP(x) { x, x + N(x), N(x), 0, MP_CONST, 0 }";
26 print "#define NOMP { 0, 0, 0, 0, 0 }";
28 print banner("Prime data");
38 print "group " name ": missing " x >"/dev/stderr";
43 n = "p_" fix(name) "_" x;
44 print "static mpw " n "[] = {";
45 system("./mpdump " d);
55 if (name == "") return;
56 print "/* --- Group " name " --- */";
62 print "static pdata p_" fix(name) " = {";
63 print " MP(" mp["p"] "),"
64 print " MP(" mp["q"] "),"
65 print " MP(" mp["g"] ")"
70 r[name] = "p_" fix(name);
74 /^[ \t]*(#|$)/ { next; }
76 $1 == "alias" { flush(); dname[d_i++] = $2; d[$2] = $3; next; }
78 $1 == "group" { flush(); delete data; name = $2; next; }
80 { data[$1] = $2; next; }
84 print banner("Main table");
86 print "const pentry ptab[] = {";
87 for (i = 0; i < d_i; i++) {
91 print "group " rname " not found (alias from " name ")" >"/dev/stderr";
94 print " { \"" name "\", &" r[rname] " },";
99 print banner("That's all, folks");