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
This commit is contained in:
William S Fulton 2022-09-18 20:20:21 +01:00
commit ed333b6b97
24 changed files with 225 additions and 12 deletions

View file

@ -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"

View file

@ -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));
}
}

View file

@ -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());
}
}

View file

@ -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);
}