[PyQt] Request for Comments: Support for C++ Scoped Enums

Phil Thompson phil at riverbankcomputing.com
Fri Aug 11 16:22:28 BST 2017


At the moment SIP only supports C-like unscoped enums and implements them as sub-classes of int. The main weaknesses of these are the lack of type safety and the injection of the member names into the enclosing scope.

These problems were fixed by the introduction of scoped enums in newer versions of C++, see...

https://www.ibm.com/developerworks/rational/library/scoped-enums/index.html

Note that Qt doesn't currently use scoped enums but I expect that to change.

Scoped enums are much closer to the implementation of Python enums...

https://docs.python.org/3/library/enum.html#module-enum

I propose to add support for scoped enums and implement them using Python enums - specifically as sub-classes of Enum (and *not* IntEnum in order to preserve the type safety). Consequently Python v3.4 or later will be required for wrapping libraries using scoped enums.

Any comments welcome.

Phil


More information about the PyQt mailing list