X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/63ef14a63b7513160478cd7da3c9388fe97a076e..5f4309094878ff686c716f62d917754f09b889df:/math/p-gentab.awk diff --git a/math/p-gentab.awk b/math/p-gentab.awk deleted file mode 100755 index f0dd357..0000000 --- a/math/p-gentab.awk +++ /dev/null @@ -1,100 +0,0 @@ -#! /usr/bin/awk -f - -function banner(name, s, i) -{ - s = "/*----- " name " "; - while (length(s) < 75) s = s "-"; - return (s "*/"); -} - -function fix(name) -{ - gsub(/[^0-9A-Za-z_]+/, "_", name); - return (name); -} - -BEGIN { - print "/* -*-c-*-"; - print " *"; - print " * Table of prime groups [generated]"; - print " */"; - print ""; - print "#include \"ptab.h\""; - print ""; - print "#define N(x) (sizeof(x)/sizeof(*x))"; - print "#define MP(x) { x, x + N(x), N(x), 0, MP_CONST, 0 }"; - print "#define NOMP { 0, 0, 0, 0, 0 }"; - print ""; - print banner("Prime data"); - print ""; - - d_i = 0; - name = ""; -} - -function putmp(x, d) -{ - if (!(x in data)) { - print "group " name ": missing " x >"/dev/stderr"; - exit 1; - } - d = data[x]; - if (!(d in cache)) { - n = "p_" fix(name) "_" x; - print "static mpw " n "[] = {"; - system("./mpdump " d); - print "};"; - print ""; - cache[d] = n; - } - mp[x] = cache[d]; -} - -function flush() -{ - if (name == "") return; - print "/* --- Group " name " --- */"; - delete mp; - print ""; - putmp("p"); - putmp("q"); - putmp("g"); - print "static pdata p_" fix(name) " = {"; - print " MP(" mp["p"] ")," - print " MP(" mp["q"] ")," - print " MP(" mp["g"] ")" - print "};"; - print ""; - dname[d_i++] = name; - d[name] = name; - r[name] = "p_" fix(name); - name = ""; -} - -/^[ \t]*(#|$)/ { next; } - -$1 == "alias" { flush(); dname[d_i++] = $2; d[$2] = $3; next; } - -$1 == "group" { flush(); delete data; name = $2; next; } - -{ data[$1] = $2; next; } - -END { - flush(); - print banner("Main table"); - print ""; - print "const pentry ptab[] = {"; - for (i = 0; i < d_i; i++) { - name = dname[i]; - rname = d[name]; - if (!rname in r) { - print "group " rname " not found (alias from " name ")" >"/dev/stderr"; - exit 1; - } - print " { \"" name "\", &" r[rname] " },"; - } - print " { 0, 0 }"; - print "};" - print ""; - print banner("That's all, folks"); -}