/trunk/Lib/ocaml/typecheck.i
Swig | 176 lines | 146 code | 22 blank | 8 comment | 0 complexity | 8576f850cded9d964dfcc02c6444393c MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * typecheck.i
- *
- * Typechecking rules
- * ----------------------------------------------------------------------------- */
- %typecheck(SWIG_TYPECHECK_INTEGER) char, signed char, const char &, const signed char & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_char: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) unsigned char, const unsigned char & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_uchar: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) short, signed short, const short &, const signed short &, wchar_t {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_short: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) unsigned short, const unsigned short & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_ushort: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- // XXX arty
- // Will move enum SWIGTYPE later when I figure out what to do with it...
- %typecheck(SWIG_TYPECHECK_INTEGER) int, signed int, const int &, const signed int &, enum SWIGTYPE {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_int: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) unsigned int, const unsigned int & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_uint: $1 = 1; break;
- case C_int32: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) long, signed long, unsigned long, long long, signed long long, unsigned long long, const long &, const signed long &, const unsigned long &, const long long &, const signed long long &, const unsigned long long & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_int64: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_INTEGER) bool, oc_bool, BOOL, const bool &, const oc_bool &, const BOOL & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_bool: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_DOUBLE) float, const float & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_float: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_DOUBLE) double, const double & {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_double: $1 = 1; break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_STRING) char * {
- if( !Is_block($input) ) $1 = 0;
- else {
- switch( SWIG_Tag_val($input) ) {
- case C_string: $1 = 1; break;
- case C_ptr: {
- swig_type_info *typeinfo =
- (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field($input,1));
- $1 = SWIG_TypeCheck("char *",typeinfo) ||
- SWIG_TypeCheck("signed char *",typeinfo) ||
- SWIG_TypeCheck("unsigned char *",typeinfo) ||
- SWIG_TypeCheck("const char *",typeinfo) ||
- SWIG_TypeCheck("const signed char *",typeinfo) ||
- SWIG_TypeCheck("const unsigned char *",typeinfo) ||
- SWIG_TypeCheck("std::string",typeinfo);
- } break;
- default: $1 = 0; break;
- }
- }
- }
- %typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] {
- void *ptr;
- $1 = !caml_ptr_val_internal($input, &ptr,$descriptor);
- }
- #if 0
- %typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE {
- void *ptr;
- $1 = !caml_ptr_val_internal($input, &ptr, $&1_descriptor);
- }
- #endif
- %typecheck(SWIG_TYPECHECK_VOIDPTR) void * {
- void *ptr;
- $1 = !caml_ptr_val_internal($input, &ptr, 0);
- }
- /* ------------------------------------------------------------
- * Exception handling
- * ------------------------------------------------------------ */
- %typemap(throws) int,
- long,
- short,
- unsigned int,
- unsigned long,
- unsigned short {
- SWIG_exception($1,"Thrown exception from C++ (int)");
- }
- %typemap(throws) SWIGTYPE CLASS {
- $&1_ltype temp = new $1_ltype($1);
- SWIG_exception((int)temp,"Thrown exception from C++ (object)");
- }
- %typemap(throws) SWIGTYPE {
- (void)$1;
- SWIG_exception(0,"Thrown exception from C++ (unknown)");
- }
- %typemap(throws) char * {
- SWIG_exception(0,$1);
- }