[EXTERNAL] Re: Hit bug in sip wrapper generation of template expansion involving enums
Phil Thompson
phil at riverbankcomputing.com
Thu Mar 4 16:46:34 GMT 2021
On 04/03/2021 15:36, Gehlhaar, Daniel Kurt wrote:
> Phil,
>
> Apologies. Please see attached. The easiest way to replicate this is
> to put the enum declaration in the same file (as here). In the actual
> production process, it is in a different directory and is built into a
> dependent sip module. I think if this case is fixed, it will fix the
> other case.
>
> In any case, this is a "showstopper" for me, I cannot proceed with my
> migration from sip 4 to sip 6 unless this is resolved. Any advice or
> mitigation you could provide would be helpful.
SIP does not support enums as an argument to template-based mapped
types. It is a bug that SIP does not complain about this and generates
code on the assumption that the type is a class. The generated code may
or not compile.
You need to provide an explicit mapped type convertor. In its
%TypeHeaderCode you can specify the .h file that contains the C++
definition of the enum. You can look at PyQt5's qpycore_qlist.sip to see
how enum arguments are handled explicitly.
Phil
More information about the PyQt
mailing list