Windows:
Microsoft Development Environment 2003, version 7.1.3088
Microsoft Visual C++ .NET   69462-270-0000007-18739  

C:\test>sip -V
3.10 (3.10-171)

Excerpted from my code:
OSWtimeContribution.h:
class DLL_EXPORT_API OSWtimeContribution
{
public:
  OSWtimeContribution()  {}
  ~OSWtimeContribution() {}

  void timebase(unsigned* tb) const { tb[0] = _timebase[1];
                                      tb[1] = _timebase[0]; }

private:
  unsigned _timebase[2];
};

OSWtimeContribution.sip version 1:
%ModuleHeaderCode
#include "OSWtimeContribution.h"
%End


class OSWtimeContribution
{
public:
  OSWtimeContribution();
  ~OSWtimeContribution();

  void timebase(unsigned* /*tb*/)  const;
%MemberCode
    OSWtimeContribution* sipCpp;
    unsigned*            a0;

    if (sipParseArgs(&sipArgsParsed,sipArgs,"mi", 
sipThisObj,sipClass_OSWtimeContribution,&sipCpp, &a0))
    {
      Py_BEGIN_ALLOW_THREADS
      sipCpp -> timebase(a0);
      Py_END_ALLOW_THREADS
    }
%End
};

sip -w gives:
sip: Warning: ../sip/OSWtimeContribution.sip:23: %MemberCode is deprecated, please use 
%MethodCode instead

Changing %MemberCode to %MethodCode gives a crash:
The instruction at "0x00404d64" refrenced memory at "0x00000000".  The memory could 
not be "read".

Following a suggestion from Jim Bublitz, I think the following should work:
OSWtimeContribution.sip version 2:
%ModuleHeaderCode
#include "OSWtimeContribution.h"
%End


class OSWtimeContribution
{
public:
  OSWtimeContribution();
  ~OSWtimeContribution();

  void timebase(unsigned* /Out/)  const;
};

This gives the same crash at 0x00404d64.

Changing /Out/ to /In/ above allows "successful" compilation, but seems wrong.  Does 
the Out/In qualifier refer to the pointer or what it points to?  

Also, in the full project I get lots of the following from sip generated code during 
"successful" compilation:
c:\online\ebf\vs.net2003\sipebftkrcontribution.cpp(71) : warning C4700: local variable 
'sipRes' used without having been initialized

c:\online\ebf\vs.net2003\sipebfaemheader.cpp(64) : warning C4700: local variable 'a0' 
used without having been initialized

c:\online\ebf\sipebflatcontributioniterator.cpp(68) : warning C4715: 
'sipLATcontributionIterator::EBF' : not all control paths return a value

        Thanks,
                Ric

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

Reply via email to