1 %include <typemaps/valtypes.swg>
3 %fragment(SWIG_AsVal_frag(jstring),"header") {
5 SWIG_AsVal(jstring)(PyObject *obj, jstring *val)
13 int isunicode = PyUnicode_Check(obj);
14 if (!isunicode && PyString_Check(obj)) {
16 obj = tmp = PyUnicode_FromObject(obj);
22 if (sizeof(Py_UNICODE) == sizeof(jchar)) {
23 *val = JvNewString((const jchar *) PyUnicode_AS_UNICODE(obj),PyUnicode_GET_SIZE(obj));
26 int len = PyUnicode_GET_SIZE(obj);
27 Py_UNICODE *pchars = PyUnicode_AS_UNICODE(obj);
28 *val = JvAllocString (len);
29 jchar *jchars = JvGetStringChars (*val);
30 for (int i = 0; i < len; ++i) {
31 jchars[i] = pchars[i];
39 return SWIG_TypeError;
43 %fragment(SWIG_From_frag(jstring),"header") {
44 SWIGINTERNINLINE PyObject *
45 SWIG_From(jstring)(jstring val)
48 return SWIG_Py_Void();
50 if (sizeof(Py_UNICODE) == sizeof(jchar)) {
51 return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(val),
52 JvGetStringUTFLength(val));
54 int len = JvGetStringUTFLength(val);
55 Py_UNICODE pchars[len];
56 jchar *jchars = JvGetStringChars(val);
58 for (int i = 0; i < len; i++) {
59 pchars[i] = jchars[i];
61 return PyUnicode_FromUnicode((const Py_UNICODE *) pchars, len);
66 %typemaps_asvalfrom(%checkcode(STRING),
67 %arg(SWIG_AsVal(jstring)),
68 %arg(SWIG_From(jstring)),
69 %arg(SWIG_AsVal_frag(jstring)),
70 %arg(SWIG_From_frag(jstring)),
71 java::lang::String *);