[PyQt] SIP template-based class with argument having default constructor as default value
Shaheed Haque
srhaque at theiet.org
Sun Jun 18 17:54:44 BST 2017
On 18 June 2017 at 14:59, Shaheed Haque <srhaque at theiet.org> wrote:
> On 15 June 2017 at 23:38, Phil Thompson <phil at riverbankcomputing.com> wrote:
>> On 13 Jun 2017, at 3:16 pm, Denis Rouzaud <denis.rouzaud at gmail.com> wrote:
>>>
>>>
>>> Hi all,
>>>
>>> Title says it all ;)
>>>
>>> I think there is an issue on how SIP handles the default value argument for template-based classes.
>>> SIP don't replaces the T var by the implemented base class constructor. See below.
>>>
>>> Let's say I have
>>>
>>> template <typename T>
>>> class Base
>>> {
>>> pubic:
>>> Base( const T &epoch = T()) : mEpoch( epoch ){}
>>> private:
>>> T mEpoch;
>>> }
>>>
>>> typedef Base< QDate > MyDate;
>>> typedef Base< QDateTime > MyDateTime;
>>>
>>>
>>> Here is the SIP code generated:
>>>
>>> static void *init_type_MyDate(sipSimpleWrapper *, PyObject *sipArgs, PyObject *sipKwds, PyObject **sipUnused, PyObject **, PyObject **sipParseErr)
>>> {
>>> MyDate *sipCpp = 0;
>>> {
>>> const QDate& a0def = T();
>>> const QDate* a0 = &a0def;
>>> int a0State = 0;
>>> ......
>>>
>>>
>>> I get an error:
>>> use of undeclared identifier 'T'
>>> in const QDate& a0def = T();
>>>
>>>
>>> Does someone confirm?
>>> Is there a workaround?
>>
>> Tonight's snapshot should handle this use case - but you may find others that will require more work.
>
> Phil,
>
> Here, I think, is one of those other cases:
>
> template <T>
> class KSharedPixmapCacheMixin: T, KLocalImageCacheImplementation
> {
> ...
> };
>
> The problem is that SIP does not like the use of T as a base class:
>
> ERROR: sip: ::T has not been defined while processing
> KGuiAddons/KGuiAddonsmod.sip
And in a similar vein again:
template <Class>
class SuperClass: SuperClassTrait<Class>
{
%TypeHeaderCode
#include <AkonadiCore/Supertrait>
%End
// Empty!
};
causes:
ERROR: sip: tmp/AkonadiCore/Supertrait.sip:42: syntax error while
processing AkonadiCore/AkonadiCoremod.sip
> Thanks, Shaheed
>
>
>>
>> Phil
>>
>> _______________________________________________
>> PyQt mailing list PyQt at riverbankcomputing.com
>> https://www.riverbankcomputing.com/mailman/listinfo/pyqt
More information about the PyQt
mailing list