• Rémi Bernon's avatar
    widl: Output interface C names in method argument list. · 6698a2ef
    Rémi Bernon authored
    This fixes WinRT interface generation where only simple names were used
    instead of the C interface names.
    
    With the previous sample idl:
    
        #ifdef __WIDL__
        #pragma winrt ns_prefix
        #endif
    
        import "wtypes.idl";
    
        namespace Windows {
            [object]
            interface IFoo {}
    
            [object]
            interface IBar { HRESULT DoBar([in] IFoo *foo); }
        }
    
    $ widl -o windows.foo.h windows.foo.idl
    
    Generated file diff before/after:
    
        diff --git a/windows.foo.h b/windows.foo.h
        index 3790dc7..65151cb 100644
        --- a/windows.foo.h
        +++ b/windows.foo.h
        @@ -123,7 +123,7 @@ typedef struct __x_ABI_CWindows_CIBarVtbl {
             /*** IBar methods ***/
             HRESULT (STDMETHODCALLTYPE *DoBar)(
                 __x_ABI_CWindows_CIBar *This,
        -        IFoo *foo);
        +        __x_ABI_CWindows_CIFoo *foo);
    
             END_INTERFACE
         } __x_ABI_CWindows_CIBarVtbl;
        @@ -138,7 +138,7 @@ interface __x_ABI_CWindows_CIBar {
         #define __x_ABI_CWindows_CIBar_DoBar(This,foo) (This)->lpVtbl->DoBar(This,foo)
         #else
         /*** IBar methods ***/
        -static FORCEINLINE HRESULT __x_ABI_CWindows_CIBar_DoBar(__x_ABI_CWindows_CIBar* This,IFoo *foo) {
        +static FORCEINLINE HRESULT __x_ABI_CWindows_CIBar_DoBar(__x_ABI_CWindows_CIBar* This,__x_ABI_CWindows_CIFoo *foo) {
             return This->lpVtbl->DoBar(This,foo);
         }
         #endif
    Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    6698a2ef
header.c 57.4 KB