Support for throwing C# exceptions from C/C++:

- throws typemaps implemented.
- SWIGTYPE& and SWIGTYPE typemaps throw a NullReferenceException if a C# null is passed as a parameter


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5018 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2003-08-29 20:03:26 +00:00
commit 4c995939ca

View file

@ -180,8 +180,7 @@ $1 = &temp; %}
%typemap(in) SWIGTYPE ($&1_type argp) %typemap(in) SWIGTYPE ($&1_type argp)
%{ argp = *($&1_ltype*)&$input; %{ argp = *($&1_ltype*)&$input;
if (!argp) { if (!argp) {
// SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null $1_type"); SWIG_CSharpThrowException(SWIG_CSharpNullReferenceException, "Attempt to dereference null $1_type");
return $null;
} }
$1 = *argp; %} $1 = *argp; %}
%typemap(out) SWIGTYPE %typemap(out) SWIGTYPE
@ -199,8 +198,7 @@ $1 = &temp; %}
%typemap(in) SWIGTYPE *, SWIGTYPE (CLASS::*) %{ $1 = *($&1_ltype)&$input; %} %typemap(in) SWIGTYPE *, SWIGTYPE (CLASS::*) %{ $1 = *($&1_ltype)&$input; %}
%typemap(in) SWIGTYPE & %{ $1 = *($&1_ltype)&$input; %typemap(in) SWIGTYPE & %{ $1 = *($&1_ltype)&$input;
if(!$1) { if(!$1) {
//SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "$1_type reference is null"); SWIG_CSharpThrowException(SWIG_CSharpNullReferenceException, "$1_type reference is null");
return $null;
} %} } %}
%typemap(out) SWIGTYPE *, SWIGTYPE &, SWIGTYPE (CLASS::*) %{ *($&1_ltype)&$result = $1; %} %typemap(out) SWIGTYPE *, SWIGTYPE &, SWIGTYPE (CLASS::*) %{ *($&1_ltype)&$result = $1; %}
@ -300,18 +298,15 @@ $1 = &temp; %}
unsigned short { unsigned short {
char error_msg[256]; char error_msg[256];
sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1); sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1);
SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, error_msg); SWIG_CSharpThrowException(SWIG_CSharpException, error_msg);
return $null;
} }
%typemap(throws) SWIGTYPE { %typemap(throws) SWIGTYPE {
SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "C++ $1_type exception thrown"); SWIG_CSharpThrowException(SWIG_CSharpException, "C++ $1_type exception thrown");
return $null;
} }
%typemap(throws) char * { %typemap(throws) char * {
SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, $1); SWIG_CSharpThrowException(SWIG_CSharpException, $1);
return $null;
} }