31 lines
1.1 KiB
Plaintext
Executable File
31 lines
1.1 KiB
Plaintext
Executable File
/* -----------------------------------------------------------------------------
|
|
* dexception.swg
|
|
*
|
|
* Typemaps used for propagating C++ exceptions to D.
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
// Code which is inserted into the dout typemaps and class constructors via
|
|
// excode if exceptions can be thrown.
|
|
%define SWIGEXCODE "\n if ($imdmodule.SwigPendingException.isPending) throw $imdmodule.SwigPendingException.retrieve();" %enddef
|
|
|
|
%typemap(throws, canthrow=1) int,
|
|
long,
|
|
short,
|
|
unsigned int,
|
|
unsigned long,
|
|
unsigned short
|
|
%{ char error_msg[256];
|
|
sprintf(error_msg, "C++ $1_type exception thrown, value: %d", $1);
|
|
SWIG_DSetPendingException(SWIG_DException, error_msg);
|
|
return $null; %}
|
|
|
|
%typemap(throws, canthrow=1) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [ANY],
|
|
enum SWIGTYPE, const enum SWIGTYPE &
|
|
%{ (void)$1;
|
|
SWIG_DSetPendingException(SWIG_DException, "C++ $1_type exception thrown");
|
|
return $null; %}
|
|
|
|
%typemap(throws, canthrow=1) char *
|
|
%{ SWIG_DSetPendingException(SWIG_DException, $1);
|
|
return $null; %}
|