[PyQt] How are template methods supposed to work?

Phil Thompson phil at riverbankcomputing.com
Sat Apr 9 17:23:24 BST 2016


On 9 Apr 2016, at 5:01 pm, Shaheed Haque <srhaque at theiet.org> wrote:
> 
> Hi,
> 
> I'm having some trouble trying to wrap KDE's KF5 libraries in the area
> of template support using SIP 4.16.9. For example, the following test
> case results in a syntax error:
> 
> ======
> %Module test_template
> 
> class MyClass
> {
> public:
>    template <typename T>  // line 6
>    int mymethod();
> };
> ======
> 
> $ sip test_template.sip
> sip: test_template.sip:6: syntax error
> 
> 
> I've poked around PyQt4, PyQt5 and PyKDE4, and though I see a
> scattering of templated classes, I don't see any templated methods.
> The docs (and the parser.y, if I am reading it right) do suggest that
> this should work. What am I missing? Does SIP really support templates
> generally?

No.

> Now I confess to being a little unclear what the Pythonic
> representation of such a thing might be, and if SIP does not support
> this, any suggestions on how to approach this kind of problem would be
> welcome.

You have to provide some sort of handwritten implementation. What that looks like depends on the particular case. The first thing to consider is what values of T need to be supported. Is T always going to be a fundamental type, or a class, or both. In any case you are probably going to have to decide on a fixed subset of possible values of T to support.

Phil


More information about the PyQt mailing list