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