|
Re[2]: Directors and passing args by value.: msg#00113programming.swig
Hello. I've uncommented that "dangerous" typemap;-) It works well except it doesn't work with enums. What could I do to make it handle them? Thanks. Kerim mailto:warkid@xxxxxxxxx Tuesday, November 18, 2003, 10:28:21 AM, you wrote: MR> I actually added the typemap to do this to python.swg many MR> months ago, but commented it out with the note "this is rather MR> dangerous." ;-) I probably should have been more explicit at MR> that time, since I can't remember now exactly what concerned MR> me about it (other than the possibility of the python method MR> hanging on to references to its arguments). Maybe there's MR> nothing terribly wrong with that typemap as it stands, or MR> maybe there's another approach that would be safer. Any MR> typemap/object ownership gurus care to comment? MR> Mark MR> On Mon, Nov 17, 2003 at 12:08:20PM +0300, Kerim Borchaev wrote: >> Hello. >> >> I've checked CVS version and now it seems that directors aren't >> generated for methods with args passed by value. Any plans to >> support it? >> >> Best regards, >> Kerim mailto:warkid@xxxxxxxxx >> >> Thursday, November 13, 2003, 8:16:02 PM, you wrote: >> >> MR> Hi Kerim, >> >> MR> What version of SWIG are you using? SWIG cvs parses your >> MR> interface without any warnings on my machine, and does the >> MR> right thing in the python test. Note that if you ever get >> MR> warning 461, SWIG will not generate any director stubs for >> MR> the method. So the result you get in your Python test is >> MR> understandable, and the only question is what is causing the >> MR> warning. >> >> MR> Cheers, >> MR> Mark >> >> >> MR> On Thu, Nov 13, 2003 at 05:55:55PM +0300, Kerim Borchaev wrote: >> >> Hello swig, >> >> >> >> SWIG doesn't wrap for directors methods that return objects by >> >> value? >> >> >> >> This code: >> >> //main.i >> >> %module(directors="1") test >> >> >> >> %feature("director"); >> >> %inline %{ >> >> struct D{ >> >> int value; >> >> }; >> >> >> >> struct C{ >> >> virtual ~C(){} >> >> virtual D method(){ >> >> D d; >> >> d.value = 7; >> >> return d; >> >> } >> >> }; >> >> >> >> int getValue(C&o){ >> >> D d = o.method(); >> >> return d.value; >> >> } >> >> %} >> >> ////////////////////////// >> >> >> >> Produces this warning: >> >> >> >> main.i:29: Warning(461): Unable to return type D in director method >> >> C::method (s >> >> kipping method). >> >> >> >> And works like this: >> >> >> >> Python 2.3.2 (#49, Oct 2 2003, 20:02:00) [MSC v.1200 32 bit (Intel)] on >> >> win32 >> >> Type "help", "copyright", "credits" or "license" for more information. >> >> >>> import test >> >> >>> from test import * >> >> >>> class Derived(C): >> >> ... def method(self): >> >> ... d = D() >> >> ... d.value = 13 >> >> ... return d >> >> ... >> >> >>> getValue(Derived())#should return 13 >> >> 7 >> >> >> >> >> >> >> >> Best regards, >> >> Kerim mailto:warkid@xxxxxxxxx >> >> >> >> >> >> _______________________________________________ >> >> Swig maillist - Swig@xxxxxxxxxxxxxxx >> >> http://mailman.cs.uchicago.edu/mailman/listinfo/swig >> >> _______________________________________________ Swig maillist - Swig@xxxxxxxxxxxxxxx http://mailman.cs.uchicago.edu/mailman/listinfo/swig |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | ignoring inputs and using self objects in typemaps: 00113, Viktor Marohnic |
|---|---|
| Next by Date: | Re[3]: Directors and passing args by value.: 00113, Kerim Borchaev |
| Previous by Thread: | Re: Directors and passing args by value.i: 00113, Mark Rose |
| Next by Thread: | Re[3]: Directors and passing args by value.: 00113, Kerim Borchaev |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |