[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] Possible bug in the handling of sipTypeInstanceDef for const data
From:       Shaheed Haque <srhaque () theiet ! org>
Date:       2017-08-30 19:44:09
Message-ID: CAHAc2jf11h1pAHoJkj8qPmWtLd0T6hmWW6miapVM9=t5MqkKmA () mail ! gmail ! com
[Download RAW message or body]

Hi Phil,

I have a bit of C++ like this:

========
typedef struct prob {
    int p_range;
    int p_offset;
} Prob;

static const Prob freqs[16] = {
    {0, 0},   ...
};
========

(all this is at global scope). The SIP I create for this is:

========
struct prob
{
%TypeHeaderCode
#include <MessageViewer/KXFace>
%End
    int p_range;
    int p_offset;
};

const prob *freqs /NoSetter/;
========

In response, SIP creates this code which does not compile, complaining
"error: invalid conversion from ‘const void*' to ‘void*'":

========
/* Define the class and enum instances to be added to this module dictionary. */
static sipTypeInstanceDef typeInstances[] = {
    {sipName_freqs, & ::freqs, &sipType_prob, SIP_INDIRECT},
    {0, 0, 0, 0}
};
========

Inserting a cast to make the second filed look like "(void *)&
::freqs" suppresses the error. Now, I could probably cook up a patch
to do this, but I'm not sure if the correct fix is actually to change
the definition of the field to "const void *ti_ptr"?

Any thoughts?

Thanks, Shaheed
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic