summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2022-09-18 20:20:21 +0100
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2022-09-19 09:09:29 +0100
commited333b6b9720e0569cd3c7ccee8f1fc1b60da9f8 (patch)
tree8a0e78d0ce7353aab44e8a5452833d535db4991a /Lib
parent4a29229bab06cd5ab21715c93c03e9280feae065 (diff)
downloadswig-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.i6
-rw-r--r--Lib/guile/std_string.i9
-rw-r--r--Lib/mzscheme/std_string.i7
-rw-r--r--Lib/scilab/std_string.i8
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);
+}