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 binary groups [generated]";
22 print "#include \"bintab.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
("Binary group 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 bindata bin_" fix
(name
) " = {";
63 print " MP(" mp
["p"] "),"
64 print " MP(" mp
["q"] "),"
65 print " MP(" mp
["g"] ")"
70 r
[name
] =
"bin_" 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 binentry bintab[] = {";
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");