Index: swig/Lib/python/jstring.i |
=================================================================== |
--- swig/Lib/python/jstring.i (revision 0) |
+++ swig/Lib/python/jstring.i (revision 0) |
@@ -0,0 +1,72 @@ |
+%include <typemaps/valtypes.swg> |
+ |
+%fragment(SWIG_AsVal_frag(jstring),"header") { |
+SWIGINTERN int |
+SWIG_AsVal(jstring)(PyObject *obj, jstring *val) |
+{ |
+ if (obj == Py_None) { |
+ if (val) *val = 0; |
+ return SWIG_OK; |
+ } |
+ |
+ PyObject *tmp = 0; |
+ int isunicode = PyUnicode_Check(obj); |
+ if (!isunicode && PyString_Check(obj)) { |
+ if (val) { |
+ obj = tmp = PyUnicode_FromObject(obj); |
+ } |
+ isunicode = 1; |
+ } |
+ if (isunicode) { |
+ if (val) { |
+ if (sizeof(Py_UNICODE) == sizeof(jchar)) { |
+ *val = JvNewString((const jchar *) PyUnicode_AS_UNICODE(obj),PyUnicode_GET_SIZE(obj)); |
+ return SWIG_NEWOBJ; |
+ } else { |
+ int len = PyUnicode_GET_SIZE(obj); |
+ Py_UNICODE *pchars = PyUnicode_AS_UNICODE(obj); |
+ *val = JvAllocString (len); |
+ jchar *jchars = JvGetStringChars (*val); |
+ for (int i = 0; i < len; ++i) { |
+ jchars[i] = pchars[i]; |
+ } |
+ return SWIG_NEWOBJ; |
+ } |
+ } |
+ Py_XDECREF(tmp); |
+ return SWIG_OK; |
+ } |
+ return SWIG_TypeError; |
+} |
+} |
+ |
+%fragment(SWIG_From_frag(jstring),"header") { |
+SWIGINTERNINLINE PyObject * |
+SWIG_From(jstring)(jstring val) |
+{ |
+ if (!val) { |
+ return SWIG_Py_Void(); |
+ } |
+ if (sizeof(Py_UNICODE) == sizeof(jchar)) { |
+ return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(val), |
+ JvGetStringUTFLength(val)); |
+ } else { |
+ int len = JvGetStringUTFLength(val); |
+ Py_UNICODE pchars[len]; |
+ jchar *jchars = JvGetStringChars(val); |
+ |
+ for (int i = 0; i < len; i++) { |
+ pchars[i] = jchars[i]; |
+ } |
+ return PyUnicode_FromUnicode((const Py_UNICODE *) pchars, len); |
+ } |
+} |
+} |
+ |
+%typemaps_asvalfrom(%checkcode(STRING), |
+ %arg(SWIG_AsVal(jstring)), |
+ %arg(SWIG_From(jstring)), |
+ %arg(SWIG_AsVal_frag(jstring)), |
+ %arg(SWIG_From_frag(jstring)), |
+ java::lang::String *); |
+ |