diff options
Diffstat (limited to 'Examples/python/weave/runme.py')
-rw-r--r-- | Examples/python/weave/runme.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Examples/python/weave/runme.py b/Examples/python/weave/runme.py new file mode 100644 index 0000000..529b4fc --- /dev/null +++ b/Examples/python/weave/runme.py @@ -0,0 +1,72 @@ +""" +Test weave support for SWIG wrapped objects. + +This example requires that one has weave installed. Weave is +distributed as part of SciPy (http://www.scipy.org). More information +on Weave may be had from here: + + http://www.scipy.org/documentation/weave + +As of November 22, 2004, this only works with weave from CVS. If +there is a more recent release of SciPy after this date, it should +work fine. + +""" + +import example +import weave +from weave import converters +from weave import swig2_spec + +# Weave does not support swig2 by default (yet). So add this to the +# list of default converters to test. +converters.default.insert(0, swig2_spec.swig2_converter()) + +def test(): + """ A simple test case for weave.""" + a = example.Foo() + a.x = 1 + b = example.Bar() + b.y = 2 + c = example.FooBar() + c.x = 1 + c.y = 2 + c.z = 3 + v = example.VectorBar() + v.append(b) + v.append(c) + d = v[0] + e = v[1] + v = example.VectorFoo() + v.append(a) + v.append(c) + f = v[0] + g = v[1] + + code = """ + std::cout << a->x << std::endl; + assert(a->x == 1); + std::cout << b->y << std::endl; + assert(b->y == 2); + std::cout << c->x << std::endl; + std::cout << c->y << std::endl; + std::cout << c->z << std::endl; + assert(c->x == 1); + assert(c->y == 2); + assert(c->z == 3); + std::cout << d->y << std::endl; + assert(d->y == 2); + std::cout << e->y << std::endl; + assert(e->y == 2); + std::cout << f->x << std::endl; + assert(f->x == 1); + std::cout << g->x << std::endl; + assert(g->x == 1); + """ + weave.inline(code, ['a', 'b', 'c', 'd', 'e', 'f', 'g'], + include_dirs=['.'], + headers=['"example.h"'], + verbose=2) + +if __name__ == "__main__": + test() |