From: Aviv H. <avi...@gm...> - 2010-10-17 18:04:51
|
The C# wrapper of std::vector<MyClass> has the following problem. Supposed your Swig type mapping is std::vector<MyClass> (C++) --> MyClassVector (C#). The following C# code can crash non-deterministically { MyClassVector vec= computeVector(); //1 MyClass obj = vec[0]; //2 obj.action(); //3 } At line 2, vec creates a new C# object of MyClass which points to the internal data in vec. However the reference count of said obj according to the C# garbage collector is 1, and the reference count of vec is also 1. When line 2 ends, the reference count of vec drops to 0 because we’re past its last reference. Before line 3 executes, vec may be collected. At line 3, obj will then apply action() to a dangling pointer to the now-deallocated memory. This bug was reported way back in 2007, *ID: 1707016* https://sourceforge.net/tracker/index.php?func=detail&aid=1707016&group_id=1645&atid=101645 This bug is non-deterministic and very frustrating. How can I overcome this problem? Thanks. |
From: The C. <the...@ji...> - 2010-10-17 19:47:55
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"> <title></title> </head> <body text="#000000" bgcolor="#ffffff"> <br> Is there a reason that the default implementation of std_vector.i and std_map.i for java don't map into java collections (list/arraylist, map/hashmap)?<br> <br> Has anyone written typemaps to do this?<br> <br> Thanks<br> Jim<br> <br> </body> </html> |
From: The C. <the...@ji...> - 2010-10-18 11:11:24
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"> <title></title> </head> <body text="#000000" bgcolor="#ffffff"> <br> I need to get unicode (utf-8) working correctly in python 2.x (looking through the swig code it seems to be working for python 3 only). Has someone worked out typemaps for this already? Here is some simple test code that I need to get working:<br> <br> python code:<br> --------------------------<br> <br> import unicodetest<br> <br> if __name__=="__main__":<br> val = unicode('here I am in the python')<br> hello = unicodetest.A()<br> hello.func(val)<br> <br> -----------------------------<br> C++ code:<br> -------------------------<br> <br> #include <string><br> <br> class A<br> {<br> public:<br> A() {}<br> virtual void func(const std::string& str) { printf("In %s\n",str.c_str()); }<br> };<br> ----------------------<br> <br> Any suggestions?<br> Thanks<br> Jim<br> <br> <br> <br> </body> </html> |
From: The C. <the...@ji...> - 2010-10-18 11:14:59
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"> </head> <body text="#000000" bgcolor="#ffffff"> Sorry about the double post, I forgot to change the subject line on the original.<br> <br> On 10/18/10 07:11, The Carrolls wrote: <blockquote cite="mid:4CB...@ji..." type="cite"> <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"> <title></title> <br> I need to get unicode (utf-8) working correctly in python 2.x (looking through the swig code it seems to be working for python 3 only). Has someone worked out typemaps for this already? Here is some simple test code that I need to get working:<br> <br> python code:<br> --------------------------<br> <br> import unicodetest<br> <br> if __name__=="__main__":<br> val = unicode('here I am in the python')<br> hello = unicodetest.A()<br> hello.func(val)<br> <br> -----------------------------<br> C++ code:<br> -------------------------<br> <br> #include <string><br> <br> class A<br> {<br> public:<br> A() {}<br> virtual void func(const std::string& str) { printf("In %s\n",str.c_str()); }<br> };<br> ----------------------<br> <br> Any suggestions?<br> Thanks<br> Jim<br> <br> </blockquote> <br> </body> </html> |
From: Matthias <ni...@dr...> - 2010-10-18 14:48:23
|
Am 18.10.2010, 13:14 Uhr, schrieb The Carrolls <the...@ji...>: > Sorry about the double post, I forgot to change the subject line on the > original. > > On 10/18/10 07:11, The Carrolls wrote: > > > I need to get unicode (utf-8) working correctly in python 2.x (looking > through > the swig code it seems to be working for python 3 only). Has someone > worked out > typemaps for this already? Here is some simple test code that I need to > get > working: > > python code: > -------------------------- > > import unicodetest > > if __name__=="__main__": > val = unicode('here I am in the python') > hello = unicodetest.A() > hello.func(val) How about hello.func( val.encode('utf-8') ) here? This makes it clear that a conversion is happening. -Matthias |
From: The C. <the...@ji...> - 2010-10-19 12:28:06
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-15" http-equiv="Content-Type"> <title></title> </head> <body text="#000000" bgcolor="#ffffff"> I have a typemap that does this now. I'm not sure why the python typemaps don't already do this. The standard SWIG included python std::string typemap handles Unicode for Python3 but not Python2.x. I basically took the typemap code that would execute for Python3 and allowed it to also execute for Python2.x. This SEEMS to work fine.<br> <br> I would prefer to submit a patch with a fix for Python 2.x rather than have my custom typemap. Should I go ahead and do that? Or does someone know the reason it's explicitly NOT done in Python2 already.<br> <br> On 10/18/10 11:34, The Carrolls wrote: <blockquote cite="mid:4CB...@ji..." type="cite"> <meta content="text/html; charset=ISO-8859-15" http-equiv="Content-Type"> <title></title> On 10/18/10 10:48, Matthias wrote: <blockquote cite="mid:op.vkr0qji2zzzl10@nitrogenycs3" type="cite">Am 18.10.2010, 13:14 Uhr, schrieb The Carrolls <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:the...@ji..."><the...@ji...></a>: <br> <br> <blockquote type="cite">Sorry about the double post, I forgot to change the subject line on the original. <br> <br> On 10/18/10 07:11, The Carrolls wrote: <br> <br> <br> I need to get unicode (utf-8) working correctly in python 2.x (looking through <br> the swig code it seems to be working for python 3 only). Has someone worked out <br> typemaps for this already? Here is some simple test code that I need to get <br> working: <br> <br> python code: <br> -------------------------- <br> <br> import unicodetest <br> <br> if __name__=="__main__": <br> val = unicode('here I am in the python') <br> hello = unicodetest.A() <br> hello.func(val) <br> </blockquote> <br> How about <br> <br> hello.func( val.encode('utf-8') ) <br> <br> here? This makes it clear that a conversion is happening. <br> <br> -Matthias <br> <br> </blockquote> <br> Matthias, thanks for the response. <br> <br> What you suggest works. The problem is backward compatibility. There are a large number of python scripts already written and none of which I have direct control over. I'm trying to replace the C++ side using a scripting-language independent API plus SWIG, but keep the existing scripts working.<br> <br> I can work out a typemap but I don't have a lot of experience with them and was hoping that someone might have worked one out already.<br> <br> Again, thanks for the response.<br> Jim<br> <br> </blockquote> <br> </body> </html> |
From: William S F. <ws...@fu...> - 2010-10-22 05:22:56
|
Haoyu, might know why it only works in Python 2 and not 3. Please submit a patch to SF and reference it here. William The Carrolls wrote: > I have a typemap that does this now. I'm not sure why the python > typemaps don't already do this. The standard SWIG included python > std::string typemap handles Unicode for Python3 but not Python2.x. I > basically took the typemap code that would execute for Python3 and > allowed it to also execute for Python2.x. This SEEMS to work fine. > > I would prefer to submit a patch with a fix for Python 2.x rather than > have my custom typemap. Should I go ahead and do that? Or does someone > know the reason it's explicitly NOT done in Python2 already. > > On 10/18/10 11:34, The Carrolls wrote: >> On 10/18/10 10:48, Matthias wrote: >>> Am 18.10.2010, 13:14 Uhr, schrieb The Carrolls >>> <the...@ji...>: >>> >>>> Sorry about the double post, I forgot to change the subject line on >>>> the original. >>>> >>>> On 10/18/10 07:11, The Carrolls wrote: >>>> >>>> >>>> I need to get unicode (utf-8) working correctly in python 2.x >>>> (looking through >>>> the swig code it seems to be working for python 3 only). Has someone >>>> worked out >>>> typemaps for this already? Here is some simple test code that I need >>>> to get >>>> working: >>>> >>>> python code: >>>> -------------------------- >>>> >>>> import unicodetest >>>> >>>> if __name__=="__main__": >>>> val = unicode('here I am in the python') >>>> hello = unicodetest.A() >>>> hello.func(val) >>> >>> How about >>> >>> hello.func( val.encode('utf-8') ) >>> >>> here? This makes it clear that a conversion is happening. >>> >>> -Matthias >>> >> >> Matthias, thanks for the response. >> >> What you suggest works. The problem is backward compatibility. There >> are a large number of python scripts already written and none of which >> I have direct control over. I'm trying to replace the C++ side using a >> scripting-language independent API plus SWIG, but keep the existing >> scripts working. >> >> I can work out a typemap but I don't have a lot of experience with >> them and was hoping that someone might have worked one out already. >> >> Again, thanks for the response. >> Jim >> > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > > > ------------------------------------------------------------------------ > > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user |
From: The C. <the...@ji...> - 2010-10-22 11:27:35
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-15" http-equiv="Content-Type"> <title></title> </head> <body text="#000000" bgcolor="#ffffff"> I submitted a feature request with a patch after I originally posted.<br> <br> <a class="moz-txt-link-freetext" href="http://sourceforge.net/tracker/?func=detail&aid=3090894&group_id=1645&atid=351645">http://sourceforge.net/tracker/?func=detail&aid=3090894&group_id=1645&atid=351645</a><br> <br> I didn't get any feedback yet so I'm not sure if it will be accepted.<br> <br> On 10/22/10 01:22, William S Fulton wrote: <blockquote cite="mid:4CC...@fu..." type="cite">Haoyu, might know why it only works in Python 2 and not 3. Please submit a patch to SF and reference it here. <br> <br> William <br> The Carrolls wrote: <br> <blockquote type="cite">I have a typemap that does this now. I'm not sure why the python typemaps don't already do this. The standard SWIG included python std::string typemap handles Unicode for Python3 but not Python2.x. I basically took the typemap code that would execute for Python3 and allowed it to also execute for Python2.x. This SEEMS to work fine. <br> <br> I would prefer to submit a patch with a fix for Python 2.x rather than have my custom typemap. Should I go ahead and do that? Or does someone know the reason it's explicitly NOT done in Python2 already. <br> <br> On 10/18/10 11:34, The Carrolls wrote: <br> <blockquote type="cite">On 10/18/10 10:48, Matthias wrote: <br> <blockquote type="cite">Am 18.10.2010, 13:14 Uhr, schrieb The Carrolls <a class="moz-txt-link-rfc2396E" href="mailto:the...@ji..."><the...@ji...></a>: <br> <br> <blockquote type="cite">Sorry about the double post, I forgot to change the subject line on the original. <br> <br> On 10/18/10 07:11, The Carrolls wrote: <br> <br> <br> I need to get unicode (utf-8) working correctly in python 2.x (looking through <br> the swig code it seems to be working for python 3 only). Has someone worked out <br> typemaps for this already? Here is some simple test code that I need to get <br> working: <br> <br> python code: <br> -------------------------- <br> <br> import unicodetest <br> <br> if __name__=="__main__": <br> val = unicode('here I am in the python') <br> hello = unicodetest.A() <br> hello.func(val) <br> </blockquote> <br> How about <br> <br> hello.func( val.encode('utf-8') ) <br> <br> here? This makes it clear that a conversion is happening. <br> <br> -Matthias <br> <br> </blockquote> <br> Matthias, thanks for the response. <br> <br> What you suggest works. The problem is backward compatibility. There are a large number of python scripts already written and none of which I have direct control over. I'm trying to replace the C++ side using a scripting-language independent API plus SWIG, but keep the existing scripts working. <br> <br> I can work out a typemap but I don't have a lot of experience with them and was hoping that someone might have worked one out already. <br> <br> Again, thanks for the response. <br> Jim <br> <br> </blockquote> <br> <br> </blockquote> </blockquote> <br> </body> </html> |
From: The C. <the...@ji...> - 2010-10-18 15:34:36
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-15" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> On 10/18/10 10:48, Matthias wrote: <blockquote cite="mid:op.vkr0qji2zzzl10@nitrogenycs3" type="cite">Am 18.10.2010, 13:14 Uhr, schrieb The Carrolls <a class="moz-txt-link-rfc2396E" href="mailto:the...@ji..."><the...@ji...></a>: <br> <br> <blockquote type="cite">Sorry about the double post, I forgot to change the subject line on the original. <br> <br> On 10/18/10 07:11, The Carrolls wrote: <br> <br> <br> I need to get unicode (utf-8) working correctly in python 2.x (looking through <br> the swig code it seems to be working for python 3 only). Has someone worked out <br> typemaps for this already? Here is some simple test code that I need to get <br> working: <br> <br> python code: <br> -------------------------- <br> <br> import unicodetest <br> <br> if __name__=="__main__": <br> val = unicode('here I am in the python') <br> hello = unicodetest.A() <br> hello.func(val) <br> </blockquote> <br> How about <br> <br> hello.func( val.encode('utf-8') ) <br> <br> here? This makes it clear that a conversion is happening. <br> <br> -Matthias <br> <br> </blockquote> <br> Matthias, thanks for the response. <br> <br> What you suggest works. The problem is backward compatibility. There are a large number of python scripts already written and none of which I have direct control over. I'm trying to replace the C++ side using a scripting-language independent API plus SWIG, but keep the existing scripts working.<br> <br> I can work out a typemap but I don't have a lot of experience with them and was hoping that someone might have worked one out already.<br> <br> Again, thanks for the response.<br> Jim<br> <br> </body> </html> |
From: William S F. <ws...@fu...> - 2010-10-19 05:56:02
|
The Carrolls wrote: > > Is there a reason that the default implementation of std_vector.i and > std_map.i for java don't map into java collections (list/arraylist, > map/hashmap)? > > Has anyone written typemaps to do this? > No one has got around to writing these and submitting them. If you want a good starting point, use the C# implementation in std_vector.i. William |