Home | History | Annotate | Download | only in python
      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