types.awk (303B)
1 BEGIN{started=0} 2 /\}/ {gsub(";","",$2); print val " " $2 " {" buffer "\n}"; started=0; buffer="";} 3 started == 1 { 4 buffer = buffer "\n" $0; 5 } 6 /#define/ { if(length($3)>0){print "enum " $2 " = " $3 ";"}} 7 /typedef.*[^;]$/ {started=1; val=$2; buffer=""} 8 /typedef struct.*;$/ {print "alias " $3 " = void;"}