[PyQt] Possible bug in the handling of sipTypeInstanceDef for const data
Shaheed Haque
srhaque at theiet.org
Wed Aug 30 20:44:09 BST 2017
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
More information about the PyQt
mailing list