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:
Marcelo Matus 2005-12-30 08:54:56 +00:00
commit e4b8871ae2
13 changed files with 659 additions and 2 deletions

1
Lib/python/cni.i Normal file
View file

@ -0,0 +1 @@
%include <typemaps/cni.swg>

72
Lib/python/jstring.i Normal file
View 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 *);