swig/SWIG/Lib/ruby/rubyerrors.swg
Charlie Savage 09df526ebf Attemp #2 at defining rb_eNullReferenceError. This is done for C++, but for C
a more generic rb_eRuntimeError is thrown instead.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8333 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-09 22:17:06 +00:00

68 lines
No EOL
1.5 KiB
Text

/* -----------------------------------------------------------------------------
* error manipulation
* ----------------------------------------------------------------------------- */
%insert("runtime") "swigerrors.swg"
%insert("header") %{
#ifdef __cplusplus
/* Define custom error for SWIG_NullReferenceError since Ruby does not have a
built-in error that seems appropriate. */
static VALUE rb_eNullReferenceError = rb_define_class("NullReferenceError", rb_eRuntimeError);
#endif
SWIGINTERN VALUE
SWIG_Ruby_ErrorType(int SWIG_code) {
VALUE type;
switch (SWIG_code) {
case SWIG_MemoryError:
type = rb_eNoMemError;
break;
case SWIG_IOError:
type = rb_eIOError;
break;
case SWIG_RuntimeError:
type = rb_eRuntimeError;
break;
case SWIG_IndexError:
type = rb_eIndexError;
break;
case SWIG_TypeError:
type = rb_eTypeError;
break;
case SWIG_DivisionByZero:
type = rb_eZeroDivError;
break;
case SWIG_OverflowError:
type = rb_eRangeError;
break;
case SWIG_SyntaxError:
type = rb_eSyntaxError;
break;
case SWIG_ValueError:
type = rb_eArgError;
break;
case SWIG_SystemError:
type = rb_eFatal;
break;
case SWIG_AttributeError:
type = rb_eRuntimeError;
break;
case SWIG_NullReferenceError:
#ifdef __cplusplus
type = rb_eNullReferenceError;
#else
type = rb_eRuntimeError;
#endif
break;
case SWIG_UnknownError:
type = rb_eRuntimeError;
break;
default:
type = rb_eRuntimeError;
}
return type;
}
%}