fix char* typemap in bug #1080514
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6856 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
8147bda2dd
commit
66c195b89d
4 changed files with 27 additions and 8 deletions
|
|
@ -545,6 +545,19 @@ macro(size_t, pfx, sizet)
|
|||
}
|
||||
|
||||
|
||||
%inline %{
|
||||
|
||||
const char* char_foo(float f, const char *s) {
|
||||
return s;
|
||||
}
|
||||
|
||||
int char_foo(double d, int i) {
|
||||
return i;
|
||||
}
|
||||
|
||||
%}
|
||||
|
||||
|
||||
%apply SWIGTYPE* { char *};
|
||||
|
||||
%include "carrays.i"
|
||||
|
|
|
|||
|
|
@ -344,3 +344,12 @@ f2 = fptr_ref(f)
|
|||
if f1._a != f2._a:
|
||||
raise RuntimeError, "bad const ptr& typemap"
|
||||
|
||||
|
||||
v = char_foo(1,3)
|
||||
if v !=3:
|
||||
raise RuntimeError, "bad int typemap"
|
||||
|
||||
s = char_foo(1,"hello")
|
||||
if s !="hello":
|
||||
raise RuntimeError, "bad char* typemap"
|
||||
|
||||
|
|
|
|||
|
|
@ -40,12 +40,11 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize)
|
|||
SWIGINTERNSHORT int
|
||||
SWIG_AsCharPtr(PyObject *obj, char **val)
|
||||
{
|
||||
char* cptr = 0;
|
||||
if (SWIG_AsCharPtrAndSize(obj, &cptr, (size_t*)(0))) {
|
||||
if (val) *val = cptr;
|
||||
if (SWIG_AsCharPtrAndSize(obj, val, (size_t*)(0))) {
|
||||
return 1;
|
||||
}
|
||||
if (val) {
|
||||
PyErr_Clear();
|
||||
SWIG_type_error("char *", obj);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -44,13 +44,11 @@ SWIG_AsWCharPtrAndSize(PyObject *obj, wchar_t **cptr, size_t *psize)
|
|||
SWIGINTERN int
|
||||
SWIG_AsWCharPtr(PyObject *obj, wchar_t **val)
|
||||
{
|
||||
wchar_t * cptr = 0;
|
||||
int res = 0;
|
||||
if ((res = SWIG_AsWCharPtrAndSize(obj, &cptr, (size_t*)(0)))) {
|
||||
if (val) *val = cptr;
|
||||
return res;
|
||||
if (SWIG_AsWCharPtrAndSize(obj, val, (size_t*)(0))) {
|
||||
return 1;
|
||||
}
|
||||
if (val) {
|
||||
PyErr_Clear();
|
||||
SWIG_type_error("wchar_t *", obj);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue