added example of mixing hand written jni code with swig
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@330 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
42d2c33bda
commit
f6f291ac35
6 changed files with 108 additions and 2 deletions
54
SWIG/Examples/java/native/example.i
Normal file
54
SWIG/Examples/java/native/example.i
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/* File : example.i */
|
||||
%module example
|
||||
|
||||
%{
|
||||
#include <string.h>
|
||||
|
||||
typedef struct point {
|
||||
int x;
|
||||
int y;
|
||||
} Point;
|
||||
|
||||
|
||||
Point *point_create(int x, int y) {
|
||||
Point *p = (Point *) malloc(sizeof(Point));
|
||||
p->x = x;
|
||||
p->y = y;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
/* this function will be wrapped by jswig */
|
||||
char *point_toString1(Point *p) {
|
||||
char buf[80];
|
||||
|
||||
sprintf(buf, "(%d,%d)", p->x, p->y);
|
||||
|
||||
return strdup(buf); /* memory leak */
|
||||
}
|
||||
|
||||
/* this one we wrapped manually*/
|
||||
JNIEXPORT jstring JNICALL Java_example_point_1toString2(JNIEnv *jenv, jclass jcls, jlong jpoint) {
|
||||
Point * p;
|
||||
char buf[80];
|
||||
jstring result;
|
||||
|
||||
p = *(Point **)&jpoint;
|
||||
sprintf(buf, "[%d,%d]", p->x, p->y);
|
||||
|
||||
result = (*jenv)->NewStringUTF(jenv, buf);
|
||||
|
||||
return result;
|
||||
}
|
||||
%}
|
||||
|
||||
|
||||
Point *point_create(int x, int y);
|
||||
char *point_toString1(Point *p);
|
||||
/*
|
||||
Use %new to free the memory returned by point_toString1
|
||||
|
||||
%new char *point_toString1(Point *p);
|
||||
*/
|
||||
|
||||
%native(point_toString2) char *point_toString2(Point *p);
|
||||
Loading…
Add table
Add a link
Reference in a new issue