diff --git a/SWIG/Lib/perl5/perl5.swg b/SWIG/Lib/perl5/perl5.swg index fcb1d3d7e..e6854c7d9 100644 --- a/SWIG/Lib/perl5/perl5.swg +++ b/SWIG/Lib/perl5/perl5.swg @@ -538,6 +538,14 @@ SWIG_croakSV(esv); } +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [ANY] %{ + SWIG_croak("C++ $1_type exception thrown"); +%} + +%typemap(throws) enum SWIGTYPE %{ + SWIG_croak("C++ $1_type exception thrown"); +%} + %typemap(throws) char * { SWIG_croak($1); } diff --git a/SWIG/Lib/perl5/std_string.i b/SWIG/Lib/perl5/std_string.i index 2754cbbbe..fe471022d 100644 --- a/SWIG/Lib/perl5/std_string.i +++ b/SWIG/Lib/perl5/std_string.i @@ -63,5 +63,13 @@ namespace std { ++argvi; } + %typemap(throws) const string & { + SWIG_croak($1.c_str()); + } + + %typemap(throws) string { + SWIG_croak($1.c_str()); + } + } diff --git a/SWIG/Lib/tcl/std_string.i b/SWIG/Lib/tcl/std_string.i index c636c0388..ad61399f3 100644 --- a/SWIG/Lib/tcl/std_string.i +++ b/SWIG/Lib/tcl/std_string.i @@ -44,4 +44,13 @@ namespace std { Tcl_SetStringObj($result,(char*)$1->c_str(),$1->length()); } + %typemap(throws) string { + Tcl_SetObjResult(interp, Tcl_NewStringObj((char*) $1.c_str(), -1)); + SWIG_fail; + } + + %typemap(throws) const string & { + Tcl_SetObjResult(interp, Tcl_NewStringObj((char*) $1.c_str(), -1)); + SWIG_fail; + } } diff --git a/SWIG/Lib/tcl/tcl8.swg b/SWIG/Lib/tcl/tcl8.swg index 292dc3e30..16d9591ff 100644 --- a/SWIG/Lib/tcl/tcl8.swg +++ b/SWIG/Lib/tcl/tcl8.swg @@ -547,6 +547,16 @@ SWIG_fail; } +%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [ANY] { + Tcl_SetObjResult(interp, Tcl_NewStringObj((char*) "$1_type", -1)); + SWIG_fail; +} + +%typemap(throws) enum SWIGTYPE { + Tcl_SetObjResult(interp, Tcl_NewStringObj((char*) "$1_type", -1)); + SWIG_fail; +} + %typemap(throws) char * { Tcl_SetObjResult(interp, Tcl_NewStringObj((char*) $1, -1)); SWIG_fail;