summaryrefslogtreecommitdiff
path: root/Examples/test-suite/aggregate.i
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/test-suite/aggregate.i
downloadswig-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.i37
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;
+}
+%}