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 * rubyprimtypes.swg 6 * 7 * ----------------------------------------------------------------------------- */ 8/* ------------------------------------------------------------ 9 * Primitive Types 10 * ------------------------------------------------------------ */ 11 12/* auxiliary ruby fail method */ 13 14%fragment("SWIG_ruby_failed","header") 15{ 16SWIGINTERN VALUE 17SWIG_ruby_failed(void) 18{ 19 return Qnil; 20} 21} 22 23%define %ruby_aux_method(Type, Method, Action) 24SWIGINTERN VALUE SWIG_AUX_##Method##(VALUE *args) 25{ 26 VALUE obj = args[0]; 27 VALUE type = TYPE(obj); 28 Type *res = (Type *)(args[1]); 29 *res = Action; 30 return obj; 31} 32%enddef 33 34 35/* boolean */ 36 37%fragment(SWIG_From_frag(bool),"header") { 38SWIGINTERNINLINE VALUE 39SWIG_From_dec(bool)(bool value) 40{ 41 return value ? Qtrue : Qfalse; 42} 43} 44 45%fragment(SWIG_AsVal_frag(bool),"header", 46 fragment=SWIG_AsVal_frag(int)) { 47SWIGINTERN int 48SWIG_AsVal_dec(bool)(VALUE obj, bool *val) 49{ 50 if (obj == Qtrue) { 51 if (val) *val = true; 52 return SWIG_OK; 53 } else if (obj == Qfalse) { 54 if (val) *val = false; 55 return SWIG_OK; 56 } else { 57 int res = 0; 58 if (SWIG_AsVal(int)(obj, &res) == SWIG_OK) { 59 if (val) *val = res ? true : false; 60 return SWIG_OK; 61 } 62 } 63 return SWIG_TypeError; 64} 65} 66 67/* long */ 68 69%fragment(SWIG_From_frag(long),"header", 70 fragment="<limits.h>") { 71 %define_as(SWIG_From_dec(long), LONG2NUM) 72} 73 74%fragment(SWIG_AsVal_frag(long),"header",fragment="SWIG_ruby_failed") { 75%ruby_aux_method(long, NUM2LONG, type == T_FIXNUM ? NUM2LONG(obj) : rb_big2long(obj)) 76 77SWIGINTERN int 78SWIG_AsVal_dec(long)(VALUE obj, long* val) 79{ 80 VALUE type = TYPE(obj); 81 if ((type == T_FIXNUM) || (type == T_BIGNUM)) { 82 long v; 83 VALUE a[2]; 84 a[0] = obj; 85 a[1] = (VALUE)(&v); 86 if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { 87 if (val) *val = v; 88 return SWIG_OK; 89 } 90 } 91 return SWIG_TypeError; 92} 93} 94 95/* unsigned long */ 96 97%fragment(SWIG_From_frag(unsigned long),"header", 98 fragment=SWIG_From_frag(long)) { 99SWIGINTERNINLINE VALUE 100SWIG_From_dec(unsigned long)(unsigned long value) 101{ 102 return ULONG2NUM(value); 103} 104} 105 106%fragment(SWIG_AsVal_frag(unsigned long),"header",fragment="SWIG_ruby_failed") { 107%ruby_aux_method(unsigned long, NUM2ULONG, type == T_FIXNUM ? NUM2ULONG(obj) : rb_big2ulong(obj)) 108 109SWIGINTERN int 110SWIG_AsVal_dec(unsigned long)(VALUE obj, unsigned long *val) 111{ 112 VALUE type = TYPE(obj); 113 if ((type == T_FIXNUM) || (type == T_BIGNUM)) { 114 unsigned long v; 115 VALUE a[2]; 116 a[0] = obj; 117 a[1] = (VALUE)(&v); 118 if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { 119 if (val) *val = v; 120 return SWIG_OK; 121 } 122 } 123 return SWIG_TypeError; 124} 125} 126 127/* long long */ 128 129%fragment(SWIG_From_frag(long long),"header", 130 fragment=SWIG_From_frag(long), 131 fragment="<limits.h>") { 132SWIGINTERNINLINE VALUE 133SWIG_From_dec(long long)(long long value) 134{ 135 return LL2NUM(value); 136} 137} 138 139%fragment(SWIG_AsVal_frag(long long),"header",fragment="SWIG_ruby_failed") { 140%ruby_aux_method(long long, NUM2LL, type == T_FIXNUM ? NUM2LL(obj) : rb_big2ll(obj)) 141 142SWIGINTERN int 143SWIG_AsVal_dec(long long)(VALUE obj, long long *val) 144{ 145 VALUE type = TYPE(obj); 146 if ((type == T_FIXNUM) || (type == T_BIGNUM)) { 147 long long v; 148 VALUE a[2]; 149 a[0] = obj; 150 a[1] = (VALUE)(&v); 151 if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2LL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { 152 if (val) *val = v; 153 return SWIG_OK; 154 } 155 } 156 return SWIG_TypeError; 157} 158} 159 160/* unsigned long long */ 161 162%fragment(SWIG_From_frag(unsigned long long),"header", 163 fragment=SWIG_From_frag(long long), 164 fragment="<limits.h>") { 165SWIGINTERNINLINE VALUE 166SWIG_From_dec(unsigned long long)(unsigned long long value) 167{ 168 return ULL2NUM(value); 169} 170} 171 172%fragment(SWIG_AsVal_frag(unsigned long long),"header",fragment="SWIG_ruby_failed") { 173%ruby_aux_method(long long, NUM2ULL, type == T_FIXNUM ? NUM2ULL(obj) : rb_big2ull(obj)) 174 175SWIGINTERN int 176SWIG_AsVal_dec(unsigned long long)(VALUE obj, unsigned long long *val) 177{ 178 VALUE type = TYPE(obj); 179 if ((type == T_FIXNUM) || (type == T_BIGNUM)) { 180 unsigned long long v; 181 VALUE a[2]; 182 a[0] = obj; 183 a[1] = (VALUE)(&v); 184 if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2ULL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { 185 if (val) *val = v; 186 return SWIG_OK; 187 } 188 } 189 return SWIG_TypeError; 190} 191} 192 193/* double */ 194 195%fragment(SWIG_From_frag(double),"header") { 196 %define_as(SWIG_From_dec(double), rb_float_new) 197} 198 199%fragment(SWIG_AsVal_frag(double),"header",fragment="SWIG_ruby_failed") { 200%ruby_aux_method(double, NUM2DBL, NUM2DBL(obj)) 201 202SWIGINTERN int 203SWIG_AsVal_dec(double)(VALUE obj, double *val) 204{ 205 VALUE type = TYPE(obj); 206 if ((type == T_FLOAT) || (type == T_FIXNUM) || (type == T_BIGNUM)) { 207 double v; 208 VALUE a[2]; 209 a[0] = obj; 210 a[1] = (VALUE)(&v); 211 if (rb_rescue(RUBY_METHOD_FUNC(SWIG_AUX_NUM2DBL), (VALUE)a, RUBY_METHOD_FUNC(SWIG_ruby_failed), 0) != Qnil) { 212 if (val) *val = v; 213 return SWIG_OK; 214 } 215 } 216 return SWIG_TypeError; 217} 218} 219 220 221