add jstring.i for ruby

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8138 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-12-30 10:51:35 +00:00
commit 8db859aa80
4 changed files with 54 additions and 6 deletions

View file

@ -1,5 +1,6 @@
%module example
%include <gcj/cni.i>
%include <jstring.i>
%{
#include "Example.h"

View file

@ -12,5 +12,7 @@ e3 = e1.Add(e1,e2)
print e3.mPublicInt,"\n"
print e1.Add("1","2"),"\n"
Example.JvDetachCurrentThread()

View file

@ -42,18 +42,18 @@ SWIG_AsVal(jstring)(PyObject *obj, jstring *val)
%fragment(SWIG_From_frag(jstring),"header") {
SWIGINTERNINLINE PyObject *
SWIG_From(jstring)(jstring js)
SWIG_From(jstring)(jstring val)
{
if (!js) {
if (!val) {
return SWIG_Py_Void();
}
if (sizeof(Py_UNICODE) == sizeof(jchar)) {
return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(js),
js->length());
return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(val),
JvGetStringUTFLength(val));
} else {
int len = js->length();
int len = JvGetStringUTFLength(val);
Py_UNICODE pchars[len];
jchar *jchars = JvGetStringChars(js);
jchar *jchars = JvGetStringChars(val);
for (int i = 0; i < len; i++) {
pchars[i] = jchars[i];

45
SWIG/Lib/ruby/jstring.i Normal file
View file

@ -0,0 +1,45 @@
%include <typemaps/valtypes.swg>
%fragment(SWIG_AsVal_frag(jstring),"header") {
SWIGINTERN int
SWIG_AsVal(jstring)(VALUE obj, jstring *val)
{
if (NIL_P(obj)){
if (val) *val = 0;
return SWIG_OK;
}
if (TYPE(obj) == T_STRING) {
if (val) {
char *cstr = rb_string_value_ptr(&(obj));
jsize len = RSTRING(obj)->len;
*val = JvNewStringLatin1(cstr, len);
}
return SWIG_NEWOBJ;
}
return SWIG_TypeError;
}
}
%fragment(SWIG_From_frag(jstring),"header") {
SWIGINTERNINLINE VALUE
SWIG_From(jstring)(jstring val)
{
if (!val) {
return Qnil;
}
else {
jint len = JvGetStringUTFLength(val);
char buf[len];
JvGetStringUTFRegion(val, 0, len, buf);
return rb_str_new(buf,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 *);