Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: swig/Lib/typemaps/exception.swg

Issue 553095: Checkin swig binaries for win, linux and Mac... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « swig/Lib/typemaps/enumint.swg ('k') | swig/Lib/typemaps/factory.swg » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* -----------------------------------------------------------------------------
2 * See the LICENSE file for information on copyright, usage and redistribution
3 * of SWIG, and the README file for authors - http://www.swig.org/release.html.
4 *
5 * exceptions.swg
6 *
7 * This SWIG library file provides language independent exception handling
8 * ----------------------------------------------------------------------------- */
9
10 %include <typemaps/swigmacros.swg>
11
12
13 /* macros for error manipulation */
14 #define %nullref_fmt() "invalid null reference "
15 #define %varfail_fmt(_type,_name) "in variable '"`_name`"' of type '"`_ type`"'"
16 #ifndef %argfail_fmt
17 #define %argfail_fmt(_type,_name,_argn) "in method '" `_name` "', argument " `_argn`" of type '" `_type`"'"
18 #endif
19 #define %outfail_fmt(_type) "in output value of type '"_type"'"
20 #ifndef %argnullref_fmt
21 #define %argnullref_fmt(_type,_name,_argn) %nullref_fmt() %argfail_fmt(_type, _n ame, _argn)
22 #endif
23 #define %varnullref_fmt(_type,_name) %nullref_fmt() %varfail_fmt(_type, _n ame)
24 #define %outnullref_fmt(_type) %nullref_fmt() %outfail_fmt(_type)
25
26 /* setting an error */
27 #define %error(code,msg...) SWIG_Error(code, msg)
28 #define %type_error(msg...) SWIG_Error(SWIG_TypeError, msg)
29
30
31
32 %insert("runtime") {
33
34 %define_as(SWIG_exception_fail(code, msg), %block(%error(code, msg); SWIG_fail))
35
36 %define_as(SWIG_contract_assert(expr, msg), if (!(expr)) { %error(SWIG_RuntimeEr ror, msg); SWIG_fail; } else)
37
38 }
39
40 #ifdef __cplusplus
41 /*
42 You can use the SWIG_CATCH_STDEXCEPT macro with the %exception
43 directive as follows:
44
45 %exception {
46 try {
47 $action
48 }
49 catch (my_except& e) {
50 ...
51 }
52 SWIG_CATCH_STDEXCEPT // catch std::exception
53 catch (...) {
54 SWIG_exception_fail(SWIG_UnknownError, "Unknown exception");
55 }
56 }
57 */
58 %{
59 #include <stdexcept>
60 %}
61 %define SWIG_CATCH_STDEXCEPT
62 /* catching std::exception */
63 catch (std::invalid_argument& e) {
64 SWIG_exception_fail(SWIG_ValueError, e.what() );
65 } catch (std::domain_error& e) {
66 SWIG_exception_fail(SWIG_ValueError, e.what() );
67 } catch (std::overflow_error& e) {
68 SWIG_exception_fail(SWIG_OverflowError, e.what() );
69 } catch (std::out_of_range& e) {
70 SWIG_exception_fail(SWIG_IndexError, e.what() );
71 } catch (std::length_error& e) {
72 SWIG_exception_fail(SWIG_IndexError, e.what() );
73 } catch (std::runtime_error& e) {
74 SWIG_exception_fail(SWIG_RuntimeError, e.what() );
75 } catch (std::exception& e) {
76 SWIG_exception_fail(SWIG_SystemError, e.what() );
77 }
78 %enddef
79 %define SWIG_CATCH_UNKNOWN
80 catch (std::exception& e) {
81 SWIG_exception_fail(SWIG_SystemError, e.what() );
82 }
83 catch (...) {
84 SWIG_exception_fail(SWIG_UnknownError, "unknown exception");
85 }
86 %enddef
87
88
89 #endif /* __cplusplus */
OLDNEW
« no previous file with comments | « swig/Lib/typemaps/enumint.swg ('k') | swig/Lib/typemaps/factory.swg » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698