[PATCH 5/5] widl: Support WinRT runtimeclass type parsing.

Rémi Bernon rbernon at codeweavers.com
Tue Jan 19 11:39:43 CST 2021


On 1/19/21 6:32 PM, Zebediah Figura (she/her) wrote:
> 
> 
> On 1/19/21 7:04 AM, Rémi Bernon wrote:
>> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
>> ---
>>   include/windows.media.speechsynthesis.idl |  25 ++
>>   tools/widl/expr.c                         |   1 +
>>   tools/widl/header.c                       |  61 ++++-
>>   tools/widl/parser.l                       |   1 +
>>   tools/widl/parser.y                       | 269 +++++++++++++---------
>>   tools/widl/typegen.c                      |   4 +
>>   tools/widl/typelib.c                      |   1 +
>>   tools/widl/typetree.c                     |  17 ++
>>   tools/widl/typetree.h                     |  24 ++
>>   tools/widl/widltypes.h                    |   7 +
>>   10 files changed, 296 insertions(+), 114 deletions(-)
>>
>> diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl
>> index 7a1de5fcba6..90bc9f279c6 100644
>> --- a/include/windows.media.speechsynthesis.idl
>> +++ b/include/windows.media.speechsynthesis.idl
>> @@ -29,6 +29,8 @@ namespace Windows {
>>               typedef enum VoiceGender VoiceGender;
>>               interface IInstalledVoicesStatic;
>>               interface IVoiceInformation;
>> +            runtimeclass VoiceInformation;
>> +            runtimeclass SpeechSynthesizer;
>>           }
>>       }
>>   }
>> @@ -42,6 +44,29 @@ namespace Windows {
>>                   Male   = 0,
>>                   Female = 1
>>               };
>> +
>> +            [
>> +                contract(Windows.Foundation.UniversalApiContract, 1.0),
>> +                exclusiveto(Windows.Media.SpeechSynthesis.VoiceInformation),
>> +                uuid(b127d6a4-1291-4604-aa9c-83134083352c)
>> +            ]
>> +            interface IVoiceInformation : IInspectable
>> +            {
>> +                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
>> +                [propget] HRESULT Id([out] [retval] HSTRING* value);
>> +                [propget] HRESULT Language([out] [retval] HSTRING* value);
>> +                [propget] HRESULT Description([out] [retval] HSTRING* value);
>> +                [propget] HRESULT Gender([out] [retval] VoiceGender* value);
>> +            }
>> +
>> +            [
>> +                contract(Windows.Foundation.UniversalApiContract, 1.0),
>> +                marshaling_behavior(agile)
>> +            ]
>> +            runtimeclass VoiceInformation
>> +            {
>> +                [default] interface IVoiceInformation;
>> +            }
>>           }
>>       }
>>   }
> 
> Does this need to be part of this patch?
> 
Not necessarily part of it, do you mean move it to a separate patch?

It's there to illustrate the new features the widl changes enable, and 
make sure widl can parse and generate a proper header. Also it makes it 
possible to diff the generated headers on every widl change.

With that in mind I agree that it'd perhaps be better to move the new 
attributes parsing support after runtimeclass can be parsed, adding them 
to the idl iteratively, but I didn't want to add the runtimeclass 
without the attributes it's supposed to have.
-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list