[PyKDE] PyKDE compling woes with current snapshots

Jim Bublitz jbublitz at nwinternet.com
Thu Apr 24 10:07:01 BST 2003


On 24-Apr-03 Gordon Tyler wrote:
> I'm trying to compile PyKDE 3.5-2 (plus patches, see below) using
> the latest 
> snapshots of sip and PyQt: sip-x11-gpl-snapshot-20030423 and 
> PyQt-x11-gpl-snapshot-20030423.
> 
> Patches attached:
>  * sipName: sipName changes for Phil's changes upcoming sip 3.6.
>  * subclass: My subclass map in KMainWindow, with correct
> sipNames.
>  * ListToArray: I just copied the code from PyQt, there's
> probably a better way of doing this.
>  *pyArgvToC: Ditto.
>  * kurl: The sip generated code was already calling sipParseArgs.
> This seems to be the way that PyQt code does it. Is there a way
> of improving the naming of the parsed args produced by the sip
> generated code, so that one could use 'idx' instead of 'a0' for
> instance in the hand-written code?

You can make the naming anything you want. Prior to this version I
mostly stuck to a0, a1 ... because that's the way sip did it (lots
of cut and paste) and the argument names weren't visible in the 
sip file when writing member code as they are now (and I'm too
lazy to dig through h files). In this case however there really
aren't any arg names to begin with.

I'm not sure what the change in sipParseArgs would be, unless it's
related to Phil's operator change or something else new in 3.6. I
haven't had a chance to look at this and won't for a few days yet.
Actually it seems to be related to another change made in Python
methods prior to the operator change.

However, if sip is generating sipParseArgs and using a0 I'd guess
you're stuck with that. Are you sure the member code is necessary
if that's the case?

There were bugs in this section of code, and I've patched them a
little differently than you have.
 
> Now I've run into a compile error that has me stumped:

> sipkpartsKPartsPart.cpp: In method `void 
> sipKParts_MainWindow::setInstance(KInstance *)':
> sipkpartsKPartsPart.cpp:1817: no matching function for call to 
> `sipKParts_PartBase::sipVH_setInstance (sipMethodCache *,
> sipThisType *&, 
> KInstance *&)'
> sipkpartsKPartsPartBase.h:59: candidates are: static void 
> sipKParts_PartBase::sipVH_setInstance(const sipMethodCache *,
> sipThisType *, 
> KInstance *, bool)
> sipkpartsKPartsFactory.cpp: In method `void 
> sipKParts_DockMainWindow::setInstance(KInstance *)':
> sipkpartsKPartsFactory.cpp:2363: no matching function for call to
> `sipKParts_PartBase::sipVH_setInstance (sipMethodCache *,
> sipThisType *&, 
> KInstance *&)'
> sipkpartsKPartsFactory.cpp:1723: candidates are: static void 
> sipKParts_PartBase::sipVH_setInstance(const sipMethodCache *,
> sipThisType *, 
> KInstance *, bool)
> 
> Any ideas?

I noticed this in someone else's error report related to sip 3.6.
I'm not sure where this error is coming from, since the same code
compiles under 3.5 and both methods exist in the h file. Looks
like sip is losing track of one of the identically named methods,
but it's hard to say. I'd want to check it out before assuming it's
a sip bug. 


Jim




More information about the PyQt mailing list