[PATCH 5/5] widl: Generate helper macros for WinRT implementation.

Rémi Bernon rbernon at codeweavers.com
Fri Feb 19 13:43:25 CST 2021


On 2/19/21 8:12 PM, Jacek Caban wrote:
> On 19.02.2021 18:18, Rémi Bernon wrote:
>> Hi Jacek!
>>
>> On 2/19/21 5:48 PM, Jacek Caban wrote:
>>> Hi Rémi,
>>>
>>>
>>> On 19.02.2021 12:04, Rémi Bernon wrote:
>>>> This generates additional macros to help keeping implementation simple,
>>>> guarded with WIDL_USING ifdefs, like this:
>>>>
>>>>      #ifdef WIDL_USING_WINDOWS_FOO_IFOO
>>>
>>>
>>> I would find it more readable if we didn't follow all-uppercase for 
>>> macro rule here, something like:
>>>
>>> #define WIDL_using_Windows_Foo_IFoo
>>>
>>> But it's a matter of taste, so I'm mentioning it just for consideration.
>>>
>>
>> Yeah I don't really like it much, but I can see one reason to make 
>> something like that, which would also possibly solve the [1] below:
>>
>> For making things simpler to type, it could just be the type C name 
>> prefixed by WIDL_USING_, like in:
>>
>> #define WIDL_USING_CWindows_CGaming_CInput_CIRawGameController
>>
>> The generation of the guard macros would just have to remove the 
>> __x_ABI_ prefix, and developers just need to copy paste the type names 
>> they want without having to remove the C prefixes or mess with the 
>> name case.
> 
> 
> I hope that we can save developers from dealing with details about name 
> mangling, at least in non-templated cases. Ideally they would be able to 
> type it manually.
> 

Well, in that case all upper case could also save some effort trying to 
guess how the words are supposed to be capitalized :)

> 
>> I was afraid of making its scope too large, in case there's some types 
>> which would conflict together. I think having it per type is a bit 
>> verbose but at least it stays under control.
> 
> 
> Sure, we may have both mechanisms: use per-namespace macros whenever 
> possible and fallback to per-type macros in problematic cases.
> 
> 
>> Could it be added later, if we need to implement a large amount of 
>> WinRT DLLs where adding each type proves too verbose? 
> 
> 
> Maybe we could implement only per-namespace macros and wait for an 
> actual collision problem before implementing per-type variant?
> 

Alright!

> 
> Thanks,
> 
> Jacek
>
-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list