- Added code for detection of missing types.
- Added missing types. - Added a function for each type test to improve compiling with -O2.
This commit is contained in:
parent
b9ae9eca13
commit
aac9ff400c
|
@ -47,7 +47,11 @@ EMR
|
||||||
EMRABORTPATH
|
EMRABORTPATH
|
||||||
EMRANGLEARC
|
EMRANGLEARC
|
||||||
EMRARC
|
EMRARC
|
||||||
|
EMRARCTO
|
||||||
|
EMRBEGINPATH
|
||||||
EMRBITBLT
|
EMRBITBLT
|
||||||
|
EMRCHORD
|
||||||
|
EMRCLOSEFIGURE
|
||||||
EMRCREATEBRUSHINDIRECT
|
EMRCREATEBRUSHINDIRECT
|
||||||
!EMRCREATECOLORSPACE
|
!EMRCREATECOLORSPACE
|
||||||
!EMRCREATECOLORSPACEW
|
!EMRCREATECOLORSPACEW
|
||||||
|
@ -58,6 +62,7 @@ EMRCREATEPEN
|
||||||
EMRDELETECOLORSPACE
|
EMRDELETECOLORSPACE
|
||||||
EMRDELETEOBJECT
|
EMRDELETEOBJECT
|
||||||
EMRELLIPSE
|
EMRELLIPSE
|
||||||
|
EMRENDPATH
|
||||||
EMREOF
|
EMREOF
|
||||||
EMREXCLUDECLIPRECT
|
EMREXCLUDECLIPRECT
|
||||||
EMREXTCREATEFONTINDIRECTW
|
EMREXTCREATEFONTINDIRECTW
|
||||||
|
@ -65,45 +70,80 @@ EMREXTCREATEPEN
|
||||||
EMREXTFLOODFILL
|
EMREXTFLOODFILL
|
||||||
EMREXTSELECTCLIPRGN
|
EMREXTSELECTCLIPRGN
|
||||||
EMREXTTEXTOUTA
|
EMREXTTEXTOUTA
|
||||||
|
EMREXTTEXTOUTW
|
||||||
EMRFILLPATH
|
EMRFILLPATH
|
||||||
EMRFILLRGN
|
EMRFILLRGN
|
||||||
|
EMRFLATTENPATH
|
||||||
EMRFORMAT
|
EMRFORMAT
|
||||||
EMRFRAMERGN
|
EMRFRAMERGN
|
||||||
EMRGDICOMMENT
|
EMRGDICOMMENT
|
||||||
EMRGLSBOUNDEDRECORD
|
EMRGLSBOUNDEDRECORD
|
||||||
EMRGLSRECORD
|
EMRGLSRECORD
|
||||||
EMRINVERTRGN
|
EMRINVERTRGN
|
||||||
|
EMRINTERSECTCLIPRECT
|
||||||
EMRLINETO
|
EMRLINETO
|
||||||
EMRMASKBLT
|
EMRMASKBLT
|
||||||
EMRMODIFYWORLDTRANSFORM
|
EMRMODIFYWORLDTRANSFORM
|
||||||
|
EMRMOVETOEX
|
||||||
EMROFFSETCLIPRGN
|
EMROFFSETCLIPRGN
|
||||||
|
EMRPAINTRGN
|
||||||
|
EMRPIE
|
||||||
EMRPIXELFORMAT
|
EMRPIXELFORMAT
|
||||||
EMRPLGBLT
|
EMRPLGBLT
|
||||||
|
EMRPOLYBEZIER
|
||||||
|
EMRPOLYBEZIERTO
|
||||||
EMRPOLYDRAW
|
EMRPOLYDRAW
|
||||||
|
EMRPOLYGON
|
||||||
EMRPOLYLINE
|
EMRPOLYLINE
|
||||||
|
EMRPOLYLINETO
|
||||||
|
EMRPOLYPOLYGON
|
||||||
EMRPOLYPOLYLINE
|
EMRPOLYPOLYLINE
|
||||||
EMRPOLYTEXTOUTA
|
EMRPOLYTEXTOUTA
|
||||||
|
EMRPOLYTEXTOUTW
|
||||||
|
EMRREALIZEPALETTE
|
||||||
|
EMRRECTANGLE
|
||||||
EMRRESIZEPALETTE
|
EMRRESIZEPALETTE
|
||||||
EMRRESTOREDC
|
EMRRESTOREDC
|
||||||
EMRROUNDRECT
|
EMRROUNDRECT
|
||||||
|
EMRSAVEDC
|
||||||
EMRSCALEVIEWPORTEXTEX
|
EMRSCALEVIEWPORTEXTEX
|
||||||
|
EMRSCALEWINDOWEXTEX
|
||||||
EMRSELECTCLIPPATH
|
EMRSELECTCLIPPATH
|
||||||
|
EMRSELECTCOLORSPACE
|
||||||
|
EMRSELECTOBJECT
|
||||||
EMRSELECTPALETTE
|
EMRSELECTPALETTE
|
||||||
EMRSETARCDIRECTION
|
EMRSETARCDIRECTION
|
||||||
EMRSETBKCOLOR
|
EMRSETBKCOLOR
|
||||||
|
EMRSETBKMODE
|
||||||
EMRSETBRUSHORGEX
|
EMRSETBRUSHORGEX
|
||||||
EMRSETCOLORADJUSTMENT
|
EMRSETCOLORADJUSTMENT
|
||||||
|
!EMRSETCOLORSPACE
|
||||||
EMRSETDIBITSTODEVICE
|
EMRSETDIBITSTODEVICE
|
||||||
|
EMRSETICMMODE
|
||||||
|
!EMRSETLAYOUT
|
||||||
|
EMRSETMAPMODE
|
||||||
EMRSETMAPPERFLAGS
|
EMRSETMAPPERFLAGS
|
||||||
|
EMRSETMETARGN
|
||||||
EMRSETMITERLIMIT
|
EMRSETMITERLIMIT
|
||||||
!EMRSETPALETTEENTRIES
|
!EMRSETPALETTEENTRIES
|
||||||
EMRSETPIXELV
|
EMRSETPIXELV
|
||||||
|
EMRSETPOLYFILLMODE
|
||||||
|
EMRSETROP2
|
||||||
|
EMRSETSTRETCHBLTMODE
|
||||||
|
EMRSETTEXTALIGN
|
||||||
|
EMRSETTEXTCOLOR
|
||||||
!EMRSETTEXTJUSTIFICATION
|
!EMRSETTEXTJUSTIFICATION
|
||||||
EMRSETVIEWPORTEXTEX
|
EMRSETVIEWPORTEXTEX
|
||||||
|
EMRSETVIEWPORTORGEX
|
||||||
|
EMRSETWINDOWEXTEX
|
||||||
|
EMRSETWINDOWORGEX
|
||||||
EMRSETWORLDTRANSFORM
|
EMRSETWORLDTRANSFORM
|
||||||
EMRSTRETCHBLT
|
EMRSTRETCHBLT
|
||||||
EMRSTRETCHDIBITS
|
EMRSTRETCHDIBITS
|
||||||
|
EMRSTROKEANDFILLPATH
|
||||||
|
EMRSTROKEPATH
|
||||||
EMRTEXT
|
EMRTEXT
|
||||||
|
EMRWIDENPATH
|
||||||
ENHMETAHEADER: !szlMicrometers
|
ENHMETAHEADER: !szlMicrometers
|
||||||
ENHMETARECORD
|
ENHMETARECORD
|
||||||
ENHMFENUMPROC
|
ENHMFENUMPROC
|
||||||
|
@ -178,7 +218,7 @@ LPGRADIENT_RECT
|
||||||
LPGRADIENT_TRIANGLE
|
LPGRADIENT_TRIANGLE
|
||||||
LPHANDLETABLE
|
LPHANDLETABLE
|
||||||
LPKERNINGPAIR
|
LPKERNINGPAIR
|
||||||
LPLOCALESIGNATUREE
|
LPLOCALESIGNATURE
|
||||||
LPLOGBRUSH
|
LPLOGBRUSH
|
||||||
LPLOGCOLORSPACEA
|
LPLOGCOLORSPACEA
|
||||||
LPLOGCOLORSPACEW
|
LPLOGCOLORSPACEW
|
||||||
|
@ -325,6 +365,7 @@ PEMRSETBRUSHORGEX
|
||||||
PEMRSETCOLORADJUSTMENT
|
PEMRSETCOLORADJUSTMENT
|
||||||
!PEMRSETCOLORSPACE
|
!PEMRSETCOLORSPACE
|
||||||
PEMRSETDIBITSTODEVICE
|
PEMRSETDIBITSTODEVICE
|
||||||
|
PEMRSETICMMODE
|
||||||
!PEMRSETLAYOUT
|
!PEMRSETLAYOUT
|
||||||
PEMRSETMAPMODE
|
PEMRSETMAPMODE
|
||||||
PEMRSETMAPPERFLAGS
|
PEMRSETMAPPERFLAGS
|
||||||
|
@ -359,7 +400,7 @@ PGRADIENT_RECT
|
||||||
PGRADIENT_TRIANGLE
|
PGRADIENT_TRIANGLE
|
||||||
PHANDLETABLE
|
PHANDLETABLE
|
||||||
PIXELFORMATDESCRIPTOR
|
PIXELFORMATDESCRIPTOR
|
||||||
PLOCALESIGNATUR
|
PLOCALESIGNATURE
|
||||||
PLOGBRUSH
|
PLOGBRUSH
|
||||||
PLOGFONTA
|
PLOGFONTA
|
||||||
PLOGFONTW
|
PLOGFONTW
|
||||||
|
@ -428,17 +469,18 @@ CRITICAL_SECTION
|
||||||
CRITICAL_SECTION_DEBUG
|
CRITICAL_SECTION_DEBUG
|
||||||
DCB
|
DCB
|
||||||
DEBUG_EVENT
|
DEBUG_EVENT
|
||||||
ENUMRESLANGPROCA
|
!ENUMRESLANGPROCA
|
||||||
ENUMRESLANGPROCW
|
!ENUMRESLANGPROCW
|
||||||
ENUMRESNAMEPROCA
|
!ENUMRESNAMEPROCA
|
||||||
ENUMRESNAMEPROCW
|
!ENUMRESNAMEPROCW
|
||||||
ENUMRESTYPEPROCA
|
!ENUMRESTYPEPROCA
|
||||||
ENUMRESTYPEPROCW
|
!ENUMRESTYPEPROCW
|
||||||
EXCEPTION_DEBUG_INFO
|
EXCEPTION_DEBUG_INFO
|
||||||
EXIT_PROCESS_DEBUG_INFO
|
EXIT_PROCESS_DEBUG_INFO
|
||||||
EXIT_THREAD_DEBUG_INFO
|
EXIT_THREAD_DEBUG_INFO
|
||||||
!FILETIME
|
!FILETIME
|
||||||
HW_PROFILE_INFOA
|
HW_PROFILE_INFOA
|
||||||
|
HW_PROFILE_INFOW
|
||||||
LDT_ENTRY
|
LDT_ENTRY
|
||||||
LOAD_DLL_DEBUG_INFO
|
LOAD_DLL_DEBUG_INFO
|
||||||
LPBY_HANDLE_FILE_INFORMATION
|
LPBY_HANDLE_FILE_INFORMATION
|
||||||
|
@ -520,7 +562,7 @@ SYSTEMTIME
|
||||||
SYSTEM_POWER_STATUS
|
SYSTEM_POWER_STATUS
|
||||||
TIME_ZONE_INFORMATION
|
TIME_ZONE_INFORMATION
|
||||||
UNLOAD_DLL_DEBUG_INFO
|
UNLOAD_DLL_DEBUG_INFO
|
||||||
WAITORTIMERCALLBACK
|
!WAITORTIMERCALLBACK
|
||||||
WIN32_FILE_ATTRIBUTE_DATA
|
WIN32_FILE_ATTRIBUTE_DATA
|
||||||
WIN32_FIND_DATAA
|
WIN32_FIND_DATAA
|
||||||
WIN32_FIND_DATAW
|
WIN32_FIND_DATAW
|
||||||
|
@ -560,9 +602,11 @@ CCHAR
|
||||||
CHAR
|
CHAR
|
||||||
COLORREF
|
COLORREF
|
||||||
!CONTEXT
|
!CONTEXT
|
||||||
|
!CONTEXT86
|
||||||
!DATE
|
!DATE
|
||||||
!DOUBLE
|
!DOUBLE
|
||||||
DWORD
|
DWORD
|
||||||
|
DWORD32
|
||||||
!DWORD64
|
!DWORD64
|
||||||
!DWORDLONG
|
!DWORDLONG
|
||||||
DWORD_PTR
|
DWORD_PTR
|
||||||
|
@ -576,6 +620,7 @@ FLOATING_SAVE_AREA
|
||||||
FPO_DATA
|
FPO_DATA
|
||||||
GENERIC_MAPPING
|
GENERIC_MAPPING
|
||||||
GLOBALHANDLE
|
GLOBALHANDLE
|
||||||
|
HALF_PTR
|
||||||
HANDLE
|
HANDLE
|
||||||
HCURSOR
|
HCURSOR
|
||||||
HFILE
|
HFILE
|
||||||
|
@ -617,7 +662,10 @@ IMAGE_THUNK_DATA
|
||||||
IMAGE_TLS_DIRECTORY
|
IMAGE_TLS_DIRECTORY
|
||||||
IMAGE_VXD_HEADER
|
IMAGE_VXD_HEADER
|
||||||
INT
|
INT
|
||||||
|
!INT16
|
||||||
|
INT32
|
||||||
!INT64
|
!INT64
|
||||||
|
!INT8
|
||||||
INT_PTR
|
INT_PTR
|
||||||
LANGID
|
LANGID
|
||||||
!LARGE_INTEGER
|
!LARGE_INTEGER
|
||||||
|
@ -625,6 +673,7 @@ LCID
|
||||||
LIST_ENTRY
|
LIST_ENTRY
|
||||||
LOCALHANDLE
|
LOCALHANDLE
|
||||||
LONG
|
LONG
|
||||||
|
LONG32
|
||||||
!LONG64
|
!LONG64
|
||||||
!LONGLONG
|
!LONGLONG
|
||||||
LONG_PTR
|
LONG_PTR
|
||||||
|
@ -664,7 +713,7 @@ PCSTR
|
||||||
PCWCH
|
PCWCH
|
||||||
PCWSTR
|
PCWSTR
|
||||||
!PEXCEPTION_FRAME
|
!PEXCEPTION_FRAME
|
||||||
PEXCEPTION_HANDLER
|
!PEXCEPTION_HANDLER
|
||||||
PEXCEPTION_POINTERS
|
PEXCEPTION_POINTERS
|
||||||
PEXCEPTION_RECORD
|
PEXCEPTION_RECORD
|
||||||
PFLOATING_SAVE_AREA
|
PFLOATING_SAVE_AREA
|
||||||
|
@ -713,6 +762,9 @@ PMESSAGE_RESOURCE_BLOCK
|
||||||
PMESSAGE_RESOURCE_DATA
|
PMESSAGE_RESOURCE_DATA
|
||||||
PMESSAGE_RESOURCE_ENTRY
|
PMESSAGE_RESOURCE_ENTRY
|
||||||
PNT_TIB
|
PNT_TIB
|
||||||
|
POINT
|
||||||
|
POINTL
|
||||||
|
POINTS
|
||||||
PPOINT
|
PPOINT
|
||||||
PPOINTS
|
PPOINTS
|
||||||
PPRIVILEGE_SET
|
PPRIVILEGE_SET
|
||||||
|
@ -741,8 +793,11 @@ PULARGE_INTEGER
|
||||||
PVOID
|
PVOID
|
||||||
PWCH
|
PWCH
|
||||||
PWSTR
|
PWSTR
|
||||||
|
RECT
|
||||||
|
RECTL
|
||||||
RTL_CRITICAL_SECTION
|
RTL_CRITICAL_SECTION
|
||||||
RTL_CRITICAL_SECTION_DEBUG
|
RTL_CRITICAL_SECTION_DEBUG
|
||||||
|
RTL_RESOURCE_DEBUG
|
||||||
SECURITY_CONTEXT_TRACKING_MODE
|
SECURITY_CONTEXT_TRACKING_MODE
|
||||||
SECURITY_DESCRIPTOR
|
SECURITY_DESCRIPTOR
|
||||||
SECURITY_DESCRIPTOR_CONTROL
|
SECURITY_DESCRIPTOR_CONTROL
|
||||||
|
@ -754,9 +809,11 @@ SID
|
||||||
SID_AND_ATTRIBUTES
|
SID_AND_ATTRIBUTES
|
||||||
SID_IDENTIFIER_AUTHORITY
|
SID_IDENTIFIER_AUTHORITY
|
||||||
SINGLE_LIST_ENTRY
|
SINGLE_LIST_ENTRY
|
||||||
|
SIZE
|
||||||
SIZEL
|
SIZEL
|
||||||
SIZE_T
|
SIZE_T
|
||||||
SSIZE_T
|
SSIZE_T
|
||||||
|
!STACK_FRAME_HEADER
|
||||||
SYSTEM_ALARM_ACE
|
SYSTEM_ALARM_ACE
|
||||||
SYSTEM_AUDIT_ACE
|
SYSTEM_AUDIT_ACE
|
||||||
TCHAR
|
TCHAR
|
||||||
|
@ -769,11 +826,16 @@ TOKEN_SOURCE
|
||||||
!TOKEN_STATISTICS
|
!TOKEN_STATISTICS
|
||||||
TOKEN_USER
|
TOKEN_USER
|
||||||
UCHAR
|
UCHAR
|
||||||
|
UHALF_PTR
|
||||||
UINT
|
UINT
|
||||||
|
!UINT16
|
||||||
|
UINT32
|
||||||
!UINT64
|
!UINT64
|
||||||
|
!UINT8
|
||||||
UINT_PTR
|
UINT_PTR
|
||||||
!ULARGE_INTEGER
|
!ULARGE_INTEGER
|
||||||
ULONG
|
ULONG
|
||||||
|
ULONG32
|
||||||
!ULONG64
|
!ULONG64
|
||||||
!ULONGLONG
|
!ULONGLONG
|
||||||
ULONG_PTR
|
ULONG_PTR
|
||||||
|
@ -784,6 +846,7 @@ WORD
|
||||||
WPARAM
|
WPARAM
|
||||||
__int16
|
__int16
|
||||||
__int32
|
__int32
|
||||||
|
!__int64
|
||||||
__int8
|
__int8
|
||||||
|
|
||||||
%%%dlls/user/tests
|
%%%dlls/user/tests
|
||||||
|
@ -816,6 +879,7 @@ CBTACTIVATESTRUCT
|
||||||
CBT_CREATEWNDA
|
CBT_CREATEWNDA
|
||||||
CBT_CREATEWNDW
|
CBT_CREATEWNDW
|
||||||
CLIENTCREATESTRUCT
|
CLIENTCREATESTRUCT
|
||||||
|
COMBOBOXINFO
|
||||||
COMPAREITEMSTRUCT
|
COMPAREITEMSTRUCT
|
||||||
COPYDATASTRUCT
|
COPYDATASTRUCT
|
||||||
CREATESTRUCTA
|
CREATESTRUCTA
|
||||||
|
@ -829,19 +893,15 @@ DESKTOPENUMPROCA
|
||||||
DESKTOPENUMPROCW
|
DESKTOPENUMPROCW
|
||||||
DLGITEMTEMPLATE
|
DLGITEMTEMPLATE
|
||||||
DLGPROC
|
DLGPROC
|
||||||
DLGPROC
|
|
||||||
DLGTEMPLATE
|
DLGTEMPLATE
|
||||||
!DRAWITEMSTRUCT
|
!DRAWITEMSTRUCT
|
||||||
DRAWSTATEPROC
|
DRAWSTATEPROC
|
||||||
DRAWSTATEPROC
|
|
||||||
DRAWTEXTPARAMS
|
DRAWTEXTPARAMS
|
||||||
EDITWORDBREAKPROCA
|
EDITWORDBREAKPROCA
|
||||||
EDITWORDBREAKPROCA
|
|
||||||
EDITWORDBREAKPROCW
|
|
||||||
EDITWORDBREAKPROCW
|
EDITWORDBREAKPROCW
|
||||||
EVENTMSG
|
EVENTMSG
|
||||||
FILTERKEYS
|
FILTERKEYS
|
||||||
GRAYSTRINGPROC
|
GUITHREADINFO
|
||||||
GRAYSTRINGPROC
|
GRAYSTRINGPROC
|
||||||
HARDWAREHOOKSTRUCT
|
HARDWAREHOOKSTRUCT
|
||||||
HARDWAREINPUT
|
HARDWAREINPUT
|
||||||
|
@ -853,7 +913,6 @@ HELPWININFOW
|
||||||
HIGHCONTRASTA
|
HIGHCONTRASTA
|
||||||
HIGHCONTRASTW
|
HIGHCONTRASTW
|
||||||
HOOKPROC
|
HOOKPROC
|
||||||
HOOKPROC
|
|
||||||
ICONINFO
|
ICONINFO
|
||||||
ICONMETRICSA
|
ICONMETRICSA
|
||||||
ICONMETRICSW
|
ICONMETRICSW
|
||||||
|
@ -974,8 +1033,6 @@ MSLLHOOKSTRUCT
|
||||||
MULTIKEYHELPA
|
MULTIKEYHELPA
|
||||||
MULTIKEYHELPW
|
MULTIKEYHELPW
|
||||||
NAMEENUMPROCA
|
NAMEENUMPROCA
|
||||||
NAMEENUMPROCA
|
|
||||||
NAMEENUMPROCW
|
|
||||||
NAMEENUMPROCW
|
NAMEENUMPROCW
|
||||||
NCCALCSIZE_PARAMS
|
NCCALCSIZE_PARAMS
|
||||||
NMHDR
|
NMHDR
|
||||||
|
@ -1024,12 +1081,8 @@ PNONCLIENTMETRICSA
|
||||||
PNONCLIENTMETRICSW
|
PNONCLIENTMETRICSW
|
||||||
PPAINTSTRUCT
|
PPAINTSTRUCT
|
||||||
PROPENUMPROCA
|
PROPENUMPROCA
|
||||||
PROPENUMPROCA
|
|
||||||
PROPENUMPROCEXA
|
|
||||||
PROPENUMPROCEXA
|
PROPENUMPROCEXA
|
||||||
PROPENUMPROCEXW
|
PROPENUMPROCEXW
|
||||||
PROPENUMPROCEXW
|
|
||||||
PROPENUMPROCW
|
|
||||||
PROPENUMPROCW
|
PROPENUMPROCW
|
||||||
PWINDOWINFO
|
PWINDOWINFO
|
||||||
PWINDOWPLACEMENT
|
PWINDOWPLACEMENT
|
||||||
|
@ -1040,7 +1093,6 @@ PWNDCLASSEXW
|
||||||
PWNDCLASSW
|
PWNDCLASSW
|
||||||
SCROLLINFO
|
SCROLLINFO
|
||||||
SENDASYNCPROC
|
SENDASYNCPROC
|
||||||
SENDASYNCPROC
|
|
||||||
SERIALKEYSA
|
SERIALKEYSA
|
||||||
SERIALKEYSW
|
SERIALKEYSW
|
||||||
SOUNDSENTRYA
|
SOUNDSENTRYA
|
||||||
|
@ -1048,7 +1100,6 @@ SOUNDSENTRYW
|
||||||
STICKYKEYS
|
STICKYKEYS
|
||||||
STYLESTRUCT
|
STYLESTRUCT
|
||||||
TIMERPROC
|
TIMERPROC
|
||||||
TIMERPROC
|
|
||||||
TOGGLEKEYS
|
TOGGLEKEYS
|
||||||
TPMPARAMS
|
TPMPARAMS
|
||||||
TRACKMOUSEEVENT
|
TRACKMOUSEEVENT
|
||||||
|
@ -1056,7 +1107,6 @@ WINDOWINFO: !dwWindowStatus
|
||||||
!WINDOWPLACEMENT
|
!WINDOWPLACEMENT
|
||||||
WINDOWPOS
|
WINDOWPOS
|
||||||
WINEVENTPROC
|
WINEVENTPROC
|
||||||
WINEVENTPROC
|
|
||||||
WINSTAENUMPROCA
|
WINSTAENUMPROCA
|
||||||
WINSTAENUMPROCW
|
WINSTAENUMPROCW
|
||||||
WNDCLASSA
|
WNDCLASSA
|
||||||
|
@ -1064,5 +1114,4 @@ WNDCLASSEXA
|
||||||
WNDCLASSEXW
|
WNDCLASSEXW
|
||||||
WNDCLASSW
|
WNDCLASSW
|
||||||
WNDENUMPROC
|
WNDENUMPROC
|
||||||
WNDENUMPROC
|
|
||||||
WNDPROC
|
WNDPROC
|
||||||
|
|
|
@ -225,11 +225,7 @@ sub _find_align_kind_size {
|
||||||
$align = 4;
|
$align = 4;
|
||||||
$kind = "unsigned";
|
$kind = "unsigned";
|
||||||
$size = 4;
|
$size = 4;
|
||||||
} elsif (/^LP(?:CSTR|CWSTR|DWORD|STR|VOID|THREAD_START_ROUTINE|WSTR)$/) {
|
} elsif (/^LP(?:CSTR|CWSTR|DWORD|VOID|WSTR)$/) {
|
||||||
$align = 4;
|
|
||||||
$kind = "pointer";
|
|
||||||
$size = 4;
|
|
||||||
} elsif (/^(?:(?:MSGBOX)CALLBACK[AW]?|(?:FAR|WND)PROC[AW]?)$/) {
|
|
||||||
$align = 4;
|
$align = 4;
|
||||||
$kind = "pointer";
|
$kind = "pointer";
|
||||||
$size = 4;
|
$size = 4;
|
||||||
|
@ -247,7 +243,10 @@ sub _find_align_kind_size {
|
||||||
$output->write("$type_name: can't parse type\n");
|
$output->write("$type_name: can't parse type\n");
|
||||||
$size_parse_reported{$_} = 1;
|
$size_parse_reported{$_} = 1;
|
||||||
}
|
}
|
||||||
|
} elsif (/^\w+\s*\((?:\s*CALLBACK|\s*NTAPI|\s*WINAPI)?\s*\*\s*\)\s*\(.*?\)$/) {
|
||||||
|
$align = 4;
|
||||||
|
$kind = "pointer";
|
||||||
|
$size = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $align2;
|
my $align2;
|
||||||
|
@ -627,17 +626,24 @@ sub output_test_pack_type {
|
||||||
if (defined($type2)) {
|
if (defined($type2)) {
|
||||||
return $type2;
|
return $type2;
|
||||||
} else {
|
} else {
|
||||||
$output->write("$type_name2: type not found (ignored)\n");
|
if ($type_name2 !~ /^(?:PVOID|VOID|void)$/) {
|
||||||
|
$output->write("$type_name2: warning: type not found 1\n");
|
||||||
|
}
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
} else {
|
} elsif ($type_name2 =~ /^\w+$/) {
|
||||||
my $type2 = $$type_name2type{$type_name2};
|
my $type2 = $$type_name2type{$type_name2};
|
||||||
if (defined($type2)) {
|
if (defined($type2)) {
|
||||||
return &$dereference_type($type2);
|
return &$dereference_type($type2);
|
||||||
} else {
|
} else {
|
||||||
$output->write("$type_name2: type not found (ignored)\n");
|
$output->write("$type_name2: warning: type not found\n");
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
} elsif ($type_name2 =~ /^\w+\s*\((?:\s*CALLBACK|\s*NTAPI|\s*WINAPI)?\s*\*\s*\)\s*\(.*?\)$/) {
|
||||||
|
return undef;
|
||||||
|
} else {
|
||||||
|
$output->write("$type_name2: warning: type can't be parsed\n");
|
||||||
|
return undef;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -653,7 +659,7 @@ sub output_test_pack_type {
|
||||||
if (!$optional && !scalar(keys(%$optional_fields2)) && defined($type_align2) && defined($type_size2)) {
|
if (!$optional && !scalar(keys(%$optional_fields2)) && defined($type_align2) && defined($type_size2)) {
|
||||||
print OUT " TEST_TYPE_POINTER($type_name, $type_size2, $type_align2);\n";
|
print OUT " TEST_TYPE_POINTER($type_name, $type_size2, $type_align2);\n";
|
||||||
} else {
|
} else {
|
||||||
$output->write("$type_name: type size not found (ignored)\n");
|
# $output->write("$type_name: warning: type size not found\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elsif ($type_kind eq "signed") {
|
} elsif ($type_kind eq "signed") {
|
||||||
|
@ -715,12 +721,13 @@ sub output_test_pack {
|
||||||
my $test_dir = shift;
|
my $test_dir = shift;
|
||||||
my $test = shift;
|
my $test = shift;
|
||||||
|
|
||||||
|
my $type_names_used = shift;
|
||||||
|
|
||||||
$output->prefix("$test_dir: $test: ");
|
$output->prefix("$test_dir: $test: ");
|
||||||
|
|
||||||
my @headers = $tests->get_section($test_dir, $test, "header");
|
my @headers = $tests->get_section($test_dir, $test, "header");
|
||||||
my @type_names = $tests->get_section($test_dir, $test, "type");
|
my @type_names = $tests->get_section($test_dir, $test, "type");
|
||||||
|
|
||||||
my %type_name_not_used;
|
|
||||||
my %type_name2optional;
|
my %type_name2optional;
|
||||||
my %type_name2optional_fields;
|
my %type_name2optional_fields;
|
||||||
|
|
||||||
|
@ -742,7 +749,6 @@ sub output_test_pack {
|
||||||
}
|
}
|
||||||
|
|
||||||
$type_name2optional_fields{$type_name} = $optional_fields;
|
$type_name2optional_fields{$type_name} = $optional_fields;
|
||||||
$type_name_not_used{$type_name} = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $header (@headers) {
|
foreach my $header (@headers) {
|
||||||
|
@ -751,31 +757,25 @@ sub output_test_pack {
|
||||||
foreach my $_type_name (@type_names) {
|
foreach my $_type_name (@type_names) {
|
||||||
my $type_name = $_type_name;
|
my $type_name = $_type_name;
|
||||||
|
|
||||||
next if $type_name =~ /^!/;
|
my $skip = ($type_name =~ s/^!//);
|
||||||
$type_name =~ s/:.*?$//;
|
$type_name =~ s/:.*?$//;
|
||||||
|
|
||||||
my $type = $$type_name2type{$type_name};
|
my $type = $$type_name2type{$type_name};
|
||||||
if (!defined($type)) {
|
if (!defined($type)) {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
$type_name_not_used{$type_name} = 0;
|
$$type_names_used{$type_name} = $skip ? -1 : 1;
|
||||||
|
next if $skip;
|
||||||
output_test_pack_type(\*OUT, $type_name2type, \%type_name2optional, \%type_name2optional_fields, $type_name, $type);
|
|
||||||
output_test_pack_fields(\*OUT, $type_name2type, \%type_name2optional, \%type_name2optional_fields, $type_name, $type, 0);
|
print OUT "static void test_${test}_$type_name(void)\n";
|
||||||
|
print OUT "{\n";
|
||||||
|
output_test_pack_type(\*OUT, $type_name2type, \%type_name2optional, \%type_name2optional_fields,
|
||||||
|
$type_name, $type);
|
||||||
|
output_test_pack_fields(\*OUT, $type_name2type, \%type_name2optional, \%type_name2optional_fields,
|
||||||
|
$type_name, $type, 0);
|
||||||
|
print OUT "}\n";
|
||||||
print OUT "\n";
|
print OUT "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $_type_name (@type_names) {
|
|
||||||
my $type_name = $_type_name;
|
|
||||||
|
|
||||||
next if $type_name =~ /^!/;
|
|
||||||
$type_name =~ s/:.*?$//;
|
|
||||||
|
|
||||||
if ($type_name_not_used{$type_name}) {
|
|
||||||
# $output->write("$type_name: type not found (ignored)\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -788,18 +788,27 @@ sub output_file {
|
||||||
my $test_dir = shift;
|
my $test_dir = shift;
|
||||||
my @tests = @{(shift)};
|
my @tests = @{(shift)};
|
||||||
|
|
||||||
|
my $type_names_used = shift;
|
||||||
|
|
||||||
output_header(\*OUT, $test_dir, \@tests);
|
output_header(\*OUT, $test_dir, \@tests);
|
||||||
|
|
||||||
foreach my $test (@tests) {
|
foreach my $test (@tests) {
|
||||||
print OUT "void test_$test(void)\n";
|
my %type_names_used2;
|
||||||
print OUT "{\n";
|
|
||||||
|
|
||||||
if ($test eq "pack") {
|
if ($test eq "pack") {
|
||||||
output_test_pack(\*OUT, $test_dir, $test);
|
output_test_pack(\*OUT, $test_dir, $test, \%type_names_used2);
|
||||||
} else {
|
} else {
|
||||||
die "no such test ($test)\n";
|
die "no such test ($test)\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print OUT "static void test_$test(void)\n";
|
||||||
|
print OUT "{\n";
|
||||||
|
foreach my $type_name (sort(keys(%type_names_used2))) {
|
||||||
|
$$type_names_used{$type_name} = $type_names_used2{$type_name};
|
||||||
|
if ($type_names_used2{$type_name} > 0) {
|
||||||
|
print OUT " test_${test}_$type_name();\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
print OUT "}\n";
|
print OUT "}\n";
|
||||||
print OUT "\n";
|
print OUT "\n";
|
||||||
}
|
}
|
||||||
|
@ -812,8 +821,38 @@ sub output_file {
|
||||||
########################################################################
|
########################################################################
|
||||||
# main
|
# main
|
||||||
|
|
||||||
|
my %type_names_used = ();
|
||||||
|
|
||||||
my @test_dirs = $tests->get_test_dirs();
|
my @test_dirs = $tests->get_test_dirs();
|
||||||
foreach my $test_dir (@test_dirs) {
|
foreach my $test_dir (@test_dirs) {
|
||||||
my $file = "$wine_dir/$test_dir/generated.c";
|
my $file = "$wine_dir/$test_dir/generated.c";
|
||||||
replace_file($file, \&output_file, $test_dir, \@tests);
|
replace_file($file, \&output_file, $test_dir, \@tests, \%type_names_used);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $header (sort(keys(%file2types))) {
|
||||||
|
$output->prefix("$header: ");
|
||||||
|
$header =~ s%^include/%%;
|
||||||
|
my $type_name2type = $file2types{"include/$header"};
|
||||||
|
foreach my $_type_name (sort(keys(%$type_name2type))) {
|
||||||
|
my $type_name = $_type_name;
|
||||||
|
|
||||||
|
if (!exists($type_names_used{$type_name})) {
|
||||||
|
$output->write("$type_name: type not used\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$output->prefix("$winapi_dir/tests.dat: ");
|
||||||
|
foreach my $type_name (sort(keys(%type_names_used))) {
|
||||||
|
my $found = 0;
|
||||||
|
foreach my $header (sort(keys(%file2types))) {
|
||||||
|
my $type_name2type = $file2types{"include/$header"};
|
||||||
|
if (exists($type_name2type{$type_name})) {
|
||||||
|
$found = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$found) {
|
||||||
|
$output->write("$type_name: type not used\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue