logo       

Re[2]: Directors and passing args by value.: msg#00113

programming.swig

Subject: Re[2]: Directors and passing args by value.

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>
Google Custom Search

News | FAQ | advertise