Windows2003-3790/sdktools/apimon/winapi.awk
2020-09-30 16:53:55 +02:00

76 lines
1.9 KiB
Awk

### vadimg: this AWK script constructs function prototypes for
### winuser.h, wingdi.h, and winbase.h.
BEGIN {
fAPI = 0;
fRet = 0;
szRet = "";
}
{
if ($1 == "WINUSERAPI" || $1 == "WINGDIAPI" || $1 == "WINBASEAPI") {
fAPI = 1;
}
if (fAPI) {
if (index($0, ");") != 0) {
fAPI = 0;
}
fArg = 0;
szArg = "";
for(i = 1; i <= NF; i++) {
if ($i == "WINAPI" || $i == "WINAPIV") {
continue;
}
if ($i == "WINUSERAPI" || $i == "WINGDIAPI" || $i == "WINBASEAPI") {
fRet = 1;
continue;
}
if (fRet) {
szRet = $i;
fRet = 0;
continue;
}
if (index($i, "(") != 0) {
sub(/\);/, "", $i);
n = split($i, szrg, /\(/);
if (n == 1) {
printf "%s %s ", szrg[1], szRet;
} else {
if (gsub(/\,/, "", szrg[2]) == 0) {
i++;
}
printf "%s %s %s ", szrg[1], szRet, szrg[2];
}
continue;
}
if (tolower($i) == "const" || $i == "*") {
continue;
}
if (index($i, ",") != 0 || index($i, ")") != 0 || i == NF) {
if (fArg) {
printf "%s ", szArg;
fArg = 0;
} else {
sub(/\);/, "", $i);
sub(/\,/, "", $i);
printf "%s ", $i;
}
} else {
szArg = $i;
fArg = 1;
}
}
if (!fAPI) {
printf "\n";
}
}
}