/tags/rel-1-3-25/SWIG/Examples/python/weave/runme.py
Python | 72 lines | 51 code | 4 blank | 17 comment | 0 complexity | 0adf3761a3df8c00aabbc94caaa0b572 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- """
- 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()