There seems to be an assumption that %ConvertToTypeCode creates
    a copy that needs to be deleted and ownership can't be transferred
    to C++.

It's not an assumption - it's the return value of %ConvertToTypeCode. Just make sure it always returns 0.

    Yes, that is the solution to the problem.
    Many thanks!

Nigel

--------

From the Sip documentation...

"If sipIsErr is not NULL then a non-zero value is returned if the mapped
 type instance returned through sipCppPtr was created on the heap.
 Otherwise zero is returned."

--------

struct FILE
{
%TypeHeaderCode
#include <cstdio>
using namespace std;
%End

private:
    FILE();
    FILE(const FILE &);
    ~FILE();

%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyFile_Check(sipPy);

    if (PyFile_Check(sipPy))
    {
       *sipCppPtr = PyFile_AsFile(sipPy);
       return 0;  /* The item was not allocated on the heap */
    }

    *sipIsErr = 1;
    return 0;
%End
};

_______________________________________________
PyKDE mailing list    [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to