[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