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/allowexcept.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/allowexcept.i')
| -rw-r--r-- | Examples/test-suite/allowexcept.i | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Examples/test-suite/allowexcept.i b/Examples/test-suite/allowexcept.i new file mode 100644 index 0000000..37b01cd --- /dev/null +++ b/Examples/test-suite/allowexcept.i @@ -0,0 +1,73 @@ +// Test allowexcept feature + +%module allowexcept + +// First make sure %exception is not used by default for variable wrappers + +%nodefaultctor; +%nodefaultdtor; +%exception { + This will not compile +} + +%inline %{ +struct UVW {}; +UVW uvw_global_variable; +struct Bar { + UVW member_variable; + static UVW static_member_variable; +}; +UVW Bar::static_member_variable; +%} + + +// Now test the allowexcept feature by making the usual $action uncompileable and ensuring the %exception is picked up + +struct XYZ { +}; + +// The operator& trick doesn't work for SWIG/PHP because the generated code +// takes the address of the variable in the code in the "vinit" section. +#ifdef SWIGPHP +%{ +struct XYZ { + void foo() {} +private: + XYZ& operator=(const XYZ& other); // prevent assignment used in normally generated set method +}; +%} +#else +%{ +struct XYZ { + void foo() {} +private: + XYZ& operator=(const XYZ& other); // prevent assignment used in normally generated set method + XYZ* operator&(); // prevent dereferencing used in normally generated get method +}; +%} +#endif +#if defined(SWIGUTL) +%exception { + /* + $action + */ + SWIG_fail; +} +#else +%exception { + /* + $action + */ +} +#endif +%allowexception; + +%inline %{ +XYZ global_variable; +struct Foo { + XYZ member_variable; + static XYZ static_member_variable; +}; +XYZ Foo::static_member_variable; +%} + |
