From: Alexey S. <al...@as...> - 2013-07-16 19:39:11
|
Hi Robert! I've done it for our custom string class before, and it seems to work fine there... So I just thought that for char* it would be as easy. It appears not though. Probably this function is just used in too many places, and only part of them need the change. Ok, I'll look at the tests, maybe there will be some better idea. Alexey. 16.07.2013 07:41, Robert Stone пишет: > Hi Alexey, > > > I appreciate some more eyes here. I've spent some time on this > problem too, but I think the fix is a bit trickier than this. There is > definitely something unnatural in Perl callers of SWIG bindings when > char pointers are involved, but I think this patch adversely impacts > handling of other c string use patterns. Check the testcases for more > information, but I think this implementation ends up converting a string > like "\0" in perl to "0" at times, along with other unexpected effects. > > I've been meaning to look at this for a while, so maybe we can > collaborate on a solution. > > -Robert > > On Sat, Jul 13, 2013 at 09:19:50AM +0400, Alexey Sokolov wrote: >> I've opened a pull request regarding this... Hopefully it doesn't do >> anything obviously wrong. >> It enables such conversion for the whole SWIG/Perl. >> >> https://github.com/swig/swig/pull/66 >> >> 12.07.2013 18:22, Nathan Neulinger пишет: >>> New to swig, just trying to debug a specific issue with a project that is already using it. >>> >>> FreeSwitch uses swig for it's ESL library. >>> >>> Lib has a class: >>> >>> class ESLconnection { >>> private: >>> esl_handle_t handle; >>> public: >>> ESLconnection(const char *host, const char *port, const char *user, const char *password); >>> ESLconnection(const char *host, const char *port, const char *password); >>> ESLconnection(int socket); >>> virtual ~ESLconnection(); >>> ... >>> >>> Problem is that when using this from perl, this works: >>> >>> my $esl = new ESL::ESLconnection("127.0.0.1", "8021", $eslpw); >>> >>> but this does not: >>> >>> my $esl = new ESL::ESLconnection("127.0.0.1", 8021, $eslpw); >>> >>> >>> Is there something I can do to the definition (without changing the underlying library to add a new constructor) to >>> allow the perl wrapper to support passing in an integer instead of a string? >>> >>> It looks like the wrapper I'm compiling was generated with swig 1.3.35. If I regenerate with 2.0.8, I get: >>> >>> No matching function for overloaded 'new_ESLconnection' at /local/freeswitch/libs/ESL.pm line 118. >>> >>> Is there a way to enable it to support int->string conversion on that parameter easily? >>> >>> -- Nathan >>> >>> ------------------------------------------------------------ >>> Nathan Neulinger nn...@ne... >>> Neulinger Consulting (573) 612-1412 >>> >>> ------------------------------------------------------------------------------ >>> See everything from the browser to the database with AppDynamics >>> Get end-to-end visibility with application monitoring from AppDynamics >>> Isolate bottlenecks and diagnose root cause in seconds. >>> Start your free trial of AppDynamics Pro today! >>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Swig-user mailing list >>> Swi...@li... >>> https://lists.sourceforge.net/lists/listinfo/swig-user >> >> -- >> Best regards, >> Alexey "DarthGandalf" Sokolov >> >> > > >> ------------------------------------------------------------------------------ >> See everything from the browser to the database with AppDynamics >> Get end-to-end visibility with application monitoring from AppDynamics >> Isolate bottlenecks and diagnose root cause in seconds. >> Start your free trial of AppDynamics Pro today! >> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk >> _______________________________________________ >> Swig-devel mailing list >> Swi...@li... >> https://lists.sourceforge.net/lists/listinfo/swig-devel -- Best regards, Alexey "DarthGandalf" Sokolov |