add a simple swig example (from the turorial)

master
neingeist 11 years ago
parent 710e4c3657
commit 12d1807d1e

@ -0,0 +1,22 @@
.PHONY: default
default: all test
.PHONY: all
all: _test_swig.so
.PHONY: test
test:
python2.7 test_swig_test.py
_test_swig.so: test_swig.o
ld -shared test_swig.o test_swig_wrap.o -o _test_swig.so
test_swig.o: test_swig_wrap.c
gcc -fpic -c test_swig.c test_swig_wrap.c -I/usr/include/python2.7
test_swig_wrap.c: test_swig.i
swig -python $<
.PHONY: clean
clean:
rm -f *.o *.so test_swig_wrap.c *.pyc test_swig.py

@ -0,0 +1,20 @@
/* Example from the SWIG tutorial */
#include <time.h>
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
char *get_time() {
time_t ltime;
time(&ltime);
return ctime(&ltime);
}

@ -0,0 +1,14 @@
/* Example from the SWIG tutorial */
%module test_swig
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
%}
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();

@ -0,0 +1,15 @@
from __future__ import division, print_function
import test_swig
# FIXME
#print(test_swig.My_variable)
#assert(test_swig.My_variable == 3.0)
print(test_swig.fact(5))
assert(test_swig.fact(5) == 120)
print(test_swig.my_mod(23, 5))
assert(test_swig.my_mod(23, 5) == 3)
print(test_swig.get_time(), end="")
assert(len(test_swig.get_time()) > 20)
Loading…
Cancel
Save