diff options
Diffstat (limited to 'subversion/bindings/swig/include/svn_string.swg')
-rw-r--r-- | subversion/bindings/swig/include/svn_string.swg | 67 |
1 files changed, 50 insertions, 17 deletions
diff --git a/subversion/bindings/swig/include/svn_string.swg b/subversion/bindings/swig/include/svn_string.swg index 9fb2dac..8be4c3d 100644 --- a/subversion/bindings/swig/include/svn_string.swg +++ b/subversion/bindings/swig/include/svn_string.swg @@ -36,9 +36,8 @@ typedef struct svn_string_t svn_string_t; if (*$1 == NULL) { Py_INCREF(Py_None); s = Py_None; - } - else { - s = PyString_FromStringAndSize((*$1)->data, (*$1)->len); + } else { + s = PyBytes_FromStringAndSize((*$1)->data, (*$1)->len); if (s == NULL) SWIG_fail; } @@ -75,14 +74,20 @@ typedef struct svn_string_t svn_string_t; #ifdef SWIGPYTHON %typemap(in) svn_stringbuf_t * { - if (!PyString_Check($input)) { - PyErr_SetString(PyExc_TypeError, "not a string"); + if (!PyBytes_Check($input)) { + PyErr_SetString(PyExc_TypeError, "not a bytes object"); SWIG_fail; } - $1 = svn_stringbuf_ncreate(PyString_AS_STRING($input), - PyString_GET_SIZE($input), - /* ### gah... what pool to use? */ - _global_pool); + { + Py_ssize_t strBufLen; + char *strBufChar; + if (-1 == PyBytes_AsStringAndSize($input, &strBufChar, &strBufLen)) { + SWIG_fail; + } + $1 = svn_stringbuf_ncreate(strBufChar, strBufLen, + /* ### gah... what pool to use? */ + _global_pool); + } } #endif @@ -139,7 +144,7 @@ typedef struct svn_string_t svn_string_t; #ifdef SWIGPYTHON %typemap(out) svn_stringbuf_t * { - $result = PyString_FromStringAndSize($1->data, $1->len); + $result = PyBytes_FromStringAndSize($1->data, (Py_ssize_t)($1->len)); } #endif @@ -174,12 +179,16 @@ typedef struct svn_string_t svn_string_t; if ($input == Py_None) $1 = NULL; else { - if (!PyString_Check($input)) { - PyErr_SetString(PyExc_TypeError, "not a string"); + Py_ssize_t pyStrLen; + if (!PyBytes_Check($input)) { + PyErr_SetString(PyExc_TypeError, "not a bytes object"); + SWIG_fail; + } + if (PyBytes_AsStringAndSize($input, (char **)&(value.data), + &pyStrLen) == -1) { SWIG_fail; } - value.data = PyString_AS_STRING($input); - value.len = PyString_GET_SIZE($input); + value.len = pyStrLen; $1 = &value; } } @@ -223,7 +232,7 @@ typedef struct svn_string_t svn_string_t; #ifdef SWIGPYTHON %typemap(out) svn_string_t * { - $result = PyString_FromStringAndSize($1->data, $1->len); + $result = PyBytes_FromStringAndSize($1->data, $1->len); } #endif #ifdef SWIGPERL @@ -242,6 +251,26 @@ typedef struct svn_string_t svn_string_t; } #endif + /* ----------------------------------------------------------------------- + Type: char * (input) +*/ +#ifdef SWIGPYTHON +%typemap (in) IN_STRING +{ + $1 = svn_swig_py_string_to_cstring($input, FALSE, "$symname", "$1_name"); + if (PyErr_Occurred()) SWIG_fail; +} + +%typemap (freearg) IN_STRING ""; + +%apply IN_STRING { + const char *, + char *, + char const *, + char * const, + char const * const +}; +#endif /* ----------------------------------------------------------------------- define a way to return a 'const char *' */ @@ -253,7 +282,7 @@ typedef struct svn_string_t svn_string_t; s = Py_None; } else { - s = PyString_FromString(*$1); + s = PyBytes_FromString(*$1); if (s == NULL) SWIG_fail; } @@ -283,4 +312,8 @@ typedef struct svn_string_t svn_string_t; #endif /* svn_wc_get_ancestry() lacks a 'const' */ -%apply const char **OUTPUT { const char **, char **url }; +%apply const char **OUTPUT { + const char **, + char **url, + char **log_message +}; |