Home | History | Annotate | Download | only in Utility
      1 /////////////// CModulePreamble ///////////////
      2 
      3 #include <stddef.h> /* For offsetof */
      4 #ifndef offsetof
      5 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
      6 #endif
      7 
      8 #if !defined(WIN32) && !defined(MS_WINDOWS)
      9   #ifndef __stdcall
     10     #define __stdcall
     11   #endif
     12   #ifndef __cdecl
     13     #define __cdecl
     14   #endif
     15   #ifndef __fastcall
     16     #define __fastcall
     17   #endif
     18 #endif
     19 
     20 #ifndef DL_IMPORT
     21   #define DL_IMPORT(t) t
     22 #endif
     23 #ifndef DL_EXPORT
     24   #define DL_EXPORT(t) t
     25 #endif
     26 
     27 #ifndef PY_LONG_LONG
     28   #define PY_LONG_LONG LONG_LONG
     29 #endif
     30 
     31 #ifndef Py_HUGE_VAL
     32   #define Py_HUGE_VAL HUGE_VAL
     33 #endif
     34 
     35 #ifdef PYPY_VERSION
     36 #define CYTHON_COMPILING_IN_PYPY 1
     37 #define CYTHON_COMPILING_IN_CPYTHON 0
     38 #else
     39 #define CYTHON_COMPILING_IN_PYPY 0
     40 #define CYTHON_COMPILING_IN_CPYTHON 1
     41 #endif
     42 
     43 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600
     44 #define Py_OptimizeFlag 0
     45 #endif
     46 
     47 #if PY_VERSION_HEX < 0x02050000
     48   typedef int Py_ssize_t;
     49   #define PY_SSIZE_T_MAX INT_MAX
     50   #define PY_SSIZE_T_MIN INT_MIN
     51   #define PY_FORMAT_SIZE_T ""
     52   #define CYTHON_FORMAT_SSIZE_T ""
     53   #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
     54   #define PyInt_AsSsize_t(o)   __Pyx_PyInt_As_int(o)
     55   #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
     56                                 (PyErr_Format(PyExc_TypeError, \
     57                                               "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
     58                                  (PyObject*)0))
     59   #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
     60                                   !PyComplex_Check(o))
     61   #define PyIndex_Check __Pyx_PyIndex_Check
     62   #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
     63   #define __PYX_BUILD_PY_SSIZE_T "i"
     64 #else
     65   #define __PYX_BUILD_PY_SSIZE_T "n"
     66   #define CYTHON_FORMAT_SSIZE_T "z"
     67   #define __Pyx_PyIndex_Check PyIndex_Check
     68 #endif
     69 
     70 #if PY_VERSION_HEX < 0x02060000
     71   #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
     72   #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
     73   #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
     74   #define PyVarObject_HEAD_INIT(type, size) \
     75           PyObject_HEAD_INIT(type) size,
     76   #define PyType_Modified(t)
     77 
     78   typedef struct {
     79      void *buf;
     80      PyObject *obj;
     81      Py_ssize_t len;
     82      Py_ssize_t itemsize;
     83      int readonly;
     84      int ndim;
     85      char *format;
     86      Py_ssize_t *shape;
     87      Py_ssize_t *strides;
     88      Py_ssize_t *suboffsets;
     89      void *internal;
     90   } Py_buffer;
     91 
     92   #define PyBUF_SIMPLE 0
     93   #define PyBUF_WRITABLE 0x0001
     94   #define PyBUF_FORMAT 0x0004
     95   #define PyBUF_ND 0x0008
     96   #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
     97   #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
     98   #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
     99   #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
    100   #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
    101   #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
    102   #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
    103 
    104   typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
    105   typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
    106 #endif
    107 
    108 #if PY_MAJOR_VERSION < 3
    109   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
    110   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
    111           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
    112   #define __Pyx_DefaultClassType PyClass_Type
    113 #else
    114   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
    115   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
    116           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
    117   #define __Pyx_DefaultClassType PyType_Type
    118 #endif
    119 
    120 #if PY_VERSION_HEX < 0x02060000
    121   #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
    122 #endif
    123 
    124 #if PY_MAJOR_VERSION >= 3
    125   #define Py_TPFLAGS_CHECKTYPES 0
    126   #define Py_TPFLAGS_HAVE_INDEX 0
    127 #endif
    128 
    129 #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
    130   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
    131 #endif
    132 
    133 #if PY_VERSION_HEX < 0x02060000
    134   #define Py_TPFLAGS_HAVE_VERSION_TAG 0
    135 #endif
    136 #if PY_VERSION_HEX < 0x02060000 && !defined(Py_TPFLAGS_IS_ABSTRACT)
    137   #define Py_TPFLAGS_IS_ABSTRACT 0
    138 #endif
    139 #if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE)
    140   #define Py_TPFLAGS_HAVE_FINALIZE 0
    141 #endif
    142 
    143 /* new Py3.3 unicode type (PEP 393) */
    144 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
    145   #define CYTHON_PEP393_ENABLED 1
    146   #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
    147                                               0 : _PyUnicode_Ready((PyObject *)(op)))
    148   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
    149   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
    150   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
    151   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
    152   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
    153 #else
    154   #define CYTHON_PEP393_ENABLED 0
    155   #define __Pyx_PyUnicode_READY(op)       (0)
    156   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
    157   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
    158   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
    159   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
    160   /* (void)(k) => avoid unused variable warning due to macro: */
    161   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
    162 #endif
    163 
    164 #if CYTHON_COMPILING_IN_PYPY
    165   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
    166   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
    167 #else
    168   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
    169   #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ? \
    170       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
    171 #endif
    172 
    173 #define __Pyx_PyString_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
    174 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
    175 
    176 #if PY_MAJOR_VERSION >= 3
    177   #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
    178 #else
    179   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
    180 #endif
    181 
    182 #if PY_MAJOR_VERSION >= 3
    183   #define PyBaseString_Type            PyUnicode_Type
    184   #define PyStringObject               PyUnicodeObject
    185   #define PyString_Type                PyUnicode_Type
    186   #define PyString_Check               PyUnicode_Check
    187   #define PyString_CheckExact          PyUnicode_CheckExact
    188 #endif
    189 
    190 #if PY_VERSION_HEX < 0x02060000
    191   #define PyBytesObject                PyStringObject
    192   #define PyBytes_Type                 PyString_Type
    193   #define PyBytes_Check                PyString_Check
    194   #define PyBytes_CheckExact           PyString_CheckExact
    195   #define PyBytes_FromString           PyString_FromString
    196   #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
    197   #define PyBytes_FromFormat           PyString_FromFormat
    198   #define PyBytes_DecodeEscape         PyString_DecodeEscape
    199   #define PyBytes_AsString             PyString_AsString
    200   #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
    201   #define PyBytes_Size                 PyString_Size
    202   #define PyBytes_AS_STRING            PyString_AS_STRING
    203   #define PyBytes_GET_SIZE             PyString_GET_SIZE
    204   #define PyBytes_Repr                 PyString_Repr
    205   #define PyBytes_Concat               PyString_Concat
    206   #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
    207 #endif
    208 
    209 #if PY_MAJOR_VERSION >= 3
    210   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
    211   #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
    212 #else
    213   #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \
    214                                          PyString_Check(obj) || PyUnicode_Check(obj))
    215   #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
    216 #endif
    217 
    218 #if PY_VERSION_HEX < 0x02060000
    219   #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
    220   #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
    221 #endif
    222 #ifndef PySet_CheckExact
    223   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
    224 #endif
    225 
    226 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
    227 
    228 #if PY_MAJOR_VERSION >= 3
    229   #define PyIntObject                  PyLongObject
    230   #define PyInt_Type                   PyLong_Type
    231   #define PyInt_Check(op)              PyLong_Check(op)
    232   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
    233   #define PyInt_FromString             PyLong_FromString
    234   #define PyInt_FromUnicode            PyLong_FromUnicode
    235   #define PyInt_FromLong               PyLong_FromLong
    236   #define PyInt_FromSize_t             PyLong_FromSize_t
    237   #define PyInt_FromSsize_t            PyLong_FromSsize_t
    238   #define PyInt_AsLong                 PyLong_AsLong
    239   #define PyInt_AS_LONG                PyLong_AS_LONG
    240   #define PyInt_AsSsize_t              PyLong_AsSsize_t
    241   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
    242   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
    243   #define PyNumber_Int                 PyNumber_Long
    244 #endif
    245 
    246 #if PY_MAJOR_VERSION >= 3
    247   #define PyBoolObject                 PyLongObject
    248 #endif
    249 
    250 #if PY_VERSION_HEX < 0x030200A4
    251   typedef long Py_hash_t;
    252   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
    253   #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
    254 #else
    255   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
    256   #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
    257 #endif
    258 
    259 #if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
    260   #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
    261   #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
    262   #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
    263 #else
    264   #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
    265         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
    266         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
    267             (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
    268   #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
    269         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
    270         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
    271             (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
    272   #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
    273         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
    274         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
    275             (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
    276 #endif
    277 
    278 #if PY_MAJOR_VERSION >= 3
    279   #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
    280 #endif
    281 
    282 #if PY_VERSION_HEX < 0x02050000
    283   #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
    284   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
    285   #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
    286 #else
    287   #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
    288   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
    289   #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
    290 #endif
    291 
    292 #if PY_VERSION_HEX < 0x02050000
    293   #define __Pyx_NAMESTR(n) ((char *)(n))
    294   #define __Pyx_DOCSTR(n)  ((char *)(n))
    295 #else
    296   #define __Pyx_NAMESTR(n) (n)
    297   #define __Pyx_DOCSTR(n)  (n)
    298 #endif
    299 
    300 /* inline attribute */
    301 #ifndef CYTHON_INLINE
    302   #if defined(__GNUC__)
    303     #define CYTHON_INLINE __inline__
    304   #elif defined(_MSC_VER)
    305     #define CYTHON_INLINE __inline
    306   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    307     #define CYTHON_INLINE inline
    308   #else
    309     #define CYTHON_INLINE
    310   #endif
    311 #endif
    312 
    313 /* restrict */
    314 #ifndef CYTHON_RESTRICT
    315   #if defined(__GNUC__)
    316     #define CYTHON_RESTRICT __restrict__
    317   #elif defined(_MSC_VER) && _MSC_VER >= 1400
    318     #define CYTHON_RESTRICT __restrict
    319   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    320     #define CYTHON_RESTRICT restrict
    321   #else
    322     #define CYTHON_RESTRICT
    323   #endif
    324 #endif
    325 
    326 #ifdef NAN
    327 #define __PYX_NAN() ((float) NAN)
    328 #else
    329 static CYTHON_INLINE float __PYX_NAN() {
    330   /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and
    331    a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is
    332    a quiet NaN. */
    333   float value;
    334   memset(&value, 0xFF, sizeof(value));
    335   return value;
    336 }
    337 #endif
    338 
    339 // Work around clang bug http://stackoverflow.com/questions/21847816/c-invoke-nested-template-class-destructor
    340 #ifdef __cplusplus
    341 template<typename T>
    342 void __Pyx_call_destructor(T* x) {
    343     x->~T();
    344 }
    345 #endif
    346 
    347 /////////////// UtilityFunctionPredeclarations.proto ///////////////
    348 
    349 /* unused attribute */
    350 #ifndef CYTHON_UNUSED
    351 # if defined(__GNUC__)
    352 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
    353 #     define CYTHON_UNUSED __attribute__ ((__unused__))
    354 #   else
    355 #     define CYTHON_UNUSED
    356 #   endif
    357 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
    358 #   define CYTHON_UNUSED __attribute__ ((__unused__))
    359 # else
    360 #   define CYTHON_UNUSED
    361 # endif
    362 #endif
    363 
    364 typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
    365                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
    366 
    367 /////////////// ForceInitThreads.proto ///////////////
    368 
    369 #ifndef __PYX_FORCE_INIT_THREADS
    370   #define __PYX_FORCE_INIT_THREADS 0
    371 #endif
    372 
    373 /////////////// InitThreads.init ///////////////
    374 
    375 #ifdef WITH_THREAD
    376 PyEval_InitThreads();
    377 #endif
    378 
    379 /////////////// CodeObjectCache.proto ///////////////
    380 
    381 typedef struct {
    382     int code_line;
    383     PyCodeObject* code_object;
    384 } __Pyx_CodeObjectCacheEntry;
    385 
    386 struct __Pyx_CodeObjectCache {
    387     int count;
    388     int max_count;
    389     __Pyx_CodeObjectCacheEntry* entries;
    390 };
    391 
    392 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
    393 
    394 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
    395 static PyCodeObject *__pyx_find_code_object(int code_line);
    396 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
    397 
    398 /////////////// CodeObjectCache ///////////////
    399 // Note that errors are simply ignored in the code below.
    400 // This is just a cache, if a lookup or insertion fails - so what?
    401 
    402 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    403     int start = 0, mid = 0, end = count - 1;
    404     if (end >= 0 && code_line > entries[end].code_line) {
    405         return count;
    406     }
    407     while (start < end) {
    408         mid = (start + end) / 2;
    409         if (code_line < entries[mid].code_line) {
    410             end = mid;
    411         } else if (code_line > entries[mid].code_line) {
    412              start = mid + 1;
    413         } else {
    414             return mid;
    415         }
    416     }
    417     if (code_line <= entries[mid].code_line) {
    418         return mid;
    419     } else {
    420         return mid + 1;
    421     }
    422 }
    423 
    424 static PyCodeObject *__pyx_find_code_object(int code_line) {
    425     PyCodeObject* code_object;
    426     int pos;
    427     if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
    428         return NULL;
    429     }
    430     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    431     if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
    432         return NULL;
    433     }
    434     code_object = __pyx_code_cache.entries[pos].code_object;
    435     Py_INCREF(code_object);
    436     return code_object;
    437 }
    438 
    439 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    440     int pos, i;
    441     __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    442     if (unlikely(!code_line)) {
    443         return;
    444     }
    445     if (unlikely(!entries)) {
    446         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
    447         if (likely(entries)) {
    448             __pyx_code_cache.entries = entries;
    449             __pyx_code_cache.max_count = 64;
    450             __pyx_code_cache.count = 1;
    451             entries[0].code_line = code_line;
    452             entries[0].code_object = code_object;
    453             Py_INCREF(code_object);
    454         }
    455         return;
    456     }
    457     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    458     if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
    459         PyCodeObject* tmp = entries[pos].code_object;
    460         entries[pos].code_object = code_object;
    461         Py_DECREF(tmp);
    462         return;
    463     }
    464     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
    465         int new_max = __pyx_code_cache.max_count + 64;
    466         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
    467             __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
    468         if (unlikely(!entries)) {
    469             return;
    470         }
    471         __pyx_code_cache.entries = entries;
    472         __pyx_code_cache.max_count = new_max;
    473     }
    474     for (i=__pyx_code_cache.count; i>pos; i--) {
    475         entries[i] = entries[i-1];
    476     }
    477     entries[pos].code_line = code_line;
    478     entries[pos].code_object = code_object;
    479     __pyx_code_cache.count++;
    480     Py_INCREF(code_object);
    481 }
    482 
    483 /////////////// CodeObjectCache.cleanup ///////////////
    484 
    485   if (__pyx_code_cache.entries) {
    486       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    487       int i, count = __pyx_code_cache.count;
    488       __pyx_code_cache.count = 0;
    489       __pyx_code_cache.max_count = 0;
    490       __pyx_code_cache.entries = NULL;
    491       for (i=0; i<count; i++) {
    492           Py_DECREF(entries[i].code_object);
    493       }
    494       PyMem_Free(entries);
    495   }
    496 
    497 /////////////// CheckBinaryVersion.proto ///////////////
    498 
    499 static int __Pyx_check_binary_version(void);
    500 
    501 /////////////// CheckBinaryVersion ///////////////
    502 
    503 static int __Pyx_check_binary_version(void) {
    504     char ctversion[4], rtversion[4];
    505     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    506     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    507     if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
    508         char message[200];
    509         PyOS_snprintf(message, sizeof(message),
    510                       "compiletime version %s of module '%.100s' "
    511                       "does not match runtime version %s",
    512                       ctversion, __Pyx_MODULE_NAME, rtversion);
    513         #if PY_VERSION_HEX < 0x02050000
    514         return PyErr_Warn(NULL, message);
    515         #else
    516         return PyErr_WarnEx(NULL, message, 1);
    517         #endif
    518     }
    519     return 0;
    520 }
    521 
    522 /////////////// Refnanny.proto ///////////////
    523 
    524 #ifndef CYTHON_REFNANNY
    525   #define CYTHON_REFNANNY 0
    526 #endif
    527 
    528 #if CYTHON_REFNANNY
    529   typedef struct {
    530     void (*INCREF)(void*, PyObject*, int);
    531     void (*DECREF)(void*, PyObject*, int);
    532     void (*GOTREF)(void*, PyObject*, int);
    533     void (*GIVEREF)(void*, PyObject*, int);
    534     void* (*SetupContext)(const char*, int, const char*);
    535     void (*FinishContext)(void**);
    536   } __Pyx_RefNannyAPIStruct;
    537   static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
    538   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
    539   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
    540 #ifdef WITH_THREAD
    541   #define __Pyx_RefNannySetupContext(name, acquire_gil) \
    542           if (acquire_gil) { \
    543               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
    544               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
    545               PyGILState_Release(__pyx_gilstate_save); \
    546           } else { \
    547               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
    548           }
    549 #else
    550   #define __Pyx_RefNannySetupContext(name, acquire_gil) \
    551           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
    552 #endif
    553   #define __Pyx_RefNannyFinishContext() \
    554           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
    555   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
    556   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
    557   #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
    558   #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
    559   #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
    560   #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
    561   #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
    562   #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
    563 #else
    564   #define __Pyx_RefNannyDeclarations
    565   #define __Pyx_RefNannySetupContext(name, acquire_gil)
    566   #define __Pyx_RefNannyFinishContext()
    567   #define __Pyx_INCREF(r) Py_INCREF(r)
    568   #define __Pyx_DECREF(r) Py_DECREF(r)
    569   #define __Pyx_GOTREF(r)
    570   #define __Pyx_GIVEREF(r)
    571   #define __Pyx_XINCREF(r) Py_XINCREF(r)
    572   #define __Pyx_XDECREF(r) Py_XDECREF(r)
    573   #define __Pyx_XGOTREF(r)
    574   #define __Pyx_XGIVEREF(r)
    575 #endif /* CYTHON_REFNANNY */
    576 
    577 #define __Pyx_XDECREF_SET(r, v) do {                            \
    578         PyObject *tmp = (PyObject *) r;                         \
    579         r = v; __Pyx_XDECREF(tmp);                              \
    580     } while (0)
    581 #define __Pyx_DECREF_SET(r, v) do {                             \
    582         PyObject *tmp = (PyObject *) r;                         \
    583         r = v; __Pyx_DECREF(tmp);                               \
    584     } while (0)
    585 
    586 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
    587 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
    588 
    589 /////////////// Refnanny ///////////////
    590 
    591 #if CYTHON_REFNANNY
    592 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    593     PyObject *m = NULL, *p = NULL;
    594     void *r = NULL;
    595     m = PyImport_ImportModule((char *)modname);
    596     if (!m) goto end;
    597     p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    598     if (!p) goto end;
    599     r = PyLong_AsVoidPtr(p);
    600 end:
    601     Py_XDECREF(p);
    602     Py_XDECREF(m);
    603     return (__Pyx_RefNannyAPIStruct *)r;
    604 }
    605 #endif /* CYTHON_REFNANNY */
    606 
    607 /////////////// RegisterModuleCleanup.proto ///////////////
    608 //@substitute: naming
    609 
    610 static void ${cleanup_cname}(PyObject *self); /*proto*/
    611 static int __Pyx_RegisterCleanup(void); /*proto*/
    612 
    613 /////////////// RegisterModuleCleanup ///////////////
    614 //@substitute: naming
    615 //@requires: ImportExport.c::ModuleImport
    616 
    617 #if PY_MAJOR_VERSION < 3
    618 static PyObject* ${cleanup_cname}_atexit(PyObject *module, CYTHON_UNUSED PyObject *unused) {
    619     ${cleanup_cname}(module);
    620     Py_INCREF(Py_None); return Py_None;
    621 }
    622 
    623 static int __Pyx_RegisterCleanup(void) {
    624     // Don't use Py_AtExit because that has a 32-call limit and is called
    625     // after python finalization.
    626     // Also, we try to prepend the cleanup function to "atexit._exithandlers"
    627     // in Py2 because CPython runs them last-to-first. Being run last allows
    628     // user exit code to run before us that may depend on the globals
    629     // and cached objects that we are about to clean up.
    630 
    631     static PyMethodDef cleanup_def = {
    632         __Pyx_NAMESTR("__cleanup"), (PyCFunction)${cleanup_cname}_atexit, METH_NOARGS, 0};
    633 
    634     PyObject *cleanup_func = 0;
    635     PyObject *atexit = 0;
    636     PyObject *reg = 0;
    637     PyObject *args = 0;
    638     PyObject *res = 0;
    639     int ret = -1;
    640 
    641     cleanup_func = PyCFunction_New(&cleanup_def, 0);
    642     if (!cleanup_func)
    643         goto bad;
    644 
    645     atexit = __Pyx_ImportModule("atexit");
    646     if (!atexit)
    647         goto bad;
    648     reg = __Pyx_GetAttrString(atexit, "_exithandlers");
    649     if (reg && PyList_Check(reg)) {
    650         PyObject *a, *kw;
    651         a = PyTuple_New(0);
    652         kw = PyDict_New();
    653         if (!a || !kw) {
    654             Py_XDECREF(a);
    655             Py_XDECREF(kw);
    656             goto bad;
    657         }
    658         args = PyTuple_Pack(3, cleanup_func, a, kw);
    659         Py_DECREF(a);
    660         Py_DECREF(kw);
    661         if (!args)
    662             goto bad;
    663         ret = PyList_Insert(reg, 0, args);
    664     } else {
    665         if (!reg)
    666             PyErr_Clear();
    667         Py_XDECREF(reg);
    668         reg = __Pyx_GetAttrString(atexit, "register");
    669         if (!reg)
    670             goto bad;
    671         args = PyTuple_Pack(1, cleanup_func);
    672         if (!args)
    673             goto bad;
    674         res = PyObject_CallObject(reg, args);
    675         if (!res)
    676             goto bad;
    677         ret = 0;
    678     }
    679 bad:
    680     Py_XDECREF(cleanup_func);
    681     Py_XDECREF(atexit);
    682     Py_XDECREF(reg);
    683     Py_XDECREF(args);
    684     Py_XDECREF(res);
    685     return ret;
    686 }
    687 #else
    688 // fake call purely to work around "unused function" warning for __Pyx_ImportModule()
    689 static int __Pyx_RegisterCleanup(void) {
    690     if (0) __Pyx_ImportModule(NULL);
    691     return 0;
    692 }
    693 #endif
    694