[PATCH 03/11] include/windows.globalization.idl: Add ILanguage interface and Language class stubs.

Rémi Bernon rbernon at codeweavers.com
Wed Jan 19 12:15:43 CST 2022


Hi Bernhard,

On 1/19/22 14:28, Bernhard Kölbl wrote:
> Signed-off-by: Bernhard Kölbl <besentv at gmail.com>
> ---
>   include/windows.globalization.idl | 38 +++++++++++++++++++++++++++++++
>   1 file changed, 38 insertions(+)
> 
> diff --git a/include/windows.globalization.idl b/include/windows.globalization.idl
> index c08f7bd27d9..c6b7b96f894 100644
> --- a/include/windows.globalization.idl
> +++ b/include/windows.globalization.idl
> @@ -29,6 +29,9 @@ import "windows.foundation.idl";
>   namespace Windows {
>       namespace Globalization {
>           typedef enum DayOfWeek DayOfWeek;
> +        interface ILanguage;
> +        interface ILanguageExtensionSubtags;
> +        runtimeclass Language;
>       }
>   }
>   
> @@ -45,5 +48,40 @@ namespace Windows {
>               Friday    = 5,
>               Saturday  = 6
>           };
> +
> +        [
> +            contract(Windows.Foundation.FoundationContract, 1.0),
> +            exclusiveto(Windows.Globalization.Language),
> +            uuid(ea79a752-f7c2-4265-b1bd-c4dec4e4f080)
> +        ]
> +        interface ILanguage : IInspectable
> +        {
> +            /* Stub! */
> +        }
> +
> +        [
> +            contract(Windows.Foundation.FoundationContract, 1.0),
> +            exclusiveto(Windows.Globalization.Language),
> +            uuid(7d7daf45-368d-4364-852b-dec927037b85)
> +        ]
> +        interface ILanguageExtensionSubtags : IInspectable
> +        {
> +            /* Stub! */
> +        }
> +

Any reason to keep these empty? As far as I can see they are simple 
enough to not pull anything for their full declaration. It'd be better 
than just a comment that we may easily forget about.

> +        [
> +            activatable(Windows.Foundation.UniversalApiContract, 1.0),

This activatable attribute should actually have three arguments, and the 
first one be an interface. This is also apparently not supported by widl 
at the moment, so it would be nice to make it support it first, before 
adding this class (sorry).

> +            contract(Windows.Foundation.FoundationContract, 1.0),
> +            marshaling_behavior(agile),
> +            /* Fixme: ILanguageStatics, ILanguageStatics2 not defined yet:
> +            static(Windows.Globalization.ILanguageStatics, Windows.Foundation.UniversalApiContract, 1.0),
> +            static(Windows.Globalization.ILanguageStatics2, Windows.Foundation.UniversalApiContract, 1.0), */

For such cases, and for the activatable attribute above, it's also only 
required to have a declaration of the interface, not an actual 
definition, so it would be better to just forward declare the 
ILanguageStatics at the top of the file, and uncomment this.

Also in my version of the SDK I can see that there's ILanguageStatics3 
too, starting with contract version 10.0.

> +            threading(both)
> +        ]
> +        runtimeclass Language
> +        {
> +            [contract(Windows.Foundation.UniversalApiContract, 1.0), default] interface Windows.Globalization.ILanguage;
> +            [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Globalization.ILanguageExtensionSubtags;
> +        }
>       }
>   }

Same here, you only need the interfaces to be forward declared, it would 
be nice to have them all already I think, as it's not much effort.

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



More information about the wine-devel mailing list