From: William S F. <ws...@fu...> - 2011-02-21 20:38:08
|
On 17/02/11 01:12, Liron Kopinsky wrote: > Hi All, > > I’m totally new to swig and have spent the last few days digging through > the documentation trying to figure out how to convert a c++ library I’m > working with to call into it in C++. > > I’m trying to get rid of all the SWIGTYPE_p_XXXX classes to actually be > able to use all the classes I need, but I’m continuing to bump into > walls and I was wondering if someone could sort of walk me through what > I’m doing wrong. > > I have the following function types which I’ve been working on. > > virtualvoid SetValue(const unsigned char * data, int length, int width, > int height, int depth) = 0; > > In this case, I have successfully managed to get the c# function to pass > in a byte[] by using > > %include "arrays_csharp.i" > > %apply unsigned char INOUT[] { unsigned char* data }; > > virtualvoid GetValue(unsigned char * data, int & width, int & height, > int & depth) const = 0; > > In this case, I have successfully managed to get the c# function to pass > in a byte[] by using %include "arrays_csharp.i" > > I have also managed to get the int & width etc. to be out int width by > using > > %include "typemaps.i" > > %apply int & OUTPUT { int & }; > > virtualvoid SetFailureThreshold(TReal value) = 0; > > In this case TReal is just a typedef for either double or float, > depending on a #define in one of the .h files. I tried the following, > but it doesn’t seem to work: > > %apply float & OUTPUT { TReal & }; > > virtualIImage* CreateImage() = 0; > > virtualbool AddImage(IImage * image) = 0; > > In these case I am trying to get a handle to an actual IImage class so > that I can call its methods and then pass it to AddImage, but everything > I have tried has resulted in a SWIGTYPE_p_IImage on both methods. > Has SWIG parsed the definition of IImage? If not it will be treated like an opaque C struct and hence the typewrapper class. William |