logo       

Re[3]: Directors and passing args by value.: msg#00114

programming.swig

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

I'm sorry - I've mistaken. Passing enum to function is ok.
Returning - this is what doesn't work.

Best regards,
Kerim mailto:warkid@xxxxxxxxx

Tuesday, November 18, 2003, 3:46:36 PM, you wrote:

KB> Hello.

KB> I've uncommented that "dangerous" typemap;-) It works well except
KB> it doesn't work with enums.
KB> What could I do to make it handle them?

KB> Thanks.
KB> Kerim mailto:warkid@xxxxxxxxx

KB> 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
>>>
>>>


KB> _______________________________________________
KB> Swig maillist - Swig@xxxxxxxxxxxxxxx
KB> 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