/trunk/Examples/test-suite/throw_exception.i
Swig | 79 lines | 70 code | 9 blank | 0 comment | 0 complexity | 7084c3c53e65902bc61e31a6717ab30a MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module throw_exception
- %{
- #if defined(_MSC_VER)
- #pragma warning(disable: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
- #endif
- %}
- %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Namespace::enum1;
- %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Namespace::enum2;
- #ifdef SWIGPHP
- %warnfilter(SWIGWARN_PARSE_KEYWORD) Namespace;
- #endif
- // Tests SWIG's automatic exception mechanism
- %inline %{
- class Error {
- };
- void test_is_Error(Error *r) {}
- namespace Namespace {
- typedef Error ErrorTypedef;
- typedef const Error& ErrorRef;
- typedef const Error* ErrorPtr;
- typedef int IntArray[10];
- enum EnumTest { enum1, enum2 };
- }
- class Foo {
- public:
- void test_int() throw(int) {
- throw 37;
- }
- void test_msg() throw(const char *) {
- throw "Dead";
- }
- void test_cls() throw(Error) {
- throw Error();
- }
- void test_cls_ptr() throw(Error *) {
- static Error StaticError;
- throw &StaticError;
- }
- void test_cls_ref() throw(Error &) {
- static Error StaticError;
- throw StaticError;
- }
- void test_cls_td() throw(Namespace::ErrorTypedef) {
- throw Error();
- }
- void test_cls_ptr_td() throw(Namespace::ErrorPtr) {
- static Error StaticError;
- throw &StaticError;
- }
- void test_cls_ref_td() throw(Namespace::ErrorRef) {
- static Error StaticError;
- throw StaticError;
- }
- void test_array() throw(Namespace::IntArray) {
- static Namespace::IntArray array;
- for (int i=0; i<10; i++) {
- array[i] = i;
- }
- throw array;
- }
- void test_enum() throw(Namespace::EnumTest) {
- throw Namespace::enum2;
- }
- void test_multi(int x) throw(int, const char *, Error) {
- if (x == 1) throw 37;
- if (x == 2) throw "Dead";
- if (x == 3) throw Error();
- }
- };
- %}