add gcj and java->python initial support
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8134 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
c567ffaf27
commit
e4b8871ae2
13 changed files with 659 additions and 2 deletions
1
Lib/python/cni.i
Normal file
1
Lib/python/cni.i
Normal file
|
|
@ -0,0 +1 @@
|
|||
%include <typemaps/cni.swg>
|
||||
72
Lib/python/jstring.i
Normal file
72
Lib/python/jstring.i
Normal file
|
|
@ -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 js)
|
||||
{
|
||||
if (!js) {
|
||||
return SWIG_Py_Void();
|
||||
}
|
||||
if (sizeof(Py_UNICODE) == sizeof(jchar)) {
|
||||
return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(js),
|
||||
js->length());
|
||||
} else {
|
||||
int len = js->length();
|
||||
Py_UNICODE pchars[len];
|
||||
jchar *jchars = JvGetStringChars(js);
|
||||
|
||||
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 *);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue