|
Re: Directors and passing args by value.: msg#00109programming.swig
I actually added the typemap to do this to python.swg many months ago, but commented it out with the note "this is rather dangerous." ;-) I probably should have been more explicit at that time, since I can't remember now exactly what concerned me about it (other than the possibility of the python method hanging on to references to its arguments). Maybe there's nothing terribly wrong with that typemap as it stands, or maybe there's another approach that would be safer. Any typemap/object ownership gurus care to comment? Mark 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: | Re: %include: 00109, Marcelo Matus |
|---|---|
| Next by Date: | Re: SWIG-PERL-Vector of pointers: 00109, Luigi Ballabio |
| Previous by Thread: | Re[2]: Directors and passing args by value.i: 00109, Kerim Borchaev |
| Next by Thread: | Re[2]: Directors and passing args by value.: 00109, Kerim Borchaev |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |