change char[] and char[ANY] to behave more like char* as default
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5938 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
3a96cf14ec
commit
f5fb952e36
1 changed files with 28 additions and 3 deletions
|
|
@ -1,3 +1,18 @@
|
||||||
|
//
|
||||||
|
// Use this macro if you prefer to preserve the size of char
|
||||||
|
// arrays, ie
|
||||||
|
// ------------------------------------------
|
||||||
|
// C Side => Python Side
|
||||||
|
// ------------------------------------------
|
||||||
|
// char name[5] = "hola" => 'hola\0'
|
||||||
|
//
|
||||||
|
// the default behaviour is
|
||||||
|
//
|
||||||
|
// char name[5] = "hola" => 'hola'
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//#define SWIG_PRESERVE_CARRAY_SIZE
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
* String typemaps for type Char (char or wchar_t)
|
* String typemaps for type Char (char or wchar_t)
|
||||||
* ------------------------------------------------------------ */
|
* ------------------------------------------------------------ */
|
||||||
|
|
@ -136,7 +151,8 @@
|
||||||
|
|
||||||
%typemap(varin,fragment=#SWIG_AsCharArray) Char []
|
%typemap(varin,fragment=#SWIG_AsCharArray) Char []
|
||||||
{
|
{
|
||||||
if (!SWIG_AsCharArray($input, $1, sizeof($1))) {
|
size_t size = sizeof($1);
|
||||||
|
if (!SWIG_AsCharArray($input, $1, size)) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
PyErr_SetString(PyExc_TypeError, "C variable '$name ($1_ltype)'");
|
PyErr_SetString(PyExc_TypeError, "C variable '$name ($1_ltype)'");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -144,7 +160,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(varout,fragment=#SWIG_FromCharArray) const Char []
|
%typemap(varout,fragment=#SWIG_FromCharArray) const Char []
|
||||||
"$result = SWIG_FromCharArray($1, sizeof($1));";
|
{
|
||||||
|
size_t size = sizeof($1);
|
||||||
|
#ifndef SWIG_PRESERVE_CARRAY_SIZE
|
||||||
|
while (size && ($1[size - 1] == '\0')) --size;
|
||||||
|
#endif
|
||||||
|
$result = SWIG_FromCharArray($1, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
|
|
@ -197,7 +220,9 @@
|
||||||
Char [ANY], const Char [ANY]
|
Char [ANY], const Char [ANY]
|
||||||
{
|
{
|
||||||
size_t size = $1_dim0;
|
size_t size = $1_dim0;
|
||||||
//while (size && ($1[size - 1] == '\0')) --size;
|
#ifndef SWIG_PRESERVE_CARRAY_SIZE
|
||||||
|
while (size && ($1[size - 1] == '\0')) --size;
|
||||||
|
#endif
|
||||||
$result = SWIG_FromCharArray($1, size);
|
$result = SWIG_FromCharArray($1, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue