File: example.i

package info (click to toggle)
cableswig 0.1.0%2Bcvs20100501-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 16,068 kB
  • ctags: 10,732
  • sloc: cpp: 34,106; ansic: 32,676; yacc: 3,999; makefile: 3,791; python: 2,387; ruby: 2,063; lisp: 1,841; java: 1,817; tcl: 1,097; php: 908; ml: 804; perl: 686; cs: 206; sh: 155
file content (54 lines) | stat: -rw-r--r-- 979 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 SWIG */
char *point_toString1(Point *p) {
  static char buf[80];

  sprintf(buf, "(%d,%d)", p->x, p->y);

  return buf;
}

/* this one we wrapped manually*/
JNIEXPORT jstring JNICALL Java_exampleJNI_point_1toString2(JNIEnv *jenv, jclass jcls, jlong jpoint) {
    Point * p;
    char buf[80];
    jstring result;

    (void)jcls;

    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);

/* 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);