On Tuesday 25 March 2003 7:20 pm, WELCH,DONALD J (HP-Vancouver,ex1) wrote: > Greetings- > > I am attempting to wrap a shared library on Linux using SIP. This shared > library's API defines several C++ classes that interelate (in both IS-A and > HAS-A relationships). Currently, all the classes are declared in a single > .h file. > > Questions: > > 1. What is the difference between %Import and %Include?
%Import is used when you are wrapping a library that sub-classes from another library that has also been wrapped. So PyKDE effectively %Imports PyQt. %Include is similar to the C pre-processor's #include. > 2. Should I define a single top level .sip file that has the %Module > statement and then %Imports/%Includes each of the .sip files for each class > that is being wrapped? If not, where does the %Module statement go? I am > confused bt the PyQt file qtmod.sip that %Includes other .sip files, but > then those .sip files %Import qtmod.sip. You've mis-read the .sip files. qtmod.sip does not %Include any file that %Imports qtmod.sip. Whether you put each class into a separate .sip file is a readability issue and is up to you. > 3. In the PyQt .sip files, the %Module statement includes a 0 (zero) after > the module name. This is not in the SIP docs. What does it mean? It's for SIP v4 and is a version number. SIP v3 ignores it. > 4. Should the .sip file for each class %Include or %Import the .sip file > for classes that are referenced by the wrapped class? Neither - if I've understood the question properly. > 5. In many of the PyQt .sip files, there isn't any %Include or %Imports to > define base classes. How is this so? SIP is run against the qtmod.sip file (not against each individual .sip file) and it brings in all the necessary stuff through %Includes. > 6. Is it possible to add methods to classes in the .sip file that don't > exist in (or exist differently) the wrapped .cpp code? For example, could I > add a method that returns a Python list instead of having the Python client > code call getFirst()/getNext() to enumerate a list of items? Yes - you can lie to SIP as much as you want. Depending on the nature of the class, alternatives would be to replace the class entirely with a Python list (using %MappedType), or implement appropriate Python operators (see qstringlist.sip). > 7. Are there any tools to automate h2sip (at least the basic stuff that can > be automated)? Over to you Jim. However, be aware that you sometimes have to supply SIP with more information (eg. /Transfer/ flags) which cannot be done automatically. Phil _______________________________________________ PyKDE mailing list [EMAIL PROTECTED] http://mats.gmd.de/mailman/listinfo/pykde