From: <dar...@us...> - 2010-11-13 15:21:35
|
Revision: 2180 http://znc.svn.sourceforge.net/znc/?rev=2180&view=rev Author: darthgandalf Date: 2010-11-13 15:21:29 +0000 (Sat, 13 Nov 2010) Log Message: ----------- Modperl now does implicit conversion of arguments to CString when needed. Modified Paths: -------------- trunk/modules/modperl/CString.i Modified: trunk/modules/modperl/CString.i =================================================================== --- trunk/modules/modperl/CString.i 2010-11-07 16:57:08 UTC (rev 2179) +++ trunk/modules/modperl/CString.i 2010-11-13 15:21:29 UTC (rev 2180) @@ -17,31 +17,52 @@ SWIGINTERN int SWIG_AsPtr_std_string SWIG_PERL_DECL_ARGS_2(SV * obj, CString **val) { - char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; - if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { - if (buf) { - if (val) *val = new CString(buf, size - 1); - if (alloc == SWIG_NEWOBJ) free((char*)buf); - return SWIG_NEWOBJ; - } else { - if (val) *val = 0; - return SWIG_OLDOBJ; - } - } else { - static int init = 0; - static swig_type_info* descriptor = 0; - if (!init) { - descriptor = SWIG_TypeQuery("CString" " *"); - init = 1; - } - if (descriptor) { - CString *vptr; - int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); - if (SWIG_IsOK(res) && val) *val = vptr; - return res; - } - } - return SWIG_ERROR; + char* buf = 0 ; size_t size = 0; + int found = 0; + if (SvMAGICAL(obj)) { + SV *tmp = sv_newmortal(); + SvSetSV(tmp, obj); + obj = tmp; + } + static int init = 0; + static swig_type_info* descriptor = 0; + if (!init) { + descriptor = SWIG_TypeQuery("CString" " *"); + init = 1; + } + if (descriptor) { + CString *vptr; + int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } + } + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + char* vptr = 0; + if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) { + buf = vptr; + size = vptr ? (strlen(vptr) + 1) : 0; + found = 1; + } + } + if (!found) { + STRLEN len = 0; + buf = SvPV(obj, len); + size = len + 1; + found = 1; + } + if (found) { + if (buf) { + if (val) *val = new CString(buf, size - 1); + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } + return SWIG_ERROR; } } /*@SWIG@*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dar...@us...> - 2010-12-22 14:51:30
|
Revision: 2194 http://znc.svn.sourceforge.net/znc/?rev=2194&view=rev Author: darthgandalf Date: 2010-12-22 14:51:24 +0000 (Wed, 22 Dec 2010) Log Message: ----------- Fix license header for modperl/CString.i Modified Paths: -------------- trunk/modules/modperl/CString.i Modified: trunk/modules/modperl/CString.i =================================================================== --- trunk/modules/modperl/CString.i 2010-12-22 14:50:59 UTC (rev 2193) +++ trunk/modules/modperl/CString.i 2010-12-22 14:51:24 UTC (rev 2194) @@ -1,4 +1,8 @@ +/* + SWIG-generated sources are used here. + */ + %{ #include <string> %} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |