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

Phil Thompson phil at riverbankcomputing.com
Sun Aug 13 17:26:15 BST 2017


On 11 Aug 2017, at 4:22 pm, Phil Thompson <phil at riverbankcomputing.com> wrote:
> 
> 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.

Tonight's SIP snapshot will support C++11 scoped enums as described above. Consider this experimental (ie. not rigourously tested).

Phil


More information about the PyQt mailing list