1 /* ------------------------------------------------------------ 2 * Primitive Types 3 * ------------------------------------------------------------ */ 4 5 /* boolean */ 6 7 %fragment(SWIG_From_frag(bool),"header") { 8 SWIGINTERNINLINE PyObject* 9 SWIG_From_dec(bool)(bool value) 10 { 11 return PyBool_FromLong(value ? 1 : 0); 12 } 13 } 14 15 %fragment(SWIG_AsVal_frag(bool),"header", 16 fragment=SWIG_AsVal_frag(long)) { 17 SWIGINTERN int 18 SWIG_AsVal_dec(bool)(PyObject *obj, bool *val) 19 { 20 int r = PyObject_IsTrue(obj); 21 if (r == -1) 22 return SWIG_ERROR; 23 if (val) *val = r ? true : false; 24 return SWIG_OK; 25 } 26 } 27 28 /* int */ 29 30 %fragment(SWIG_From_frag(int),"header") { 31 SWIGINTERNINLINE PyObject* 32 SWIG_From_dec(int)(int value) 33 { 34 return PyInt_FromLong((long) value); 35 } 36 } 37 38 /* unsigned int */ 39 40 %fragment(SWIG_From_frag(unsigned int),"header") { 41 SWIGINTERNINLINE PyObject* 42 SWIG_From_dec(unsigned int)(unsigned int value) 43 { 44 return PyInt_FromSize_t((size_t) value); 45 } 46 } 47 48 /* long */ 49 50 %fragment(SWIG_From_frag(long),"header") { 51 %define_as(SWIG_From_dec(long), PyLong_FromLong) 52 } 53 54 %fragment(SWIG_AsVal_frag(long),"header", 55 fragment="SWIG_CanCastAsInteger") { 56 SWIGINTERN int 57 SWIG_AsVal_dec(long)(PyObject *obj, long* val) 58 { 59 if (PyInt_Check(obj)) { 60 if (val) *val = PyInt_AsLong(obj); 61 return SWIG_OK; 62 } else if (PyLong_Check(obj)) { 63 long v = PyLong_AsLong(obj); 64 if (!PyErr_Occurred()) { 65 if (val) *val = v; 66 return SWIG_OK; 67 } else { 68 PyErr_Clear(); 69 } 70 } 71 %#ifdef SWIG_PYTHON_CAST_MODE 72 { 73 int dispatch = 0; 74 long v = PyInt_AsLong(obj); 75 if (!PyErr_Occurred()) { 76 if (val) *val = v; 77 return SWIG_AddCast(SWIG_OK); 78 } else { 79 PyErr_Clear(); 80 } 81 if (!dispatch) { 82 double d; 83 int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); 84 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { 85 if (val) *val = (long)(d); 86 return res; 87 } 88 } 89 } 90 %#endif 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)) { 99 SWIGINTERNINLINE PyObject* 100 SWIG_From_dec(unsigned long)(unsigned long value) 101 { 102 return (value > LONG_MAX) ? 103 PyLong_FromUnsignedLong(value) : PyLong_FromLong(%numeric_cast(value,long)); 104 } 105 } 106 107 %fragment(SWIG_AsVal_frag(unsigned long),"header", 108 fragment="SWIG_CanCastAsInteger") { 109 SWIGINTERN int 110 SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val) 111 { 112 %#if PY_VERSION_HEX < 0x03000000 113 if (PyInt_Check(obj)) { 114 long v = PyInt_AsLong(obj); 115 if (v >= 0) { 116 if (val) *val = v; 117 return SWIG_OK; 118 } else { 119 return SWIG_OverflowError; 120 } 121 } else 122 %#endif 123 if (PyLong_Check(obj)) { 124 unsigned long v = PyLong_AsUnsignedLong(obj); 125 if (!PyErr_Occurred()) { 126 if (val) *val = v; 127 return SWIG_OK; 128 } else { 129 PyErr_Clear(); 130 %#if PY_VERSION_HEX >= 0x03000000 131 { 132 long v = PyLong_AsLong(obj); 133 if (!PyErr_Occurred()) { 134 if (v < 0) { 135 return SWIG_OverflowError; 136 } 137 } else { 138 PyErr_Clear(); 139 } 140 } 141 %#endif 142 } 143 } 144 %#ifdef SWIG_PYTHON_CAST_MODE 145 { 146 int dispatch = 0; 147 unsigned long v = PyLong_AsUnsignedLong(obj); 148 if (!PyErr_Occurred()) { 149 if (val) *val = v; 150 return SWIG_AddCast(SWIG_OK); 151 } else { 152 PyErr_Clear(); 153 } 154 if (!dispatch) { 155 double d; 156 int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); 157 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { 158 if (val) *val = (unsigned long)(d); 159 return res; 160 } 161 } 162 } 163 %#endif 164 return SWIG_TypeError; 165 } 166 } 167 168 /* long long */ 169 170 %fragment(SWIG_From_frag(long long),"header", 171 fragment=SWIG_From_frag(long), 172 fragment="<limits.h>") { 173 SWIGINTERNINLINE PyObject* 174 SWIG_From_dec(long long)(long long value) 175 { 176 return ((value < LONG_MIN) || (value > LONG_MAX)) ? 177 PyLong_FromLongLong(value) : PyLong_FromLong(%numeric_cast(value,long)); 178 } 179 } 180 181 %fragment(SWIG_AsVal_frag(long long),"header", 182 fragment=SWIG_AsVal_frag(long), 183 fragment="SWIG_CanCastAsInteger", 184 fragment="<limits.h>") { 185 SWIGINTERN int 186 SWIG_AsVal_dec(long long)(PyObject *obj, long long *val) 187 { 188 int res = SWIG_TypeError; 189 if (PyLong_Check(obj)) { 190 long long v = PyLong_AsLongLong(obj); 191 if (!PyErr_Occurred()) { 192 if (val) *val = v; 193 return SWIG_OK; 194 } else { 195 PyErr_Clear(); 196 } 197 } else { 198 long v; 199 res = SWIG_AsVal(long)(obj,&v); 200 if (SWIG_IsOK(res)) { 201 if (val) *val = v; 202 return res; 203 } 204 } 205 %#ifdef SWIG_PYTHON_CAST_MODE 206 { 207 const double mant_max = 1LL << DBL_MANT_DIG; 208 const double mant_min = -mant_max; 209 double d; 210 res = SWIG_AsVal(double)(obj,&d); 211 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) { 212 if (val) *val = (long long)(d); 213 return SWIG_AddCast(res); 214 } 215 res = SWIG_TypeError; 216 } 217 %#endif 218 return res; 219 } 220 } 221 222 /* unsigned long long */ 223 224 %fragment(SWIG_From_frag(unsigned long long),"header", 225 fragment=SWIG_From_frag(long long), 226 fragment="<limits.h>") { 227 SWIGINTERNINLINE PyObject* 228 SWIG_From_dec(unsigned long long)(unsigned long long value) 229 { 230 return (value > LONG_MAX) ? 231 PyLong_FromUnsignedLongLong(value) : PyLong_FromLong(%numeric_cast(value,long)); 232 } 233 } 234 235 %fragment(SWIG_AsVal_frag(unsigned long long),"header", 236 fragment=SWIG_AsVal_frag(unsigned long), 237 fragment="SWIG_CanCastAsInteger", 238 fragment="<limits.h>") { 239 SWIGINTERN int 240 SWIG_AsVal_dec(unsigned long long)(PyObject *obj, unsigned long long *val) 241 { 242 int res = SWIG_TypeError; 243 if (PyLong_Check(obj)) { 244 unsigned long long v = PyLong_AsUnsignedLongLong(obj); 245 if (!PyErr_Occurred()) { 246 if (val) *val = v; 247 return SWIG_OK; 248 } else { 249 PyErr_Clear(); 250 } 251 } else { 252 unsigned long v; 253 res = SWIG_AsVal(unsigned long)(obj,&v); 254 if (SWIG_IsOK(res)) { 255 if (val) *val = v; 256 return res; 257 } 258 } 259 %#ifdef SWIG_PYTHON_CAST_MODE 260 { 261 const double mant_max = 1LL << DBL_MANT_DIG; 262 double d; 263 res = SWIG_AsVal(double)(obj,&d); 264 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { 265 if (val) *val = (unsigned long long)(d); 266 return SWIG_AddCast(res); 267 } 268 res = SWIG_TypeError; 269 } 270 %#endif 271 return res; 272 } 273 } 274 275 /* double */ 276 277 %fragment(SWIG_From_frag(double),"header") { 278 %define_as(SWIG_From_dec(double), PyFloat_FromDouble) 279 } 280 281 %fragment(SWIG_AsVal_frag(double),"header") { 282 SWIGINTERN int 283 SWIG_AsVal_dec(double)(PyObject *obj, double *val) 284 { 285 int res = SWIG_TypeError; 286 if (PyFloat_Check(obj)) { 287 if (val) *val = PyFloat_AsDouble(obj); 288 return SWIG_OK; 289 } else if (PyInt_Check(obj)) { 290 if (val) *val = PyInt_AsLong(obj); 291 return SWIG_OK; 292 } else if (PyLong_Check(obj)) { 293 double v = PyLong_AsDouble(obj); 294 if (!PyErr_Occurred()) { 295 if (val) *val = v; 296 return SWIG_OK; 297 } else { 298 PyErr_Clear(); 299 } 300 } 301 %#ifdef SWIG_PYTHON_CAST_MODE 302 { 303 int dispatch = 0; 304 double d = PyFloat_AsDouble(obj); 305 if (!PyErr_Occurred()) { 306 if (val) *val = d; 307 return SWIG_AddCast(SWIG_OK); 308 } else { 309 PyErr_Clear(); 310 } 311 if (!dispatch) { 312 long v = PyLong_AsLong(obj); 313 if (!PyErr_Occurred()) { 314 if (val) *val = v; 315 return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); 316 } else { 317 PyErr_Clear(); 318 } 319 } 320 } 321 %#endif 322 return res; 323 } 324 } 325 326 327 328