### vadimg: this AWK script constructs an APIMON-style API table ### from the input generated by winapi.awk. BEGIN { } { if ($2 == "HWND") { szRet = "T_HWND"; } else if ($2 == "LPSTR" || $2 == "LPCSTR") { szRet = "T_LPSTR"; } else if ($2 == "LPWSTR" || $2 == "LPCWSTR") { szRet = "T_LPWSTR"; } else if ($2 == "HACCEL") { szRet = "T_HACCEL"; } else if ($2 == "HANDLE") { szRet = "T_HANDLE"; } else if ($2 == "HBITMAP") { szRet = "T_HBITMAP"; } else if ($2 == "HBRUSH") { szRet = "T_HBRUSH"; } else if ($2 == "HCURSOR") { szRet = "T_HCURSOR"; } else if ($2 == "HDC") { szRet = "T_HDC"; } else if ($2 == "HDCLPPOINT") { szRet = "T_HDCLPPOINT"; } else if ($2 == "HDESK") { szRet = "T_HDESK"; } else if ($2 == "HDWP") { szRet = "T_HDWP"; } else if ($2 == "HENHMETAFILE") { szRet = "T_HENHMETAFILE"; } else if ($2 == "HFONT") { szRet = "T_HFONT"; } else if ($2 == "HGDIOBJ") { szRet = "T_HGDIOBJ"; } else if ($2 == "HGLOBAL") { szRet = "T_HGLOBAL"; } else if ($2 == "HGLRC") { szRet = "T_HGLRC"; } else if ($2 == "HHOOK") { szRet = "T_HHOOK"; } else if ($2 == "HICON") { szRet = "T_HICON"; } else if ($2 == "HINSTANCE") { szRet = "T_HINSTANCE"; } else if ($2 == "HKL") { szRet = "T_HKL"; } else if ($2 == "HMENU") { szRet = "T_HMENU"; } else if ($2 == "HMETAFILE") { szRet = "T_HMETAFILE"; } else if ($2 == "HPALETTE") { szRet = "T_HPALETTE"; } else if ($2 == "HPEN") { szRet = "T_HPEN"; } else if ($2 == "HRGN") { szRet = "T_HRGN"; } else if ($2 == "HWINSTA") { szRet = "T_HWINSTA"; } else if ($2 == "HWND") { szRet = "T_HWND"; } else { szRet = "T_DWORD"; } printf "{ \"%s\", %s", $1, szRet; nArgs = NF - 2; if (nArgs > 8) { nArgs = 8; } if (nArgs > 0) { printf ", %d, {", nArgs; for (i = 3; i <= 10 && i <= NF; i++) { szSpace = ", "; szToken = ""; if (i == 3) { szSpace = ""; } if ($i == "HWND") { szToken = "T_HWND"; } else if ($i == "LPSTR" || $i == "LPCSTR") { szToken = "T_LPSTR"; } else if ($i == "LPWSTR" || $i == "LPCWSTR") { szToken = "T_LPWSTR"; } else if ($i == "HACCEL") { szToken = "T_HACCEL"; } else if ($i == "HANDLE") { szToken = "T_HANDLE"; } else if ($i == "HBITMAP") { szToken = "T_HBITMAP"; } else if ($i == "HBRUSH") { szToken = "T_HBRUSH"; } else if ($i == "HCURSOR") { szToken = "T_HCURSOR"; } else if ($i == "HDC") { szToken = "T_HDC"; } else if ($i == "HDCLPPOINT") { szToken = "T_HDCLPPOINT"; } else if ($i == "HDESK") { szToken = "T_HDESK"; } else if ($i == "HDWP") { szToken = "T_HDWP"; } else if ($i == "HENHMETAFILE") { szToken = "T_HENHMETAFILE"; } else if ($i == "HFONT") { szToken = "T_HFONT"; } else if ($i == "HGDIOBJ") { szToken = "T_HGDIOBJ"; } else if ($i == "HGLOBAL") { szToken = "T_HGLOBAL"; } else if ($i == "HGLRC") { szToken = "T_HGLRC"; } else if ($i == "HHOOK") { szToken = "T_HHOOK"; } else if ($i == "HICON") { szToken = "T_HICON"; } else if ($i == "HINSTANCE") { szToken = "T_HINSTANCE"; } else if ($i == "HKL") { szToken = "T_HKL"; } else if ($i == "HMENU") { szToken = "T_HMENU"; } else if ($i == "HMETAFILE") { szToken = "T_HMETAFILE"; } else if ($i == "HPALETTE") { szToken = "T_HPALETTE"; } else if ($i == "HPEN") { szToken = "T_HPEN"; } else if ($i == "HRGN") { szToken = "T_HRGN"; } else if ($i == "HWINSTA") { szToken = "T_HWINSTA"; } else if ($i == "HWND") { szToken = "T_HWND"; } else { szToken = "T_DWORD"; } printf "%s%s", szSpace, szToken; } printf "} },\n" } ### printf ", 0, },\n"; }