From: RODRIGUEZ-TORO C. <Car...@3d...> - 2010-03-25 12:58:02
|
I have asked a similar question somewhere else, but I still cannot find a good answer (see http://stackoverflow.com/questions/2479764/swig-c-to-c-pointer-to-pointe r-marshalling <http://stackoverflow.com/questions/2479764/swig-c-to-c-pointer-to-point er-marshalling> ). First answer did comment on typemap, but actual error message (yes, it is a memory issue, but it is because P/Invoke is not marshalling properly) I'm currently trying to solve a few marshalling problems, which I don't believe to be unique to my API. So, typical situation. I have a massive API in C++ and we want to create C# bindings, so we turn to SWIG. Everything works fine, except the following cases: class Foo { double x, y, z; }; class FooUserClass { public: // Other code here // .... // void FillInArray(int iNum, Foo** ioFooArray); void FillInArray(FooClass* ioFooArray[3]); void GetAllCoordPts( int iPts[][3] ); double * GetCoords(); }; Example generic objects (classes are examples, so no need to comment of actual design) 1. Function takes arrays of objects: void FillInArray(int iNum, Foo** ioFooArray); 2. Function takes an fixed-size array of objects: (similar to above) void FillInArray(Foo* ioFooArray[3]); 3. Function takes a multi-dimensional array (either of primitives or custom types): void GetAllCoordPts( int iPts[][3] ); 4. Function returns a pointer (heap-allocated) (apparently %newobject would've helped there): double * GetCoords(); So, any help on how to %typemap those calls would be greatly appreciated. Regards, Carlos RT. This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. Spatial Technology Ltd is a limited company registered in England with registered number 2320508. The registered office of Spatial Technology Limited, Ground Floor, Poseidon House, Castle Park, Cambridge, CB3 0RD. This email and any attachments are intended solely for the use of the individual or entity to whom it is addressed and may be confidential and/or privileged. If you are not one of the named recipients or have received this email in error, (i) you should not read, disclose, or copy it, (ii) please notify sender of your receipt by reply email and delete this email and all attachments, (iii) Dassault Systemes does not accept or assume any liability or responsibility for any use of or reliance on this email.For other languages, go to http://www.3ds.com/terms/email-disclaimer. |