mirror of https://github.com/swig/swig
57 lines
1.0 KiB
OpenEdge ABL
57 lines
1.0 KiB
OpenEdge ABL
/* 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;
|
|
}
|
|
|
|
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);
|