comparison lib/swig/swigwin-2.0.11/Lib/exception.i @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
comparison
equal deleted inserted replaced
1867:eb580660bbbb 1899:b3009adc0e2f
1 /* -----------------------------------------------------------------------------
2 * exception.i
3 *
4 * SWIG library file providing language independent exception handling
5 * ----------------------------------------------------------------------------- */
6
7 #if defined(SWIGUTL)
8 #error "This version of exception.i should not be used"
9 #endif
10
11
12 %insert("runtime") "swigerrors.swg"
13
14
15 #ifdef SWIGPHP
16 %{
17 #include "zend_exceptions.h"
18 #define SWIG_exception(code, msg) { zend_throw_exception(NULL, (char*)msg, code TSRMLS_CC); }
19 %}
20 #endif
21
22 #ifdef SWIGGUILE
23 %{
24 SWIGINTERN void SWIG_exception_ (int code, const char *msg,
25 const char *subr) {
26 #define ERROR(scmerr) \
27 scm_error(scm_from_locale_string((char *) (scmerr)), \
28 (char *) subr, (char *) msg, \
29 SCM_EOL, SCM_BOOL_F)
30 #define MAP(swigerr, scmerr) \
31 case swigerr: \
32 ERROR(scmerr); \
33 break
34 switch (code) {
35 MAP(SWIG_MemoryError, "swig-memory-error");
36 MAP(SWIG_IOError, "swig-io-error");
37 MAP(SWIG_RuntimeError, "swig-runtime-error");
38 MAP(SWIG_IndexError, "swig-index-error");
39 MAP(SWIG_TypeError, "swig-type-error");
40 MAP(SWIG_DivisionByZero, "swig-division-by-zero");
41 MAP(SWIG_OverflowError, "swig-overflow-error");
42 MAP(SWIG_SyntaxError, "swig-syntax-error");
43 MAP(SWIG_ValueError, "swig-value-error");
44 MAP(SWIG_SystemError, "swig-system-error");
45 default:
46 ERROR("swig-error");
47 }
48 #undef ERROR
49 #undef MAP
50 }
51
52 #define SWIG_exception(a,b) SWIG_exception_(a, b, FUNC_NAME)
53 %}
54 #endif
55
56 #ifdef SWIGMZSCHEME
57
58 %{
59 SWIGINTERN void SWIG_exception_ (int code, const char *msg) {
60 #define ERROR(errname) \
61 scheme_signal_error(errname " (%s)", msg);
62 #define MAP(swigerr, errname) \
63 case swigerr: \
64 ERROR(errname); \
65 break
66 switch (code) {
67 MAP(SWIG_MemoryError, "swig-memory-error");
68 MAP(SWIG_IOError, "swig-io-error");
69 MAP(SWIG_RuntimeError, "swig-runtime-error");
70 MAP(SWIG_IndexError, "swig-index-error");
71 MAP(SWIG_TypeError, "swig-type-error");
72 MAP(SWIG_DivisionByZero, "swig-division-by-zero");
73 MAP(SWIG_OverflowError, "swig-overflow-error");
74 MAP(SWIG_SyntaxError, "swig-syntax-error");
75 MAP(SWIG_ValueError, "swig-value-error");
76 MAP(SWIG_SystemError, "swig-system-error");
77 default:
78 ERROR("swig-error");
79 }
80 #undef ERROR
81 #undef MAP
82 }
83
84 #define SWIG_exception(a,b) SWIG_exception_(a, b)
85 %}
86 #endif
87
88 #ifdef SWIGJAVA
89 %{
90 SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) {
91 SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError;
92 switch(code) {
93 case SWIG_MemoryError:
94 exception_code = SWIG_JavaOutOfMemoryError;
95 break;
96 case SWIG_IOError:
97 exception_code = SWIG_JavaIOException;
98 break;
99 case SWIG_SystemError:
100 case SWIG_RuntimeError:
101 exception_code = SWIG_JavaRuntimeException;
102 break;
103 case SWIG_OverflowError:
104 case SWIG_IndexError:
105 exception_code = SWIG_JavaIndexOutOfBoundsException;
106 break;
107 case SWIG_DivisionByZero:
108 exception_code = SWIG_JavaArithmeticException;
109 break;
110 case SWIG_SyntaxError:
111 case SWIG_ValueError:
112 case SWIG_TypeError:
113 exception_code = SWIG_JavaIllegalArgumentException;
114 break;
115 case SWIG_UnknownError:
116 default:
117 exception_code = SWIG_JavaUnknownError;
118 break;
119 }
120 SWIG_JavaThrowException(jenv, exception_code, msg);
121 }
122 %}
123
124 #define SWIG_exception(code, msg)\
125 { SWIG_JavaException(jenv, code, msg); return $null; }
126 #endif // SWIGJAVA
127
128 #ifdef SWIGOCAML
129 %{
130 #define OCAML_MSG_BUF_LEN 1024
131 SWIGINTERN void SWIG_exception_(int code, const char *msg) {
132 char msg_buf[OCAML_MSG_BUF_LEN];
133 sprintf( msg_buf, "Exception(%d): %s\n", code, msg );
134 failwith( msg_buf );
135 }
136 #define SWIG_exception(a,b) SWIG_exception_((a),(b))
137 %}
138 #endif
139
140
141 #ifdef SWIGCHICKEN
142 %{
143 SWIGINTERN void SWIG_exception_(int code, const char *msg) {
144 C_word *a;
145 C_word scmmsg;
146 C_word list;
147
148 a = C_alloc (C_SIZEOF_STRING (strlen (msg)) + C_SIZEOF_LIST(2));
149 scmmsg = C_string2 (&a, (char *) msg);
150 list = C_list(&a, 2, C_fix(code), scmmsg);
151 SWIG_ThrowException(list);
152 }
153 #define SWIG_exception(a,b) SWIG_exception_((a),(b))
154 %}
155 #endif
156
157 #ifdef SWIGCSHARP
158 %{
159 SWIGINTERN void SWIG_CSharpException(int code, const char *msg) {
160 if (code == SWIG_ValueError) {
161 SWIG_CSharpExceptionArgumentCodes exception_code = SWIG_CSharpArgumentOutOfRangeException;
162 SWIG_CSharpSetPendingExceptionArgument(exception_code, msg, 0);
163 } else {
164 SWIG_CSharpExceptionCodes exception_code = SWIG_CSharpApplicationException;
165 switch(code) {
166 case SWIG_MemoryError:
167 exception_code = SWIG_CSharpOutOfMemoryException;
168 break;
169 case SWIG_IndexError:
170 exception_code = SWIG_CSharpIndexOutOfRangeException;
171 break;
172 case SWIG_DivisionByZero:
173 exception_code = SWIG_CSharpDivideByZeroException;
174 break;
175 case SWIG_IOError:
176 exception_code = SWIG_CSharpIOException;
177 break;
178 case SWIG_OverflowError:
179 exception_code = SWIG_CSharpOverflowException;
180 break;
181 case SWIG_RuntimeError:
182 case SWIG_TypeError:
183 case SWIG_SyntaxError:
184 case SWIG_SystemError:
185 case SWIG_UnknownError:
186 default:
187 exception_code = SWIG_CSharpApplicationException;
188 break;
189 }
190 SWIG_CSharpSetPendingException(exception_code, msg);
191 }
192 }
193 %}
194
195 #define SWIG_exception(code, msg)\
196 { SWIG_CSharpException(code, msg); return $null; }
197 #endif // SWIGCSHARP
198
199 #ifdef SWIGLUA
200
201 %{
202 #define SWIG_exception(a,b)\
203 { lua_pushfstring(L,"%s:%s",#a,b);SWIG_fail; }
204 %}
205
206 #endif // SWIGLUA
207
208 #ifdef SWIGD
209 %{
210 SWIGINTERN void SWIG_DThrowException(int code, const char *msg) {
211 SWIG_DExceptionCodes exception_code;
212 switch(code) {
213 case SWIG_IndexError:
214 exception_code = SWIG_DNoSuchElementException;
215 break;
216 case SWIG_IOError:
217 exception_code = SWIG_DIOException;
218 break;
219 case SWIG_ValueError:
220 exception_code = SWIG_DIllegalArgumentException;
221 break;
222 case SWIG_DivisionByZero:
223 case SWIG_MemoryError:
224 case SWIG_OverflowError:
225 case SWIG_RuntimeError:
226 case SWIG_TypeError:
227 case SWIG_SyntaxError:
228 case SWIG_SystemError:
229 case SWIG_UnknownError:
230 default:
231 exception_code = SWIG_DException;
232 break;
233 }
234 SWIG_DSetPendingException(exception_code, msg);
235 }
236 %}
237
238 #define SWIG_exception(code, msg)\
239 { SWIG_DThrowException(code, msg); return $null; }
240 #endif // SWIGD
241
242 #ifdef __cplusplus
243 /*
244 You can use the SWIG_CATCH_STDEXCEPT macro with the %exception
245 directive as follows:
246
247 %exception {
248 try {
249 $action
250 }
251 catch (my_except& e) {
252 ...
253 }
254 SWIG_CATCH_STDEXCEPT // catch std::exception
255 catch (...) {
256 SWIG_exception(SWIG_UnknownError, "Unknown exception");
257 }
258 }
259 */
260 %{
261 #include <stdexcept>
262 %}
263 %define SWIG_CATCH_STDEXCEPT
264 /* catching std::exception */
265 catch (std::invalid_argument& e) {
266 SWIG_exception(SWIG_ValueError, e.what() );
267 } catch (std::domain_error& e) {
268 SWIG_exception(SWIG_ValueError, e.what() );
269 } catch (std::overflow_error& e) {
270 SWIG_exception(SWIG_OverflowError, e.what() );
271 } catch (std::out_of_range& e) {
272 SWIG_exception(SWIG_IndexError, e.what() );
273 } catch (std::length_error& e) {
274 SWIG_exception(SWIG_IndexError, e.what() );
275 } catch (std::runtime_error& e) {
276 SWIG_exception(SWIG_RuntimeError, e.what() );
277 } catch (std::exception& e) {
278 SWIG_exception(SWIG_SystemError, e.what() );
279 }
280 %enddef
281 %define SWIG_CATCH_UNKNOWN
282 catch (std::exception& e) {
283 SWIG_exception(SWIG_SystemError, e.what() );
284 }
285 catch (...) {
286 SWIG_exception(SWIG_UnknownError, "unknown exception");
287 }
288 %enddef
289
290 /* rethrow the unknown exception */
291
292 #if defined(SWIGCSHARP) || defined(SWIGD)
293 %typemap(throws,noblock=1, canthrow=1) (...) {
294 SWIG_exception(SWIG_RuntimeError,"unknown exception");
295 }
296 #else
297 %typemap(throws,noblock=1) (...) {
298 SWIG_exception(SWIG_RuntimeError,"unknown exception");
299 }
300 #endif
301
302 #endif /* __cplusplus */
303
304 /* exception.i ends here */