1/* -----------------------------------------------------------------------------
2 * modula3head.swg
3 *
4 * Modula3 support code
5 * ----------------------------------------------------------------------------- */
6
7%insert(runtime) %{
8
9#include <stdlib.h>
10#include <string.h>
11#include <stdio.h>
12%}
13
14#if 0
15%insert(runtime) %{
16/* Support for throwing Modula3 exceptions */
17typedef enum {
18  SWIG_JavaOutOfMemoryError = 1,
19  SWIG_JavaIOException,
20  SWIG_JavaRuntimeException,
21  SWIG_JavaIndexOutOfBoundsException,
22  SWIG_JavaArithmeticException,
23  SWIG_JavaIllegalArgumentException,
24  SWIG_JavaNullPointerException,
25  SWIG_JavaUnknownError
26} SWIG_JavaExceptionCodes;
27
28typedef struct {
29  SWIG_JavaExceptionCodes code;
30  const char *java_exception;
31} SWIG_JavaExceptions_t;
32
33#if defined(SWIG_NOINCLUDE)
34void SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg);
35#else
36%}
37%insert(runtime) {
38void SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
39  jclass excep;
40  static const SWIG_JavaExceptions_t java_exceptions[] = {
41    { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
42    { SWIG_JavaIOException, "java/io/IOException" },
43    { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
44    { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
45    { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
46    { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
47    { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
48    { SWIG_JavaUnknownError,  "java/lang/UnknownError" },
49    { (SWIG_JavaExceptionCodes)0,  "java/lang/UnknownError" } };
50  const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
51
52  while (except_ptr->code != code && except_ptr->code)
53    except_ptr++;
54
55  JCALL0(ExceptionClear, jenv);
56  excep = JCALL1(FindClass, jenv, except_ptr->java_exception);
57  if (excep)
58    JCALL2(ThrowNew, jenv, excep, msg);
59}
60}
61%insert(runtime) %{
62#endif
63%}
64#endif
65