[PyQt] Possible bug in the handling of sipTypeInstanceDef for const data
Phil Thompson
phil at riverbankcomputing.com
Tue Sep 5 16:49:52 BST 2017
On 30 Aug 2017, at 8:44 pm, Shaheed Haque <srhaque at theiet.org> wrote:
>
> 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?
Tonight's snapshot has the cast.
Phil
More information about the PyQt
mailing list