diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
|---|---|---|
| committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
| commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
| tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/test-suite/aggregate.i | |
| download | swig-tarball-master.tar.gz | |
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/test-suite/aggregate.i')
| -rw-r--r-- | Examples/test-suite/aggregate.i | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Examples/test-suite/aggregate.i b/Examples/test-suite/aggregate.i new file mode 100644 index 0000000..dc00f06 --- /dev/null +++ b/Examples/test-suite/aggregate.i @@ -0,0 +1,37 @@ +/* This file tests a few new contract features. + First it checks to make sure the constant aggregation macro + %aggregate_check() works. This is defined in swig.swg. + + Next, it checks to make sure a simple contract works. + To support contracts, you need to add a macro to the runtime. + For Python, it looks like this: + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg #expr ); goto fail; } else + + Note: It is used like this: + SWIG_contract_assert(x == 1, "Some kind of error message"); + + Note: Contracts are still experimental. The runtime interface may + change in future versions. + */ + +%module aggregate + +%include <exception.i> +%aggregate_check(int, check_direction, UP, DOWN, LEFT, RIGHT) + +%contract move(int x) { +require: + check_direction(x); +} + +%inline %{ +#define UP 1 +#define DOWN 2 +#define LEFT 3 +#define RIGHT 4 + +int move(int direction) { + return direction; +} +%} |
