diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2022-09-18 20:20:21 +0100 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2022-09-19 09:09:29 +0100 |
commit | ed333b6b9720e0569cd3c7ccee8f1fc1b60da9f8 (patch) | |
tree | 8a0e78d0ce7353aab44e8a5452833d535db4991a /Lib | |
parent | 4a29229bab06cd5ab21715c93c03e9280feae065 (diff) | |
download | swig-ed333b6b9720e0569cd3c7ccee8f1fc1b60da9f8.tar.gz |
std::string throws typemaps
Go, Guile, Racket, Scilab: Add throws typemaps for std::string so that
thrown string exception messages can be seen.
Test all language for std::string throws typemaps
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/go/std_string.i | 6 | ||||
-rw-r--r-- | Lib/guile/std_string.i | 9 | ||||
-rw-r--r-- | Lib/mzscheme/std_string.i | 7 | ||||
-rw-r--r-- | Lib/scilab/std_string.i | 8 |
4 files changed, 30 insertions, 0 deletions
diff --git a/Lib/go/std_string.i b/Lib/go/std_string.i index 3abf04cae..35b4a5e46 100644 --- a/Lib/go/std_string.i +++ b/Lib/go/std_string.i @@ -52,6 +52,9 @@ class string; %typemap(godirectorin,fragment="CopyString") string %{ $result = swigCopyString($input) %} +%typemap(throws) string +%{ _swig_gopanic($1.c_str()); %} + %typemap(in) const string & %{ $*1_ltype $1_str($input.p, $input.n); @@ -88,6 +91,9 @@ class string; %typemap(godirectorin,fragment="CopyString") const string & %{ $result = swigCopyString($input) %} +%typemap(throws) const string & +%{ _swig_gopanic($1.c_str()); %} + %typemap(gotype) string * "*string" diff --git a/Lib/guile/std_string.i b/Lib/guile/std_string.i index fbd27547f..c49bfcb07 100644 --- a/Lib/guile/std_string.i +++ b/Lib/guile/std_string.i @@ -83,4 +83,13 @@ namespace std { $result = SWIG_str02scm($1.c_str()); } + %typemap(throws) string { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); + } + + %typemap(throws) const string & { + scm_throw(scm_from_locale_symbol((char *) "swig-exception"), + scm_list_n(SWIG_str02scm($1.c_str()), SCM_UNDEFINED)); + } } diff --git a/Lib/mzscheme/std_string.i b/Lib/mzscheme/std_string.i index b19e8567a..70673eadf 100644 --- a/Lib/mzscheme/std_string.i +++ b/Lib/mzscheme/std_string.i @@ -52,6 +52,13 @@ namespace std { $result = scheme_make_string($1->c_str()); } + %typemap(throws) string { + scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); + } + + %typemap(throws) const string & { + scheme_signal_error("%s: %s", FUNC_NAME, $1.c_str()); + } } diff --git a/Lib/scilab/std_string.i b/Lib/scilab/std_string.i index 71ac6d2f4..8736c2a28 100644 --- a/Lib/scilab/std_string.i +++ b/Lib/scilab/std_string.i @@ -37,3 +37,11 @@ SWIG_From_dec(std::string)(std::string pstValue) { } %include <typemaps/std_string.swg> + +%typemap(throws, noblock=1) std::string { + SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $&descriptor); +} + +%typemap(throws, noblock=1) const std::string & { + SWIG_Scilab_Raise_Ex($1.c_str(), "$type", $descriptor); +} |