/* File : example.i */ %module example %{ #include 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; } static char *point_toString(char *format, Point *p) { static char buf[80]; sprintf(buf, format, p->x, p->y); return buf; } /* this function will be wrapped by SWIG */ char *point_toString1(Point *p) { return point_toString("(%d,%d)", p); } /* this one we wrapped manually*/ JNIEXPORT jstring JNICALL Java_exampleJNI_point_1toString2(JNIEnv *jenv, jclass jcls, jlong jpoint) { Point * p; jstring result; (void)jcls; p = *(Point **)&jpoint; result = (*jenv)->NewStringUTF(jenv, point_toString("[%d,%d]", p)); return result; } %} Point *point_create(int x, int y); char *point_toString1(Point *p); /* give access to free() for memory cleanup of the malloc'd Point */ extern void free(void *memblock); %native(point_toString2) char *point_toString2(Point *p);