Index: swig/Lib/exception.i |
=================================================================== |
--- swig/Lib/exception.i (revision 0) |
+++ swig/Lib/exception.i (revision 0) |
@@ -0,0 +1,277 @@ |
+/* ----------------------------------------------------------------------------- |
+ * See the LICENSE file for information on copyright, usage and redistribution |
+ * of SWIG, and the README file for authors - http://www.swig.org/release.html. |
+ * |
+ * exception.i |
+ * |
+ * SWIG library file providing language independent exception handling |
+ * ----------------------------------------------------------------------------- */ |
+ |
+#if defined(SWIGUTL) |
+#error "This version of exception.i should not be used" |
+#endif |
+ |
+ |
+%insert("runtime") "swigerrors.swg" |
+ |
+ |
+#ifdef SWIGPHP |
+%{ |
+#if PHP_MAJOR_VERSION < 5 |
+# define SWIG_exception(code, msg) { zend_error(E_ERROR, msg); } |
+#else |
+# include "zend_exceptions.h" |
+# define SWIG_exception(code, msg) { zend_throw_exception(NULL, (char*)msg, code TSRMLS_CC); } |
+#endif |
+%} |
+#endif |
+ |
+#ifdef SWIGGUILE |
+%{ |
+ SWIGINTERN void SWIG_exception_ (int code, const char *msg, |
+ const char *subr) { |
+#define ERROR(scmerr) \ |
+ scm_error(gh_symbol2scm((char *) (scmerr)), \ |
+ (char *) subr, (char *) msg, \ |
+ SCM_EOL, SCM_BOOL_F) |
+#define MAP(swigerr, scmerr) \ |
+ case swigerr: \ |
+ ERROR(scmerr); \ |
+ break |
+ switch (code) { |
+ MAP(SWIG_MemoryError, "swig-memory-error"); |
+ MAP(SWIG_IOError, "swig-io-error"); |
+ MAP(SWIG_RuntimeError, "swig-runtime-error"); |
+ MAP(SWIG_IndexError, "swig-index-error"); |
+ MAP(SWIG_TypeError, "swig-type-error"); |
+ MAP(SWIG_DivisionByZero, "swig-division-by-zero"); |
+ MAP(SWIG_OverflowError, "swig-overflow-error"); |
+ MAP(SWIG_SyntaxError, "swig-syntax-error"); |
+ MAP(SWIG_ValueError, "swig-value-error"); |
+ MAP(SWIG_SystemError, "swig-system-error"); |
+ default: |
+ ERROR("swig-error"); |
+ } |
+#undef ERROR |
+#undef MAP |
+ } |
+ |
+#define SWIG_exception(a,b) SWIG_exception_(a, b, FUNC_NAME) |
+%} |
+#endif |
+ |
+#ifdef SWIGMZSCHEME |
+ |
+%{ |
+SWIGINTERN void SWIG_exception_ (int code, const char *msg) { |
+#define ERROR(errname) \ |
+ scheme_signal_error(errname " (%s)", msg); |
+#define MAP(swigerr, errname) \ |
+ case swigerr: \ |
+ ERROR(errname); \ |
+ break |
+ switch (code) { |
+ MAP(SWIG_MemoryError, "swig-memory-error"); |
+ MAP(SWIG_IOError, "swig-io-error"); |
+ MAP(SWIG_RuntimeError, "swig-runtime-error"); |
+ MAP(SWIG_IndexError, "swig-index-error"); |
+ MAP(SWIG_TypeError, "swig-type-error"); |
+ MAP(SWIG_DivisionByZero, "swig-division-by-zero"); |
+ MAP(SWIG_OverflowError, "swig-overflow-error"); |
+ MAP(SWIG_SyntaxError, "swig-syntax-error"); |
+ MAP(SWIG_ValueError, "swig-value-error"); |
+ MAP(SWIG_SystemError, "swig-system-error"); |
+ default: |
+ ERROR("swig-error"); |
+ } |
+#undef ERROR |
+#undef MAP |
+ } |
+ |
+#define SWIG_exception(a,b) SWIG_exception_(a, b) |
+%} |
+#endif |
+ |
+#ifdef SWIGJAVA |
+%{ |
+SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) { |
+ SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError; |
+ switch(code) { |
+ case SWIG_MemoryError: |
+ exception_code = SWIG_JavaOutOfMemoryError; |
+ break; |
+ case SWIG_IOError: |
+ exception_code = SWIG_JavaIOException; |
+ break; |
+ case SWIG_SystemError: |
+ case SWIG_RuntimeError: |
+ exception_code = SWIG_JavaRuntimeException; |
+ break; |
+ case SWIG_OverflowError: |
+ case SWIG_IndexError: |
+ exception_code = SWIG_JavaIndexOutOfBoundsException; |
+ break; |
+ case SWIG_DivisionByZero: |
+ exception_code = SWIG_JavaArithmeticException; |
+ break; |
+ case SWIG_SyntaxError: |
+ case SWIG_ValueError: |
+ case SWIG_TypeError: |
+ exception_code = SWIG_JavaIllegalArgumentException; |
+ break; |
+ case SWIG_UnknownError: |
+ default: |
+ exception_code = SWIG_JavaUnknownError; |
+ break; |
+ } |
+ SWIG_JavaThrowException(jenv, exception_code, msg); |
+} |
+%} |
+ |
+#define SWIG_exception(code, msg)\ |
+{ SWIG_JavaException(jenv, code, msg); return $null; } |
+#endif // SWIGJAVA |
+ |
+#ifdef SWIGOCAML |
+%{ |
+#define OCAML_MSG_BUF_LEN 1024 |
+SWIGINTERN void SWIG_exception_(int code, const char *msg) { |
+ char msg_buf[OCAML_MSG_BUF_LEN]; |
+ sprintf( msg_buf, "Exception(%d): %s\n", code, msg ); |
+ failwith( msg_buf ); |
+} |
+#define SWIG_exception(a,b) SWIG_exception_((a),(b)) |
+%} |
+#endif |
+ |
+ |
+#ifdef SWIGCHICKEN |
+%{ |
+SWIGINTERN void SWIG_exception_(int code, const char *msg) { |
+ C_word *a; |
+ C_word scmmsg; |
+ C_word list; |
+ |
+ a = C_alloc (C_SIZEOF_STRING (strlen (msg)) + C_SIZEOF_LIST(2)); |
+ scmmsg = C_string2 (&a, (char *) msg); |
+ list = C_list(&a, 2, C_fix(code), scmmsg); |
+ SWIG_ThrowException(list); |
+} |
+#define SWIG_exception(a,b) SWIG_exception_((a),(b)) |
+%} |
+#endif |
+ |
+#ifdef SWIGCSHARP |
+%{ |
+SWIGINTERN void SWIG_CSharpException(int code, const char *msg) { |
+ if (code == SWIG_ValueError) { |
+ SWIG_CSharpExceptionArgumentCodes exception_code = SWIG_CSharpArgumentOutOfRangeException; |
+ SWIG_CSharpSetPendingExceptionArgument(exception_code, msg, 0); |
+ } else { |
+ SWIG_CSharpExceptionCodes exception_code = SWIG_CSharpApplicationException; |
+ switch(code) { |
+ case SWIG_MemoryError: |
+ exception_code = SWIG_CSharpOutOfMemoryException; |
+ break; |
+ case SWIG_IndexError: |
+ exception_code = SWIG_CSharpIndexOutOfRangeException; |
+ break; |
+ case SWIG_DivisionByZero: |
+ exception_code = SWIG_CSharpDivideByZeroException; |
+ break; |
+ case SWIG_IOError: |
+ exception_code = SWIG_CSharpIOException; |
+ break; |
+ case SWIG_OverflowError: |
+ exception_code = SWIG_CSharpOverflowException; |
+ break; |
+ case SWIG_RuntimeError: |
+ case SWIG_TypeError: |
+ case SWIG_SyntaxError: |
+ case SWIG_SystemError: |
+ case SWIG_UnknownError: |
+ default: |
+ exception_code = SWIG_CSharpApplicationException; |
+ break; |
+ } |
+ SWIG_CSharpSetPendingException(exception_code, msg); |
+ } |
+} |
+%} |
+ |
+#define SWIG_exception(code, msg)\ |
+{ SWIG_CSharpException(code, msg); return $null; } |
+#endif // SWIGCSHARP |
+ |
+#ifdef SWIGLUA |
+ |
+%{ |
+#define SWIG_exception(a,b)\ |
+{ lua_pushfstring(L,"%s:%s",#a,b);SWIG_fail; } |
+%} |
+ |
+#endif // SWIGLUA |
+ |
+#ifdef __cplusplus |
+/* |
+ You can use the SWIG_CATCH_STDEXCEPT macro with the %exception |
+ directive as follows: |
+ |
+ %exception { |
+ try { |
+ $action |
+ } |
+ catch (my_except& e) { |
+ ... |
+ } |
+ SWIG_CATCH_STDEXCEPT // catch std::exception |
+ catch (...) { |
+ SWIG_exception(SWIG_UnknownError, "Unknown exception"); |
+ } |
+ } |
+*/ |
+%{ |
+#include <stdexcept> |
+%} |
+%define SWIG_CATCH_STDEXCEPT |
+ /* catching std::exception */ |
+ catch (std::invalid_argument& e) { |
+ SWIG_exception(SWIG_ValueError, e.what() ); |
+ } catch (std::domain_error& e) { |
+ SWIG_exception(SWIG_ValueError, e.what() ); |
+ } catch (std::overflow_error& e) { |
+ SWIG_exception(SWIG_OverflowError, e.what() ); |
+ } catch (std::out_of_range& e) { |
+ SWIG_exception(SWIG_IndexError, e.what() ); |
+ } catch (std::length_error& e) { |
+ SWIG_exception(SWIG_IndexError, e.what() ); |
+ } catch (std::runtime_error& e) { |
+ SWIG_exception(SWIG_RuntimeError, e.what() ); |
+ } catch (std::exception& e) { |
+ SWIG_exception(SWIG_SystemError, e.what() ); |
+ } |
+%enddef |
+%define SWIG_CATCH_UNKNOWN |
+ catch (std::exception& e) { |
+ SWIG_exception(SWIG_SystemError, e.what() ); |
+ } |
+ catch (...) { |
+ SWIG_exception(SWIG_UnknownError, "unknown exception"); |
+ } |
+%enddef |
+ |
+/* rethrow the unknown exception */ |
+ |
+#ifdef SWIGCSHARP |
+%typemap(throws,noblock=1, canthrow=1) (...) { |
+ SWIG_exception(SWIG_RuntimeError,"unknown exception"); |
+} |
+#else |
+%typemap(throws,noblock=1) (...) { |
+ SWIG_exception(SWIG_RuntimeError,"unknown exception"); |
+} |
+#endif |
+ |
+#endif /* __cplusplus */ |
+ |
+/* exception.i ends here */ |