1/* ----------------------------------------------------------------------------- 2 * See the LICENSE file for information on copyright, usage and redistribution 3 * of SWIG, and the README file for authors - http://www.swig.org/release.html. 4 * 5 * typecheck.i 6 * 7 * Typechecking rules 8 * ----------------------------------------------------------------------------- */ 9 10%typecheck(SWIG_TYPECHECK_INTEGER) char, signed char, const char &, const signed char & { 11 if( !Is_block($input) ) $1 = 0; 12 else { 13 switch( SWIG_Tag_val($input) ) { 14 case C_char: $1 = 1; break; 15 default: $1 = 0; break; 16 } 17 } 18} 19 20%typecheck(SWIG_TYPECHECK_INTEGER) unsigned char, const unsigned char & { 21 if( !Is_block($input) ) $1 = 0; 22 else { 23 switch( SWIG_Tag_val($input) ) { 24 case C_uchar: $1 = 1; break; 25 default: $1 = 0; break; 26 } 27 } 28} 29 30%typecheck(SWIG_TYPECHECK_INTEGER) short, signed short, const short &, const signed short &, wchar_t { 31 if( !Is_block($input) ) $1 = 0; 32 else { 33 switch( SWIG_Tag_val($input) ) { 34 case C_short: $1 = 1; break; 35 default: $1 = 0; break; 36 } 37 } 38} 39 40%typecheck(SWIG_TYPECHECK_INTEGER) unsigned short, const unsigned short & { 41 if( !Is_block($input) ) $1 = 0; 42 else { 43 switch( SWIG_Tag_val($input) ) { 44 case C_ushort: $1 = 1; break; 45 default: $1 = 0; break; 46 } 47 } 48} 49 50// XXX arty 51// Will move enum SWIGTYPE later when I figure out what to do with it... 52 53%typecheck(SWIG_TYPECHECK_INTEGER) int, signed int, const int &, const signed int &, enum SWIGTYPE { 54 if( !Is_block($input) ) $1 = 0; 55 else { 56 switch( SWIG_Tag_val($input) ) { 57 case C_int: $1 = 1; break; 58 default: $1 = 0; break; 59 } 60 } 61} 62 63%typecheck(SWIG_TYPECHECK_INTEGER) unsigned int, const unsigned int & { 64 if( !Is_block($input) ) $1 = 0; 65 else { 66 switch( SWIG_Tag_val($input) ) { 67 case C_uint: $1 = 1; break; 68 case C_int32: $1 = 1; break; 69 default: $1 = 0; break; 70 } 71 } 72} 73 74%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 & { 75 if( !Is_block($input) ) $1 = 0; 76 else { 77 switch( SWIG_Tag_val($input) ) { 78 case C_int64: $1 = 1; break; 79 default: $1 = 0; break; 80 } 81 } 82} 83 84%typecheck(SWIG_TYPECHECK_INTEGER) bool, oc_bool, BOOL, const bool &, const oc_bool &, const BOOL & { 85 if( !Is_block($input) ) $1 = 0; 86 else { 87 switch( SWIG_Tag_val($input) ) { 88 case C_bool: $1 = 1; break; 89 default: $1 = 0; break; 90 } 91 } 92} 93 94%typecheck(SWIG_TYPECHECK_DOUBLE) float, const float & { 95 if( !Is_block($input) ) $1 = 0; 96 else { 97 switch( SWIG_Tag_val($input) ) { 98 case C_float: $1 = 1; break; 99 default: $1 = 0; break; 100 } 101 } 102} 103 104%typecheck(SWIG_TYPECHECK_DOUBLE) double, const double & { 105 if( !Is_block($input) ) $1 = 0; 106 else { 107 switch( SWIG_Tag_val($input) ) { 108 case C_double: $1 = 1; break; 109 default: $1 = 0; break; 110 } 111 } 112} 113 114%typecheck(SWIG_TYPECHECK_STRING) char * { 115 if( !Is_block($input) ) $1 = 0; 116 else { 117 switch( SWIG_Tag_val($input) ) { 118 case C_string: $1 = 1; break; 119 case C_ptr: { 120 swig_type_info *typeinfo = 121 (swig_type_info *)(long)SWIG_Int64_val(SWIG_Field($input,1)); 122 $1 = SWIG_TypeCheck("char *",typeinfo) || 123 SWIG_TypeCheck("signed char *",typeinfo) || 124 SWIG_TypeCheck("unsigned char *",typeinfo) || 125 SWIG_TypeCheck("const char *",typeinfo) || 126 SWIG_TypeCheck("const signed char *",typeinfo) || 127 SWIG_TypeCheck("const unsigned char *",typeinfo) || 128 SWIG_TypeCheck("std::string",typeinfo); 129 } break; 130 default: $1 = 0; break; 131 } 132 } 133} 134 135%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] { 136 void *ptr; 137 $1 = !caml_ptr_val_internal($input, &ptr,$descriptor); 138} 139 140#if 0 141 142%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { 143 void *ptr; 144 $1 = !caml_ptr_val_internal($input, &ptr, $&1_descriptor); 145} 146 147#endif 148 149%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { 150 void *ptr; 151 $1 = !caml_ptr_val_internal($input, &ptr, 0); 152} 153 154/* ------------------------------------------------------------ 155 * Exception handling 156 * ------------------------------------------------------------ */ 157 158%typemap(throws) int, 159 long, 160 short, 161 unsigned int, 162 unsigned long, 163 unsigned short { 164 SWIG_exception($1,"Thrown exception from C++ (int)"); 165} 166 167%typemap(throws) SWIGTYPE CLASS { 168 $&1_ltype temp = new $1_ltype($1); 169 SWIG_exception((int)temp,"Thrown exception from C++ (object)"); 170} 171 172%typemap(throws) SWIGTYPE { 173 (void)$1; 174 SWIG_exception(0,"Thrown exception from C++ (unknown)"); 175} 176 177%typemap(throws) char * { 178 SWIG_exception(0,$1); 179} 180