12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Generated by Cython 0.17.4 on Sun Feb 24 19:48:34 2013 */
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PY_SSIZE_T_CLEAN
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "Python.h"
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef Py_PYTHON_H
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #error Python headers needed to compile C extensions, please install development version of Python.
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif PY_VERSION_HEX < 0x02040000
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #error Cython requires Python 2.4+.
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <stddef.h> /* For offsetof */
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef offsetof
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(WIN32) && !defined(MS_WINDOWS)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifndef __stdcall
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define __stdcall
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifndef __cdecl
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define __cdecl
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifndef __fastcall
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define __fastcall
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef DL_IMPORT
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define DL_IMPORT(t) t
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef DL_EXPORT
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define DL_EXPORT(t) t
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef PY_LONG_LONG
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PY_LONG_LONG LONG_LONG
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef Py_HUGE_VAL
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_HUGE_VAL HUGE_VAL
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef PYPY_VERSION
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CYTHON_COMPILING_IN_PYPY 1
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CYTHON_COMPILING_IN_CPYTHON 0
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CYTHON_COMPILING_IN_PYPY 0
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CYTHON_COMPILING_IN_CPYTHON 1
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02050000
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef int Py_ssize_t;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PY_SSIZE_T_MAX INT_MAX
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PY_SSIZE_T_MIN INT_MIN
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PY_FORMAT_SIZE_T ""
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define CYTHON_FORMAT_SSIZE_T ""
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                (PyErr_Format(PyExc_TypeError, \
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 (PyObject*)0))
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                  !PyComplex_Check(o))
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyIndex_Check __Pyx_PyIndex_Check
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __PYX_BUILD_PY_SSIZE_T "i"
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __PYX_BUILD_PY_SSIZE_T "n"
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define CYTHON_FORMAT_SSIZE_T "z"
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyIndex_Check PyIndex_Check
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02060000
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyVarObject_HEAD_INIT(type, size) \
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          PyObject_HEAD_INIT(type) size,
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyType_Modified(t)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef struct {
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     void *buf;
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     PyObject *obj;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     Py_ssize_t len;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     Py_ssize_t itemsize;
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     int readonly;
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     int ndim;
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     char *format;
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     Py_ssize_t *shape;
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     Py_ssize_t *strides;
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     Py_ssize_t *suboffsets;
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     void *internal;
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  } Py_buffer;
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_SIMPLE 0
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_WRITABLE 0x0001
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_FORMAT 0x0004
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_ND 0x0008
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION < 3
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_TPFLAGS_CHECKTYPES 0
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_TPFLAGS_HAVE_INDEX 0
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define CYTHON_PEP393_ENABLED 1
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                              0 : _PyUnicode_Ready((PyObject *)(op)))
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define CYTHON_PEP393_ENABLED 0
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READY(op)       (0)
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBaseString_Type            PyUnicode_Type
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyStringObject               PyUnicodeObject
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyString_Type                PyUnicode_Type
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyString_Check               PyUnicode_Check
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyString_CheckExact          PyUnicode_CheckExact
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02060000
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytesObject                PyStringObject
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_Type                 PyString_Type
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_Check                PyString_Check
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_CheckExact           PyString_CheckExact
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_FromString           PyString_FromString
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_FromFormat           PyString_FromFormat
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_DecodeEscape         PyString_DecodeEscape
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_AsString             PyString_AsString
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_Size                 PyString_Size
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_AS_STRING            PyString_AS_STRING
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_GET_SIZE             PyString_GET_SIZE
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_Repr                 PyString_Repr
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_Concat               PyString_Concat
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02060000
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef PySet_CheckExact
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyIntObject                  PyLongObject
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_Type                   PyLong_Type
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_Check(op)              PyLong_Check(op)
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromString             PyLong_FromString
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromUnicode            PyLong_FromUnicode
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromLong               PyLong_FromLong
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromSize_t             PyLong_FromSize_t
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_FromSsize_t            PyLong_FromSsize_t
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AsLong                 PyLong_AsLong
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AS_LONG                PyLong_AS_LONG
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AsSsize_t              PyLong_AsSsize_t
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyBoolObject                 PyLongObject
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03020000
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef long Py_hash_t;
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02050000
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02050000
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_NAMESTR(n) ((char *)(n))
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DOCSTR(n)  ((char *)(n))
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_NAMESTR(n) (n)
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DOCSTR(n)  (n)
2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef __PYX_EXTERN_C
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifdef __cplusplus
2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define __PYX_EXTERN_C extern "C"
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define __PYX_EXTERN_C extern
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(WIN32) || defined(MS_WINDOWS)
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define _USE_MATH_DEFINES
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <math.h>
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __PYX_HAVE__bintrees__cwalker
2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __PYX_HAVE_API__bintrees__cwalker
2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ctrees.h"
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "stack.h"
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef _OPENMP
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <omp.h>
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* _OPENMP */
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef PYREX_WITHOUT_ASSERTIONS
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CYTHON_WITHOUT_ASSERTIONS
2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* inline attribute */
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CYTHON_INLINE
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if defined(__GNUC__)
2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define CYTHON_INLINE __inline__
2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #elif defined(_MSC_VER)
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define CYTHON_INLINE __inline
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define CYTHON_INLINE inline
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define CYTHON_INLINE
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* unused attribute */
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CYTHON_UNUSED
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# if defined(__GNUC__)
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#     define CYTHON_UNUSED __attribute__ ((__unused__))
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#   else
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#     define CYTHON_UNUSED
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#   endif
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#   define CYTHON_UNUSED __attribute__ ((__unused__))
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# else
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#   define CYTHON_UNUSED
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# endif
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Type Conversion Predeclarations */
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_COMPILING_IN_CPYTHON
3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef __GNUC__
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Test for GCC > 2.95 */
3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define likely(x)   __builtin_expect(!!(x), 1)
3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define unlikely(x) __builtin_expect(!!(x), 0)
3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else /* __GNUC__ > 2 ... */
3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define likely(x)   (x)
3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #define unlikely(x) (x)
3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif /* __GNUC__ > 2 ... */
3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else /* __GNUC__ */
3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define likely(x)   (x)
3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define unlikely(x) (x)
3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* __GNUC__ */
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_m;
3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_b;
3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_empty_tuple;
3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_empty_bytes;
3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_lineno;
3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_clineno = 0;
3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const char * __pyx_cfilenm= __FILE__;
3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const char *__pyx_filename;
3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const char *__pyx_f[] = {
3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  "cwalker.pyx",
3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/*--- Type declarations ---*/
3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct __pyx_obj_8bintrees_7cwalker_cWalker;
3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pxd":11
3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * from stack cimport node_stack_t
3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * cdef class cWalker:             # <<<<<<<<<<<<<<
3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef node_t *node
3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef node_t *root
3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct __pyx_obj_8bintrees_7cwalker_cWalker {
3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject_HEAD
3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *__pyx_vtab;
3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  node_t *node;
3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  node_t *root;
3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  node_stack_t *stack;
3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":14
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * from ctrees cimport *
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * cdef class cWalker:             # <<<<<<<<<<<<<<
3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __cinit__(self):
3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = NULL
3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker {
3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void (*set_tree)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, node_t *);
3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *(*reset)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch);
3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *(*push)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch);
3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *(*pop)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch);
3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *__pyx_vtabptr_8bintrees_7cwalker_cWalker;
3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CYTHON_REFNANNY
3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define CYTHON_REFNANNY 0
3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_REFNANNY
3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef struct {
3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void (*INCREF)(void*, PyObject*, int);
3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void (*DECREF)(void*, PyObject*, int);
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void (*GOTREF)(void*, PyObject*, int);
3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void (*GIVEREF)(void*, PyObject*, int);
3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void* (*SetupContext)(const char*, int, const char*);
3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void (*FinishContext)(void**);
3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  } __Pyx_RefNannyAPIStruct;
3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef WITH_THREAD
3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          if (acquire_gil) { \
3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              PyGILState_Release(__pyx_gilstate_save); \
4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          } else { \
4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          }
4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannyFinishContext() \
4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
4152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
4192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannyDeclarations
4202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannySetupContext(name, acquire_gil)
4212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_RefNannyFinishContext()
4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_INCREF(r) Py_INCREF(r)
4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_DECREF(r) Py_DECREF(r)
4242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GOTREF(r)
4252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_GIVEREF(r)
4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XINCREF(r) Py_XINCREF(r)
4272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XDECREF(r) Py_XDECREF(r)
4282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XGOTREF(r)
4292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #define __Pyx_XGIVEREF(r)
4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* CYTHON_REFNANNY */
4312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
4422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
4712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_WriteUnraisable(const char *name, int clineno,
4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                  int lineno, const char *filename); /*proto*/
4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_check_binary_version(void);
4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef struct {
4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int code_line;
4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyCodeObject* code_object;
4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} __Pyx_CodeObjectCacheEntry;
4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct __Pyx_CodeObjectCache {
4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int count;
4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int max_count;
4922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_CodeObjectCacheEntry* entries;
4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyCodeObject *__pyx_find_code_object(int code_line);
4972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_AddTraceback(const char *funcname, int c_line,
5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               int py_line, const char *filename); /*proto*/
5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Module declarations from 'bintrees.ctrees' */
5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Module declarations from 'bintrees.stack' */
5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Module declarations from 'bintrees.cwalker' */
5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyTypeObject *__pyx_ptype_8bintrees_7cwalker_cWalker = 0;
5112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __Pyx_MODULE_NAME "bintrees.cwalker"
5122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int __pyx_module_is_main_bintrees__cwalker = 0;
5132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Implementation of 'bintrees.cwalker' */
5152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_builtin_property;
5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_builtin_IndexError;
5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_builtin_KeyError;
5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_pf_8bintrees_7cwalker_7cWalker___cinit__(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_pf_8bintrees_7cwalker_7cWalker_2__dealloc__(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_4reset(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_6key(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_8value(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_10item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_12is_valid(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_14goto(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
5262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_16push(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_18pop(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_20stack_is_empty(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_22goto_leaf(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_24has_child(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_v_direction); /* proto */
5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_26down(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_v_direction); /* proto */
5322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_28go_left(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_30go_right(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_32has_left(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_34has_right(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self); /* proto */
5362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_36succ_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
5372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_38prev_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
5382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_40floor_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
5392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_42ceiling_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k_1[] = "pop(): stack is empty";
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__key[] = "key";
5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__pop[] = "pop";
5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__item[] = "item";
5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__push[] = "push";
5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__reset[] = "reset";
5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__value[] = "value";
5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__KeyError[] = "KeyError";
5482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k____main__[] = "__main__";
5492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k____test__[] = "__test__";
5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__is_valid[] = "is_valid";
5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__property[] = "property";
5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_k__IndexError[] = "IndexError";
5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_kp_s_1;
5542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__IndexError;
5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__KeyError;
5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s____main__;
5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s____test__;
5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__is_valid;
5592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__item;
5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__key;
5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__pop;
5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__property;
5632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__push;
5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__reset;
5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_n_s__value;
5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_k_tuple_2;
5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_pw_8bintrees_7cwalker_7cWalker_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_pw_8bintrees_7cwalker_7cWalker_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_r;
5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker___cinit__(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":15
5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
5842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * cdef class cWalker:
5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __cinit__(self):             # <<<<<<<<<<<<<<
5862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = NULL
5872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = NULL
5882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
5892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_pf_8bintrees_7cwalker_7cWalker___cinit__(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
5912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_r;
5922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
5932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("__cinit__", 0);
5942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":16
5962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * cdef class cWalker:
5972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __cinit__(self):
5982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = NULL             # <<<<<<<<<<<<<<
5992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = NULL
6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.stack = stack_init(MAXSTACK)
6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->root = NULL;
6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":17
6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __cinit__(self):
6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = NULL
6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = NULL             # <<<<<<<<<<<<<<
6082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.stack = stack_init(MAXSTACK)
6092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = NULL;
6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":18
6142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = NULL
6152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = NULL
6162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.stack = stack_init(MAXSTACK)             # <<<<<<<<<<<<<<
6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __dealloc__(self):
6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->stack = stack_init(32);
6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = 0;
6232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
6282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_pw_8bintrees_7cwalker_7cWalker_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
6292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_pw_8bintrees_7cwalker_7cWalker_3__dealloc__(PyObject *__pyx_v_self) {
6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
6312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
6322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_pf_8bintrees_7cwalker_7cWalker_2__dealloc__(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
6332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
6352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":20
6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.stack = stack_init(MAXSTACK)
6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __dealloc__(self):             # <<<<<<<<<<<<<<
6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_delete(self.stack)
6412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_pf_8bintrees_7cwalker_7cWalker_2__dealloc__(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
6462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("__dealloc__", 0);
6472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":21
6492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def __dealloc__(self):
6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_delete(self.stack)             # <<<<<<<<<<<<<<
6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef void set_tree(self, node_t *root):
6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  stack_delete(__pyx_v_self->stack);
6562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
6592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":23
6612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_delete(self.stack)
6622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef void set_tree(self, node_t *root):             # <<<<<<<<<<<<<<
6642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = root
6652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.reset()
6662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_f_8bintrees_7cwalker_7cWalker_set_tree(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, node_t *__pyx_v_root) {
6692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
6702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
6712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
6722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
6732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
6742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("set_tree", 0);
6752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":24
6772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef void set_tree(self, node_t *root):
6792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = root             # <<<<<<<<<<<<<<
6802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.reset()
6812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->root = __pyx_v_root;
6842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":25
6862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cdef void set_tree(self, node_t *root):
6872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.root = root
6882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.reset()             # <<<<<<<<<<<<<<
6892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
6902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef reset(self):
6912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
6922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = ((struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *)__pyx_v_self->__pyx_vtab)->reset(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
6982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
6992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_WriteUnraisable("bintrees.cwalker.cWalker.set_tree", __pyx_clineno, __pyx_lineno, __pyx_filename);
7002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
7012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
7032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":27
7052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.reset()
7062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
7072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef reset(self):             # <<<<<<<<<<<<<<
7082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_reset(self.stack)
7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
7102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
7112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_5reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
7132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_f_8bintrees_7cwalker_7cWalker_reset(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_skip_dispatch) {
7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
7152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
7162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
7172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
7182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  node_t *__pyx_t_3;
7192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
7212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
7222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("reset", 0);
7232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if called by wrapper */
7242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__pyx_skip_dispatch)) ;
7252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if overriden in Python */
7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
7272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_1);
7292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_5reset)) {
7302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_XDECREF(__pyx_r);
7312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_GOTREF(__pyx_t_2);
7332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_r = __pyx_t_2;
7342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = 0;
7352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L0;
7372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
7382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
7402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":28
7422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
7432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef reset(self):
7442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_reset(self.stack)             # <<<<<<<<<<<<<<
7452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
7462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
7472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
7482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  stack_reset(__pyx_v_self->stack);
7492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":29
7512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef reset(self):
7522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_reset(self.stack)
7532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root             # <<<<<<<<<<<<<<
7542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
7552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
7562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
7572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = __pyx_v_self->root;
7582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = __pyx_t_3;
7592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
7622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
7632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
7642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
7662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = 0;
7672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
7682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
7692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
7702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
7712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
7722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_5reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
7752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_5reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
7762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
7772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
7782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
7792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_4reset(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
7802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
7812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
7822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
7832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":27
7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.reset()
7862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
7872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef reset(self):             # <<<<<<<<<<<<<<
7882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_reset(self.stack)
7892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
7902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
7912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_4reset(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
7932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
7942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
7952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
7962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
7972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
7982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
7992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("reset", 0);
8002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
8012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = ((struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *)__pyx_v_self->__pyx_vtab)->reset(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
8032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
8042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
8052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
8062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
8092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
8102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
8112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
8122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
8132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
8142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
8152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
8162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
8172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
8202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_7key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
8212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_7key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
8222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
8232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
8242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("key (wrapper)", 0);
8252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_6key(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
8262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
8272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
8282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":32
8312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def key(self):             # <<<<<<<<<<<<<<
8342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.key
8352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
8372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_6key(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
8402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
8412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("key", 0);
8422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":33
8442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def key(self):
8462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.key             # <<<<<<<<<<<<<<
8472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
8502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
8512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
8522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_v_self->node->key);
8532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
8542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
8572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
8582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
8592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
8602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
8632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_9value(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
8642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_9value(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
8652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
8662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
8672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("value (wrapper)", 0);
8682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_8value(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
8692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
8702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
8712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":36
8742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def value(self):             # <<<<<<<<<<<<<<
8772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.value
8782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
8802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_8value(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
8822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
8832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
8842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("value", 0);
8852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":37
8872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def value(self):
8892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.value             # <<<<<<<<<<<<<<
8902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
8912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
8922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
8932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
8942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
8952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_v_self->node->value);
8962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
8972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
9002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
9012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
9022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
9032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
9062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_11item(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_11item(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
9092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
9102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("item (wrapper)", 0);
9112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_10item(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
9122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
9132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
9142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":40
9172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
9192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def item(self):             # <<<<<<<<<<<<<<
9202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object>self.node.key, <object>self.node.value)
9212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
9232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_10item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
9252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
9262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
9272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
9282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
9292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
9312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("item", 0);
9322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":41
9342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
9352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def item(self):
9362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object>self.node.key, <object>self.node.value)             # <<<<<<<<<<<<<<
9372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
9392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
9402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
9412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
9432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
9442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->node->key));
9452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->key));
9462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
9472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->node->value));
9482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->value));
9492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_t_1);
9502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
9512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
9522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
9552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
9562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
9572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.item", __pyx_clineno, __pyx_lineno, __pyx_filename);
9582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
9592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
9602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
9612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
9622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
9632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
9662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_13is_valid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
9672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_13is_valid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
9682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("is_valid (wrapper)", 0);
9712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_12is_valid(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
9722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
9742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":44
9772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
9792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def is_valid(self):             # <<<<<<<<<<<<<<
9802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node != NULL
9812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_12is_valid(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
9852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
9902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
9912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("is_valid", 0);
9922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":45
9942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
9952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def is_valid(self):
9962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node != NULL             # <<<<<<<<<<<<<<
9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto(self, key):
9992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
10012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->node != NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
10032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
10042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
10062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
10082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
10092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
10102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
10112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.is_valid", __pyx_clineno, __pyx_lineno, __pyx_filename);
10122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
10132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
10142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
10152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
10162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
10172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
10202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_15goto(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
10212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_15goto(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
10222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
10232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
10242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("goto (wrapper)", 0);
10252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_14goto(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((PyObject *)__pyx_v_key));
10262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":47
10312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node != NULL
10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto(self, key):             # <<<<<<<<<<<<<<
10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         cdef int cval
10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
10362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_14goto(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key) {
10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_v_cval;
10402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
10412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
10422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  node_t *__pyx_t_1;
10432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_2;
10442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_3 = NULL;
10452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
10462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
10472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
10482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("goto", 0);
10492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":49
10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto(self, key):
10522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         cdef int cval
10532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root             # <<<<<<<<<<<<<<
10542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
10552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             cval = ct_compare(key, <object> self.node.key)
10562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __pyx_v_self->root;
10582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = __pyx_t_1;
10592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":50
10612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         cdef int cval
10622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
10632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:             # <<<<<<<<<<<<<<
10642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             cval = ct_compare(key, <object> self.node.key)
10652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if cval == 0:
10662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  while (1) {
10682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = (__pyx_v_self->node != NULL);
10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!__pyx_t_2) break;
10702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":51
10722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.root
10732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
10742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             cval = ct_compare(key, <object> self.node.key)             # <<<<<<<<<<<<<<
10752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if cval == 0:
10762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return True
10772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = ((PyObject *)__pyx_v_self->node->key);
10792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_INCREF(__pyx_t_3);
10802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_v_cval = ct_compare(__pyx_v_key, __pyx_t_3);
10812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":52
10842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
10852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             cval = ct_compare(key, <object> self.node.key)
10862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if cval == 0:             # <<<<<<<<<<<<<<
10872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return True
10882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif cval < 0:
10892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
10902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = (__pyx_v_cval == 0);
10912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__pyx_t_2) {
10922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":53
10942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             cval = ct_compare(key, <object> self.node.key)
10952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if cval == 0:
10962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return True             # <<<<<<<<<<<<<<
10972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif cval < 0:
10982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
10992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_XDECREF(__pyx_r);
11012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_GOTREF(__pyx_t_3);
11032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_r = __pyx_t_3;
11042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_3 = 0;
11052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L0;
11062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L5;
11072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
11082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":54
11102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if cval == 0:
11112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return True
11122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif cval < 0:             # <<<<<<<<<<<<<<
11132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
11142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
11152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = (__pyx_v_cval < 0);
11172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__pyx_t_2) {
11182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":55
11202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return True
11212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif cval < 0:
11222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]             # <<<<<<<<<<<<<<
11232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
11242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]
11252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_v_self->node = (__pyx_v_self->node->link[0]);
11272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L5;
11282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
11292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /*else*/ {
11302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":57
11322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
11332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
11342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]             # <<<<<<<<<<<<<<
11352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return False
11362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
11372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_v_self->node = (__pyx_v_self->node->link[1]);
11392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
11402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_L5:;
11412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
11422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":58
11442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
11452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]
11462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return False             # <<<<<<<<<<<<<<
11472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
11482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef push(self):
11492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
11512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_3);
11532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_3;
11542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = 0;
11552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
11562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
11582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
11592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
11602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_3);
11612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.goto", __pyx_clineno, __pyx_lineno, __pyx_filename);
11622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
11632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
11642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
11652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
11662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
11672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
11682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":60
11702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return False
11712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
11722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef push(self):             # <<<<<<<<<<<<<<
11732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_push(self.stack, self.node)
11742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
11752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
11762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_17push(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
11782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_f_8bintrees_7cwalker_7cWalker_push(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_skip_dispatch) {
11792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
11802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
11812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
11822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
11832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
11842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
11852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
11862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("push", 0);
11872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if called by wrapper */
11882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__pyx_skip_dispatch)) ;
11892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if overriden in Python */
11902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
11912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__push); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_1);
11932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_17push)) {
11942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_XDECREF(__pyx_r);
11952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_GOTREF(__pyx_t_2);
11972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_r = __pyx_t_2;
11982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = 0;
11992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L0;
12012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
12022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
12042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":61
12062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
12072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef push(self):
12082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_push(self.stack, self.node)             # <<<<<<<<<<<<<<
12092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
12102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):
12112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
12122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  stack_push(__pyx_v_self->stack, __pyx_v_self->node);
12132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
12152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
12162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
12172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
12182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
12192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.push", __pyx_clineno, __pyx_lineno, __pyx_filename);
12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = 0;
12212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
12222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
12232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
12242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
12252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
12262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
12282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_17push(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
12292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_17push(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
12302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
12312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
12322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("push (wrapper)", 0);
12332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_16push(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
12342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
12352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
12362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
12372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":60
12392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return False
12402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
12412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef push(self):             # <<<<<<<<<<<<<<
12422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_push(self.stack, self.node)
12432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
12442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
12452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_16push(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
12472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
12482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
12492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
12502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
12512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
12522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
12532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("push", 0);
12542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
12552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = ((struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *)__pyx_v_self->__pyx_vtab)->push(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
12572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
12582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
12592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
12602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
12622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
12632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
12642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
12652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.push", __pyx_clineno, __pyx_lineno, __pyx_filename);
12662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
12672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
12682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
12692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
12702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
12712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
12722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":63
12742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_push(self.stack, self.node)
12752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
12762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):             # <<<<<<<<<<<<<<
12772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:
12782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')
12792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
12802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
12812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_19pop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
12822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_f_8bintrees_7cwalker_7cWalker_pop(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_skip_dispatch) {
12832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
12842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
12852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
12862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
12872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_3;
12882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
12892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
12902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
12912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("pop", 0);
12922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if called by wrapper */
12932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__pyx_skip_dispatch)) ;
12942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* Check if overriden in Python */
12952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
12962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_1);
12982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_19pop)) {
12992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_XDECREF(__pyx_r);
13002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_GOTREF(__pyx_t_2);
13022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_r = __pyx_t_2;
13032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_t_2 = 0;
13042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L0;
13062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
13072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
13092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":64
13112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
13122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):
13132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:             # <<<<<<<<<<<<<<
13142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')
13152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = stack_pop(self.stack)
13162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
13172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = (stack_is_empty(__pyx_v_self->stack) != 0);
13182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_t_3) {
13192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":65
13212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):
13222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:
13232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')             # <<<<<<<<<<<<<<
13242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = stack_pop(self.stack)
13252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
13262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
13272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_1);
13292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
13302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    goto __pyx_L3;
13332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
13342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3:;
13352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":66
13372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:
13382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')
13392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = stack_pop(self.stack)             # <<<<<<<<<<<<<<
13402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
13412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def stack_is_empty(self):
13422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
13432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = stack_pop(__pyx_v_self->stack);
13442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
13472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
13482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
13492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
13502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
13512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = 0;
13522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
13532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
13542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
13552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
13562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
13572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
13592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_19pop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
13602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_19pop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
13612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
13622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
13632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("pop (wrapper)", 0);
13642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_18pop(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
13652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
13662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
13672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
13682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":63
13702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         stack_push(self.stack, self.node)
13712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
13722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):             # <<<<<<<<<<<<<<
13732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:
13742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')
13752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
13762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_18pop(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
13782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
13792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
13802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
13812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
13822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
13832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
13842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("pop", 0);
13852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
13862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = ((struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker *)__pyx_v_self->__pyx_vtab)->pop(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
13882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
13892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
13902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
13912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
13942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
13952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
13962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
13972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
13982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
13992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
14002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
14012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
14022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
14032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
14052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_21stack_is_empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
14062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_21stack_is_empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
14072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
14082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
14092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("stack_is_empty (wrapper)", 0);
14102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_20stack_is_empty(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
14112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
14122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
14132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
14142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":68
14162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = stack_pop(self.stack)
14172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
14182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def stack_is_empty(self):             # <<<<<<<<<<<<<<
14192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <bint> stack_is_empty(self.stack)
14202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
14212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
14222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_20stack_is_empty(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
14242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
14252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
14262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
14272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
14282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
14292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
14302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("stack_is_empty", 0);
14312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":69
14332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
14342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def stack_is_empty(self):
14352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <bint> stack_is_empty(self.stack)             # <<<<<<<<<<<<<<
14362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
14372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto_leaf(self):
14382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
14392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
14402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)stack_is_empty(__pyx_v_self->stack))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
14422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
14432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
14442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
14452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
14472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
14482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
14492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
14502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.stack_is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename);
14512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
14522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
14532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
14542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
14552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
14562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
14572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
14592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_23goto_leaf(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
14602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_doc_8bintrees_7cwalker_7cWalker_22goto_leaf[] = " get a leaf node ";
14612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_23goto_leaf(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
14622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
14632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
14642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("goto_leaf (wrapper)", 0);
14652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_22goto_leaf(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
14662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
14672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
14682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
14692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":71
14712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <bint> stack_is_empty(self.stack)
14722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
14732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto_leaf(self):             # <<<<<<<<<<<<<<
14742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ get a leaf node """
14752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
14762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
14772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_22goto_leaf(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
14792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
14802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
14812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_1;
14822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("goto_leaf", 0);
14832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":73
14852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def goto_leaf(self):
14862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ get a leaf node """
14872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:             # <<<<<<<<<<<<<<
14882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if self.node.link[0] != NULL:
14892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
14902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
14912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  while (1) {
14922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = (__pyx_v_self->node != NULL);
14932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!__pyx_t_1) break;
14942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":74
14962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ get a leaf node """
14972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
14982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if self.node.link[0] != NULL:             # <<<<<<<<<<<<<<
14992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
15002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif self.node.link[1] != NULL:
15012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = ((__pyx_v_self->node->link[0]) != NULL);
15032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__pyx_t_1) {
15042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":75
15062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         while self.node != NULL:
15072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if self.node.link[0] != NULL:
15082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]             # <<<<<<<<<<<<<<
15092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif self.node.link[1] != NULL:
15102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]
15112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_v_self->node = (__pyx_v_self->node->link[0]);
15132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L5;
15142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
15152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":76
15172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             if self.node.link[0] != NULL:
15182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
15192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif self.node.link[1] != NULL:             # <<<<<<<<<<<<<<
15202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]
15212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
15222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_1 = ((__pyx_v_self->node->link[1]) != NULL);
15242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__pyx_t_1) {
15252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":77
15272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[0]
15282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             elif self.node.link[1] != NULL:
15292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]             # <<<<<<<<<<<<<<
15302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
15312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return
15322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_v_self->node = (__pyx_v_self->node->link[1]);
15342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L5;
15352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
15362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /*else*/ {
15372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      /* "bintrees\cwalker.pyx":79
15392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 self.node = self.node.link[1]
15402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             else:
15412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return             # <<<<<<<<<<<<<<
15422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
15432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_child(self, int direction):
15442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_XDECREF(__pyx_r);
15462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      goto __pyx_L0;
15482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
15492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_L5:;
15502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
15512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
15542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
15552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
15562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
15572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
15582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
15602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_25has_child(PyObject *__pyx_v_self, PyObject *__pyx_arg_direction); /*proto*/
15612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_25has_child(PyObject *__pyx_v_self, PyObject *__pyx_arg_direction) {
15622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_v_direction;
15632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
15642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
15652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_child (wrapper)", 0);
15662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert(__pyx_arg_direction); {
15672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_v_direction = __Pyx_PyInt_AsInt(__pyx_arg_direction); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
15692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L4_argument_unpacking_done;
15702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3_error:;
15712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.has_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
15722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
15732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return NULL;
15742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L4_argument_unpacking_done:;
15752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_24has_child(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((int)__pyx_v_direction));
15762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
15772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
15782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
15792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":81
15812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *                 return
15822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
15832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_child(self, int direction):             # <<<<<<<<<<<<<<
15842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[direction] != NULL
15852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
15862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
15872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_24has_child(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_v_direction) {
15892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
15902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
15912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
15922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
15932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
15942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
15952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_child", 0);
15962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":82
15982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
15992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_child(self, int direction):
16002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[direction] != NULL             # <<<<<<<<<<<<<<
16012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def down(self, int direction):
16032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
16042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
16052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_PyBool_FromLong(((__pyx_v_self->node->link[__pyx_v_direction]) != NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
16072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
16082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
16092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
16102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
16122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
16132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
16142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
16152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.has_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
16162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
16172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
16182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
16192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
16202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
16212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
16222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
16242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_27down(PyObject *__pyx_v_self, PyObject *__pyx_arg_direction); /*proto*/
16252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_27down(PyObject *__pyx_v_self, PyObject *__pyx_arg_direction) {
16262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_v_direction;
16272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
16282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
16292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("down (wrapper)", 0);
16302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert(__pyx_arg_direction); {
16312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_v_direction = __Pyx_PyInt_AsInt(__pyx_arg_direction); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
16332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L4_argument_unpacking_done;
16342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3_error:;
16352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.down", __pyx_clineno, __pyx_lineno, __pyx_filename);
16362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
16372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return NULL;
16382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L4_argument_unpacking_done:;
16392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_26down(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((int)__pyx_v_direction));
16402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
16412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
16422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
16432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":84
16452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[direction] != NULL
16462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def down(self, int direction):             # <<<<<<<<<<<<<<
16482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[direction]
16492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
16512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_26down(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, int __pyx_v_direction) {
16532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
16542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
16552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("down", 0);
16562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":85
16582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def down(self, int direction):
16602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[direction]             # <<<<<<<<<<<<<<
16612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_left(self):
16632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
16642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = (__pyx_v_self->node->link[__pyx_v_direction]);
16652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
16672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
16682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
16692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
16702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
16712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
16732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_29go_left(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
16742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_29go_left(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
16752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
16762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
16772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("go_left (wrapper)", 0);
16782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_28go_left(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
16792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
16802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
16812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
16822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":87
16842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[direction]
16852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_left(self):             # <<<<<<<<<<<<<<
16872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[0]
16882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
16902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_28go_left(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
16922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
16932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
16942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("go_left", 0);
16952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":88
16972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
16982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_left(self):
16992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[0]             # <<<<<<<<<<<<<<
17002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_right(self):
17022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
17032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = (__pyx_v_self->node->link[0]);
17042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
17072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
17082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
17092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
17102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
17122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_31go_right(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
17132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_31go_right(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
17142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
17152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
17162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("go_right (wrapper)", 0);
17172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_30go_right(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
17182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
17192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
17202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
17212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":90
17232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[0]
17242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_right(self):             # <<<<<<<<<<<<<<
17262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[1]
17272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
17292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_30go_right(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
17312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
17322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
17332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("go_right", 0);
17342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":91
17362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def go_right(self):
17382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[1]             # <<<<<<<<<<<<<<
17392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_left(self):
17412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
17422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = (__pyx_v_self->node->link[1]);
17432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
17462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
17472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
17482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
17492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
17512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_33has_left(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
17522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_33has_left(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
17532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
17542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
17552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_left (wrapper)", 0);
17562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_32has_left(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
17572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
17582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
17592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
17602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":93
17622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = self.node.link[1]
17632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_left(self):             # <<<<<<<<<<<<<<
17652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[0] != NULL
17662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
17682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_32has_left(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
17702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
17712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
17722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
17732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
17742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
17752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
17762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_left", 0);
17772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":94
17792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_left(self):
17812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[0] != NULL             # <<<<<<<<<<<<<<
17822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
17832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_right(self):
17842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
17852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
17862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_PyBool_FromLong(((__pyx_v_self->node->link[0]) != NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
17882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
17892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
17902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
17912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
17942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
17952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
17962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.has_left", __pyx_clineno, __pyx_lineno, __pyx_filename);
17972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
17982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
17992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
18002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
18012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
18022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
18032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
18052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_35has_right(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
18062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_35has_right(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
18072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
18082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
18092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_right (wrapper)", 0);
18102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_34has_right(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self));
18112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
18122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
18132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
18142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":96
18162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[0] != NULL
18172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
18182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_right(self):             # <<<<<<<<<<<<<<
18192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[1] != NULL
18202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
18212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
18222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_34has_right(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self) {
18242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
18252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
18262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
18272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
18282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
18292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
18302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("has_right", 0);
18312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":97
18332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
18342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def has_right(self):
18352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[1] != NULL             # <<<<<<<<<<<<<<
18362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
18372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def succ_item(self, key):
18382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
18392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
18402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_PyBool_FromLong(((__pyx_v_self->node->link[1]) != NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
18422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_t_1;
18432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
18442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
18452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
18472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
18482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
18492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
18502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.has_right", __pyx_clineno, __pyx_lineno, __pyx_filename);
18512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
18522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
18532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
18542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
18552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
18562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
18572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
18592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_37succ_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
18602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_doc_8bintrees_7cwalker_7cWalker_36succ_item[] = " Get successor (k,v) pair of key, raises KeyError if key is max key\n        or key does not exist.\n        ";
18612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_37succ_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
18622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
18632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
18642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("succ_item (wrapper)", 0);
18652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_36succ_item(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((PyObject *)__pyx_v_key));
18662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
18672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
18682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
18692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":99
18712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node.link[1] != NULL
18722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
18732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def succ_item(self, key):             # <<<<<<<<<<<<<<
18742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ Get successor (k,v) pair of key, raises KeyError if key is max key
18752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         or key does not exist.
18762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
18772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_36succ_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key) {
18792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
18802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
18812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_1;
18822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
18832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_3 = NULL;
18842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
18852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
18862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
18872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("succ_item", 0);
18882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":103
18902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         or key does not exist.
18912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
18922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_succ_node(self.root, key)             # <<<<<<<<<<<<<<
18932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is biggest in tree
18942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
18952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
18962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = ct_succ_node(__pyx_v_self->root, __pyx_v_key);
18972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":104
18992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
19002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_succ_node(self.root, key)
19012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is biggest in tree             # <<<<<<<<<<<<<<
19022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
19032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
19042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
19052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = (__pyx_v_self->node == NULL);
19062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_t_1) {
19072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":105
19092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_succ_node(self.root, key)
19102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is biggest in tree
19112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))             # <<<<<<<<<<<<<<
19122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
19132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
19142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
19152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
19172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_INCREF(__pyx_v_key);
19182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
19192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_v_key);
19202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
19222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
19232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
19252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
19262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_t_3);
19272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = 0;
19282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
19302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
19312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
19322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    goto __pyx_L3;
19352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
19362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3:;
19372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":106
19392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is biggest in tree
19402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
19412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)             # <<<<<<<<<<<<<<
19422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
19432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def prev_item(self, key):
19442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
19452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
19462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_3);
19482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
19492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->node->key));
19502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->key));
19512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
19522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->node->value));
19532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->value));
19542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_t_3);
19552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = 0;
19562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
19572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
19592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
19602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
19612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
19622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_3);
19632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.succ_item", __pyx_clineno, __pyx_lineno, __pyx_filename);
19642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
19652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
19662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
19672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
19682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
19692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
19702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
19722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_39prev_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
19732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_doc_8bintrees_7cwalker_7cWalker_38prev_item[] = " Get predecessor (k,v) pair of key, raises KeyError if key is min key\n        or key does not exist.\n        ";
19742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_39prev_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
19752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
19762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
19772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("prev_item (wrapper)", 0);
19782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_38prev_item(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((PyObject *)__pyx_v_key));
19792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
19802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
19812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
19822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":108
19842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
19852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
19862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def prev_item(self, key):             # <<<<<<<<<<<<<<
19872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ Get predecessor (k,v) pair of key, raises KeyError if key is min key
19882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         or key does not exist.
19892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
19902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_38prev_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key) {
19922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
19932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
19942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_1;
19952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
19962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_3 = NULL;
19972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
19982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
19992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
20002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("prev_item", 0);
20012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":112
20032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         or key does not exist.
20042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
20052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_prev_node(self.root, key)             # <<<<<<<<<<<<<<
20062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is smallest in tree
20072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
20082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
20092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = ct_prev_node(__pyx_v_self->root, __pyx_v_key);
20102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":113
20122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
20132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_prev_node(self.root, key)
20142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is smallest in tree             # <<<<<<<<<<<<<<
20152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
20162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
20172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
20182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = (__pyx_v_self->node == NULL);
20192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_t_1) {
20202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":114
20222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_prev_node(self.root, key)
20232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is smallest in tree
20242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))             # <<<<<<<<<<<<<<
20252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
20262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
20272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
20282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
20302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_INCREF(__pyx_v_key);
20312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
20322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_v_key);
20332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
20352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
20362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
20382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
20392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_t_3);
20402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = 0;
20412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
20432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
20442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
20452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    goto __pyx_L3;
20482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
20492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3:;
20502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":115
20522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL: # given key is smallest in tree
20532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
20542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)             # <<<<<<<<<<<<<<
20552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
20562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def floor_item(self, key):
20572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
20582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
20592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_3);
20612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
20622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->node->key));
20632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->key));
20642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
20652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->node->value));
20662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->value));
20672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_t_3);
20682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = 0;
20692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
20702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
20722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
20732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
20742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
20752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_3);
20762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.prev_item", __pyx_clineno, __pyx_lineno, __pyx_filename);
20772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
20782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
20792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
20802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
20812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
20822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
20832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
20852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_41floor_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
20862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_doc_8bintrees_7cwalker_7cWalker_40floor_item[] = " Get the element (k,v) pair associated with the greatest key less\n        than or equal to the given key, raises KeyError if there is no such key.\n        ";
20872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_41floor_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
20882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
20892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
20902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("floor_item (wrapper)", 0);
20912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_40floor_item(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((PyObject *)__pyx_v_key));
20922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
20932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
20942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
20952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
20962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":117
20972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
20982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
20992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def floor_item(self, key):             # <<<<<<<<<<<<<<
21002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ Get the element (k,v) pair associated with the greatest key less
21012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         than or equal to the given key, raises KeyError if there is no such key.
21022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
21032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_40floor_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key) {
21052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
21062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
21072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_1;
21082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
21092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_3 = NULL;
21102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
21112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
21122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
21132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("floor_item", 0);
21142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":121
21162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         than or equal to the given key, raises KeyError if there is no such key.
21172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
21182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_floor_node(self.root, key)             # <<<<<<<<<<<<<<
21192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is smaller than min-key in tree
21202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
21212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
21222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = ct_floor_node(__pyx_v_self->root, __pyx_v_key);
21232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":122
21252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
21262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_floor_node(self.root, key)
21272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is smaller than min-key in tree             # <<<<<<<<<<<<<<
21282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
21292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
21302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
21312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = (__pyx_v_self->node == NULL);
21322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_t_1) {
21332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":123
21352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_floor_node(self.root, key)
21362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is smaller than min-key in tree
21372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))             # <<<<<<<<<<<<<<
21382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
21392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
21402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
21412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
21432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_INCREF(__pyx_v_key);
21442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
21452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_v_key);
21462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
21482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
21492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
21512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
21522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_t_3);
21532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = 0;
21542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
21562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
21572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
21582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    goto __pyx_L3;
21612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
21622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3:;
21632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":124
21652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is smaller than min-key in tree
21662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
21672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)             # <<<<<<<<<<<<<<
21682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
21692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def ceiling_item(self, key):
21702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
21712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
21722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_3);
21742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
21752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->node->key));
21762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->key));
21772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
21782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->node->value));
21792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->value));
21802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_t_3);
21812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = 0;
21822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
21832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
21862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
21872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
21882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_3);
21892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.floor_item", __pyx_clineno, __pyx_lineno, __pyx_filename);
21902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
21912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
21922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
21932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
21942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
21952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
21962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
21972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Python wrapper */
21982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_43ceiling_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
21992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static char __pyx_doc_8bintrees_7cwalker_7cWalker_42ceiling_item[] = " Get the element (k,v) pair associated with the smallest key greater\n        than or equal to the given key, raises KeyError if there is no such key.\n        ";
22002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pw_8bintrees_7cwalker_7cWalker_43ceiling_item(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
22012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = 0;
22022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
22032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("ceiling_item (wrapper)", 0);
22042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = __pyx_pf_8bintrees_7cwalker_7cWalker_42ceiling_item(((struct __pyx_obj_8bintrees_7cwalker_cWalker *)__pyx_v_self), ((PyObject *)__pyx_v_key));
22052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
22062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
22072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
22082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* "bintrees\cwalker.pyx":126
22102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
22112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
22122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def ceiling_item(self, key):             # <<<<<<<<<<<<<<
22132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """ Get the element (k,v) pair associated with the smallest key greater
22142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         than or equal to the given key, raises KeyError if there is no such key.
22152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
22162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_pf_8bintrees_7cwalker_7cWalker_42ceiling_item(struct __pyx_obj_8bintrees_7cwalker_cWalker *__pyx_v_self, PyObject *__pyx_v_key) {
22182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_r = NULL;
22192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
22202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_t_1;
22212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
22222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_3 = NULL;
22232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_lineno = 0;
22242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *__pyx_filename = NULL;
22252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int __pyx_clineno = 0;
22262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("ceiling_item", 0);
22272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":130
22292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         than or equal to the given key, raises KeyError if there is no such key.
22302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
22312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_ceiling_node(self.root, key)             # <<<<<<<<<<<<<<
22322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is greater than max-key in tree
22332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
22342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
22352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_v_self->node = ct_ceiling_node(__pyx_v_self->root, __pyx_v_key);
22362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":131
22382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         """
22392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_ceiling_node(self.root, key)
22402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is greater than max-key in tree             # <<<<<<<<<<<<<<
22412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
22422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
22432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
22442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = (__pyx_v_self->node == NULL);
22452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_t_1) {
22462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /* "bintrees\cwalker.pyx":132
22482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = ct_ceiling_node(self.root, key)
22492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is greater than max-key in tree
22502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))             # <<<<<<<<<<<<<<
22512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)
22522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
22532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
22552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_INCREF(__pyx_v_key);
22562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
22572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_v_key);
22582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
22602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
22612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_2);
22632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
22642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GIVEREF(__pyx_t_3);
22652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = 0;
22662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_GOTREF(__pyx_t_3);
22682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
22692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
22702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    goto __pyx_L3;
22732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
22742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L3:;
22752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":133
22772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if self.node == NULL:  # given key is greater than max-key in tree
22782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise KeyError(str(key))
22792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object> self.node.key, <object> self.node.value)             # <<<<<<<<<<<<<<
22802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
22812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_r);
22822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_3);
22842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->key));
22852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->node->key));
22862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->key));
22872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_v_self->node->value));
22882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->node->value));
22892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->node->value));
22902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = ((PyObject *)__pyx_t_3);
22912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_3 = 0;
22922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
22932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
22942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
22952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
22962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
22972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
22982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_3);
22992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_AddTraceback("bintrees.cwalker.cWalker.ceiling_item", __pyx_clineno, __pyx_lineno, __pyx_filename);
23002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_r = NULL;
23012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
23022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XGIVEREF(__pyx_r);
23032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
23042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_r;
23052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
23062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static struct __pyx_vtabstruct_8bintrees_7cwalker_cWalker __pyx_vtable_8bintrees_7cwalker_cWalker;
23072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
23082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__pyx_tp_new_8bintrees_7cwalker_cWalker(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
23092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct __pyx_obj_8bintrees_7cwalker_cWalker *p;
23102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *o = (*t->tp_alloc)(t, 0);
23112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!o) return 0;
23122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  p = ((struct __pyx_obj_8bintrees_7cwalker_cWalker *)o);
23132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  p->__pyx_vtab = __pyx_vtabptr_8bintrees_7cwalker_cWalker;
23142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_pw_8bintrees_7cwalker_7cWalker_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
23152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_DECREF(o); o = 0;
23162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
23172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return o;
23182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
23192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
23202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_tp_dealloc_8bintrees_7cwalker_cWalker(PyObject *o) {
23212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
23222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *etype, *eval, *etb;
23232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Fetch(&etype, &eval, &etb);
23242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ++Py_REFCNT(o);
23252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_pw_8bintrees_7cwalker_7cWalker_3__dealloc__(o);
23262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
23272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    --Py_REFCNT(o);
23282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Restore(etype, eval, etb);
23292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
23302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  (*Py_TYPE(o)->tp_free)(o);
23312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
23322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
23332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyMethodDef __pyx_methods_8bintrees_7cwalker_cWalker[] = {
23342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_5reset, METH_NOARGS, __Pyx_DOCSTR(0)},
23352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("key"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_7key, METH_NOARGS, __Pyx_DOCSTR(0)},
23362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("value"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_9value, METH_NOARGS, __Pyx_DOCSTR(0)},
23372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("item"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_11item, METH_NOARGS, __Pyx_DOCSTR(0)},
23382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("is_valid"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_13is_valid, METH_NOARGS, __Pyx_DOCSTR(0)},
23392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("goto"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_15goto, METH_O, __Pyx_DOCSTR(0)},
23402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("push"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_17push, METH_NOARGS, __Pyx_DOCSTR(0)},
23412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("pop"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_19pop, METH_NOARGS, __Pyx_DOCSTR(0)},
23422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("stack_is_empty"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_21stack_is_empty, METH_NOARGS, __Pyx_DOCSTR(0)},
23432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("goto_leaf"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_23goto_leaf, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8bintrees_7cwalker_7cWalker_22goto_leaf)},
23442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("has_child"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_25has_child, METH_O, __Pyx_DOCSTR(0)},
23452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("down"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_27down, METH_O, __Pyx_DOCSTR(0)},
23462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("go_left"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_29go_left, METH_NOARGS, __Pyx_DOCSTR(0)},
23472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("go_right"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_31go_right, METH_NOARGS, __Pyx_DOCSTR(0)},
23482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("has_left"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_33has_left, METH_NOARGS, __Pyx_DOCSTR(0)},
23492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("has_right"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_35has_right, METH_NOARGS, __Pyx_DOCSTR(0)},
23502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("succ_item"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_37succ_item, METH_O, __Pyx_DOCSTR(__pyx_doc_8bintrees_7cwalker_7cWalker_36succ_item)},
23512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("prev_item"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_39prev_item, METH_O, __Pyx_DOCSTR(__pyx_doc_8bintrees_7cwalker_7cWalker_38prev_item)},
23522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("floor_item"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_41floor_item, METH_O, __Pyx_DOCSTR(__pyx_doc_8bintrees_7cwalker_7cWalker_40floor_item)},
23532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {__Pyx_NAMESTR("ceiling_item"), (PyCFunction)__pyx_pw_8bintrees_7cwalker_7cWalker_43ceiling_item, METH_O, __Pyx_DOCSTR(__pyx_doc_8bintrees_7cwalker_7cWalker_42ceiling_item)},
23542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {0, 0, 0, 0}
23552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
23562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
23572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyNumberMethods __pyx_tp_as_number_cWalker = {
23582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_add*/
23592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_subtract*/
23602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_multiply*/
23612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_divide*/
23632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_remainder*/
23652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_divmod*/
23662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_power*/
23672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_negative*/
23682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_positive*/
23692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_absolute*/
23702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_nonzero*/
23712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_invert*/
23722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_lshift*/
23732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_rshift*/
23742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_and*/
23752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_xor*/
23762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_or*/
23772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_coerce*/
23792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_int*/
23812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_long*/
23832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
23842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*reserved*/
23852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_float*/
23872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_oct*/
23892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_hex*/
23922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_add*/
23942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_subtract*/
23952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_multiply*/
23962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
23972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_divide*/
23982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
23992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_remainder*/
24002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_power*/
24012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_lshift*/
24022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_rshift*/
24032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_and*/
24042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_xor*/
24052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_or*/
24062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_floor_divide*/
24072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_true_divide*/
24082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_floor_divide*/
24092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_inplace_true_divide*/
24102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_VERSION_HEX >= 0x02050000
24112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*nb_index*/
24122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
24142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
24152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PySequenceMethods __pyx_tp_as_sequence_cWalker = {
24162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_length*/
24172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_concat*/
24182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_repeat*/
24192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_item*/
24202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_slice*/
24212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_ass_item*/
24222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_ass_slice*/
24232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_contains*/
24242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_inplace_concat*/
24252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*sq_inplace_repeat*/
24262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
24272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
24282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyMappingMethods __pyx_tp_as_mapping_cWalker = {
24292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*mp_length*/
24302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*mp_subscript*/
24312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*mp_ass_subscript*/
24322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
24332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
24342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyBufferProcs __pyx_tp_as_buffer_cWalker = {
24352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
24362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_getreadbuffer*/
24372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
24392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_getwritebuffer*/
24402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
24422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_getsegcount*/
24432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
24452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_getcharbuffer*/
24462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_VERSION_HEX >= 0x02060000
24482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_getbuffer*/
24492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_VERSION_HEX >= 0x02060000
24512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*bf_releasebuffer*/
24522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
24542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
24552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyTypeObject __pyx_type_8bintrees_7cwalker_cWalker = {
24562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyVarObject_HEAD_INIT(0, 0)
24572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_NAMESTR("bintrees.cwalker.cWalker"), /*tp_name*/
24582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  sizeof(struct __pyx_obj_8bintrees_7cwalker_cWalker), /*tp_basicsize*/
24592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_itemsize*/
24602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_tp_dealloc_8bintrees_7cwalker_cWalker, /*tp_dealloc*/
24612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_print*/
24622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_getattr*/
24632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_setattr*/
24642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
24652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_compare*/
24662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
24672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*reserved*/
24682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
24692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_repr*/
24702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  &__pyx_tp_as_number_cWalker, /*tp_as_number*/
24712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  &__pyx_tp_as_sequence_cWalker, /*tp_as_sequence*/
24722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  &__pyx_tp_as_mapping_cWalker, /*tp_as_mapping*/
24732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_hash*/
24742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_call*/
24752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_str*/
24762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_getattro*/
24772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_setattro*/
24782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  &__pyx_tp_as_buffer_cWalker, /*tp_as_buffer*/
24792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
24802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_doc*/
24812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_traverse*/
24822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_clear*/
24832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_richcompare*/
24842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_weaklistoffset*/
24852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_iter*/
24862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_iternext*/
24872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_methods_8bintrees_7cwalker_cWalker, /*tp_methods*/
24882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_members*/
24892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_getset*/
24902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_base*/
24912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_dict*/
24922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_descr_get*/
24932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_descr_set*/
24942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_dictoffset*/
24952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_init*/
24962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_alloc*/
24972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_tp_new_8bintrees_7cwalker_cWalker, /*tp_new*/
24982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_free*/
24992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_is_gc*/
25002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_bases*/
25012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_mro*/
25022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_cache*/
25032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_subclasses*/
25042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_weaklist*/
25052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_del*/
25062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_VERSION_HEX >= 0x02060000
25072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  0, /*tp_version_tag*/
25082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
25092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
25102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyMethodDef __pyx_methods[] = {
25122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {0, 0, 0, 0}
25132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
25142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3
25162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static struct PyModuleDef __pyx_moduledef = {
25172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyModuleDef_HEAD_INIT,
25182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_NAMESTR("cwalker"),
25192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    0, /* m_doc */
25202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    -1, /* m_size */
25212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_methods /* m_methods */,
25222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NULL, /* m_reload */
25232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NULL, /* m_traverse */
25242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NULL, /* m_clear */
25252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NULL /* m_free */
25262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
25272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
25282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static __Pyx_StringTabEntry __pyx_string_tab[] = {
25302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
25312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__IndexError, __pyx_k__IndexError, sizeof(__pyx_k__IndexError), 0, 0, 1, 1},
25322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
25332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
25342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
25352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__is_valid, __pyx_k__is_valid, sizeof(__pyx_k__is_valid), 0, 0, 1, 1},
25362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__item, __pyx_k__item, sizeof(__pyx_k__item), 0, 0, 1, 1},
25372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__key, __pyx_k__key, sizeof(__pyx_k__key), 0, 0, 1, 1},
25382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__pop, __pyx_k__pop, sizeof(__pyx_k__pop), 0, 0, 1, 1},
25392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__property, __pyx_k__property, sizeof(__pyx_k__property), 0, 0, 1, 1},
25402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__push, __pyx_k__push, sizeof(__pyx_k__push), 0, 0, 1, 1},
25412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__reset, __pyx_k__reset, sizeof(__pyx_k__reset), 0, 0, 1, 1},
25422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
25432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {0, 0, 0, 0, 0, 0, 0}
25442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
25452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_InitCachedBuiltins(void) {
25462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_builtin_property = __Pyx_GetName(__pyx_b, __pyx_n_s__property); if (!__pyx_builtin_property) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_builtin_IndexError = __Pyx_GetName(__pyx_b, __pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
25502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
25512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return -1;
25522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
25532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_InitCachedConstants(void) {
25552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
25562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
25572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":65
25592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     cpdef pop(self):
25602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         if stack_is_empty(self.stack) != 0:
25612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *             raise IndexError('pop(): stack is empty')             # <<<<<<<<<<<<<<
25622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         self.node = stack_pop(self.stack)
25632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
25642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
25652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_k_tuple_2);
25672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_INCREF(((PyObject *)__pyx_kp_s_1));
25682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_kp_s_1));
25692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1));
25702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
25712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
25722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
25732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
25742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
25752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return -1;
25762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
25772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_InitGlobals(void) {
25792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
25802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0;
25812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
25822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return -1;
25832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
25842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION < 3
25862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PyMODINIT_FUNC initcwalker(void); /*proto*/
25872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PyMODINIT_FUNC initcwalker(void)
25882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
25892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PyMODINIT_FUNC PyInit_cwalker(void); /*proto*/
25902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PyMODINIT_FUNC PyInit_cwalker(void)
25912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
25922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
25932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_1 = NULL;
25942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *__pyx_t_2 = NULL;
25952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyDeclarations
25962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if CYTHON_REFNANNY
25972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
25982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!__Pyx_RefNanny) {
25992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      PyErr_Clear();
26002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
26012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      if (!__Pyx_RefNanny)
26022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          Py_FatalError("failed to import 'refnanny' module");
26032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
26042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_cwalker(void)", 0);
26062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifdef __Pyx_CyFunction_USED
26102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifdef __Pyx_FusedFunction_USED
26132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifdef __Pyx_Generator_USED
26162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Library function declarations ---*/
26192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Threads initialization code ---*/
26202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
26212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #ifdef WITH_THREAD /* Python build with threading support? */
26222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyEval_InitThreads();
26232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Module creation code ---*/
26262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
26272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("cwalker"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
26282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
26292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_m = PyModule_Create(&__pyx_moduledef);
26302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION >= 3
26332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
26342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyDict_GetItemString(modules, "bintrees.cwalker")) {
26362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      if (unlikely(PyDict_SetItemString(modules, "bintrees.cwalker", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
26382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
26392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if CYTHON_COMPILING_IN_PYPY
26422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Py_INCREF(__pyx_b);
26432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
26442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
26452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Initialize various global constants etc. ---*/
26462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_module_is_main_bintrees__cwalker) {
26482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
26492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
26502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Builtin init code ---*/
26512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Constants init code ---*/
26532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Global init code ---*/
26552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Variable export code ---*/
26562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Function export code ---*/
26572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Type init code ---*/
26582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_vtabptr_8bintrees_7cwalker_cWalker = &__pyx_vtable_8bintrees_7cwalker_cWalker;
26592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_vtable_8bintrees_7cwalker_cWalker.set_tree = (void (*)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, node_t *))__pyx_f_8bintrees_7cwalker_7cWalker_set_tree;
26602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_vtable_8bintrees_7cwalker_cWalker.reset = (PyObject *(*)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch))__pyx_f_8bintrees_7cwalker_7cWalker_reset;
26612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_vtable_8bintrees_7cwalker_cWalker.push = (PyObject *(*)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch))__pyx_f_8bintrees_7cwalker_7cWalker_push;
26622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_vtable_8bintrees_7cwalker_cWalker.pop = (PyObject *(*)(struct __pyx_obj_8bintrees_7cwalker_cWalker *, int __pyx_skip_dispatch))__pyx_f_8bintrees_7cwalker_7cWalker_pop;
26632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyType_Ready(&__pyx_type_8bintrees_7cwalker_cWalker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__Pyx_SetVtable(__pyx_type_8bintrees_7cwalker_cWalker.tp_dict, __pyx_vtabptr_8bintrees_7cwalker_cWalker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__Pyx_SetAttrString(__pyx_m, "cWalker", (PyObject *)&__pyx_type_8bintrees_7cwalker_cWalker) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_ptype_8bintrees_7cwalker_cWalker = &__pyx_type_8bintrees_7cwalker_cWalker;
26672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Type import code ---*/
26682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Variable import code ---*/
26692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Function import code ---*/
26702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /*--- Execution code ---*/
26712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
26722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":32
26732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
26742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
26752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def key(self):             # <<<<<<<<<<<<<<
26762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.key
26772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
26782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
26792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_GetName((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker, __pyx_n_s__key); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
26812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_2);
26832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
26842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(__pyx_t_1);
26852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
26862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
26882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
26892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyDict_SetItem((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker->tp_dict, __pyx_n_s__key, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyType_Modified(__pyx_ptype_8bintrees_7cwalker_cWalker);
26922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
26932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":36
26942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
26952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
26962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def value(self):             # <<<<<<<<<<<<<<
26972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return <object> self.node.value
26982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
26992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
27002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_GetName((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker, __pyx_n_s__value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_2);
27042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
27052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(__pyx_t_1);
27062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
27072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
27102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyDict_SetItem((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker->tp_dict, __pyx_n_s__value, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyType_Modified(__pyx_ptype_8bintrees_7cwalker_cWalker);
27132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
27142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":40
27152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
27162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
27172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def item(self):             # <<<<<<<<<<<<<<
27182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return (<object>self.node.key, <object>self.node.value)
27192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
27202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
27212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_GetName((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker, __pyx_n_s__item); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_2);
27252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
27262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(__pyx_t_1);
27272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
27282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
27312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyDict_SetItem((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker->tp_dict, __pyx_n_s__item, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyType_Modified(__pyx_ptype_8bintrees_7cwalker_cWalker);
27342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
27352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":44
27362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
27372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     @property
27382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *     def is_valid(self):             # <<<<<<<<<<<<<<
27392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *         return self.node != NULL
27402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
27412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
27422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = __Pyx_GetName((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker, __pyx_n_s__is_valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_2);
27462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
27472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GIVEREF(__pyx_t_1);
27482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = 0;
27492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(__pyx_t_1);
27512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
27522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyDict_SetItem((PyObject *)__pyx_ptype_8bintrees_7cwalker_cWalker->tp_dict, __pyx_n_s__is_valid, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyType_Modified(__pyx_ptype_8bintrees_7cwalker_cWalker);
27552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
27562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  /* "bintrees\cwalker.pyx":1
27572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * #!/usr/bin/env python             # <<<<<<<<<<<<<<
27582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * #coding:utf-8
27592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * # Author:  mozman
27602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */
27612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
27632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
27642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
27652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  goto __pyx_L0;
27662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L1_error:;
27672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_1);
27682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_XDECREF(__pyx_t_2);
27692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (__pyx_m) {
27702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_AddTraceback("init bintrees.cwalker", __pyx_clineno, __pyx_lineno, __pyx_filename);
27712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_DECREF(__pyx_m); __pyx_m = 0;
27722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  } else if (!PyErr_Occurred()) {
27732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_SetString(PyExc_ImportError, "init bintrees.cwalker");
27742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
27752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __pyx_L0:;
27762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  __Pyx_RefNannyFinishContext();
27772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #if PY_MAJOR_VERSION < 3
27782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return;
27792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #else
27802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return __pyx_m;
27812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  #endif
27822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
27832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
27842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Runtime support code */
27852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_REFNANNY
27862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
27872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *m = NULL, *p = NULL;
27882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void *r = NULL;
27892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    m = PyImport_ImportModule((char *)modname);
27902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!m) goto end;
27912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
27922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!p) goto end;
27932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    r = PyLong_AsVoidPtr(p);
27942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)end:
27952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(p);
27962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(m);
27972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (__Pyx_RefNannyAPIStruct *)r;
27982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
27992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* CYTHON_REFNANNY */
28002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
28012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
28022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *result;
28032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    result = PyObject_GetAttr(dict, name);
28042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!result) {
28052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (dict != __pyx_b) {
28062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_Clear();
28072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            result = PyObject_GetAttr(__pyx_b, name);
28082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
28092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!result) {
28102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetObject(PyExc_NameError, name);
28112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
28122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
28132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return result;
28142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
28152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
28162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_RaiseArgtupleInvalid(
28172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char* func_name,
28182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int exact,
28192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t num_min,
28202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t num_max,
28212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t num_found)
28222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
28232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t num_expected;
28242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char *more_or_less;
28252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (num_found < num_min) {
28262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        num_expected = num_min;
28272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        more_or_less = "at least";
28282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
28292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        num_expected = num_max;
28302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        more_or_less = "at most";
28312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
28322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (exact) {
28332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        more_or_less = "exactly";
28342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
28352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Format(PyExc_TypeError,
28362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
28372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                 func_name, more_or_less, num_expected,
28382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                 (num_expected == 1) ? "" : "s", num_found);
28392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
28402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
28412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
28422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *kwdict,
28432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char* function_name,
28442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int kw_allowed)
28452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
28462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject* key = 0;
28472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_ssize_t pos = 0;
28482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CPYTHON_COMPILING_IN_PYPY
28492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
28502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto invalid_keyword;
28512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 1;
28522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
28532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    while (PyDict_Next(kwdict, &pos, &key, 0)) {
28542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_MAJOR_VERSION < 3
28552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
28562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
28572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(!PyUnicode_Check(key)))
28582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                goto invalid_keyword_type;
28592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
28602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if ((!kw_allowed) && unlikely(key))
28612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto invalid_keyword;
28622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 1;
28632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)invalid_keyword_type:
28642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Format(PyExc_TypeError,
28652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "%s() keywords must be strings", function_name);
28662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0;
28672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
28682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)invalid_keyword:
28692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Format(PyExc_TypeError,
28702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #if PY_MAJOR_VERSION < 3
28712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "%s() got an unexpected keyword argument '%s'",
28722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        function_name, PyString_AsString(key));
28732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #else
28742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "%s() got an unexpected keyword argument '%U'",
28752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        function_name, key);
28762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #endif
28772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0;
28782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
28792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
28802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
28812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_COMPILING_IN_CPYTHON
28822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *tmp_type, *tmp_value, *tmp_tb;
28832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyThreadState *tstate = PyThreadState_GET();
28842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tmp_type = tstate->curexc_type;
28852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tmp_value = tstate->curexc_value;
28862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tmp_tb = tstate->curexc_traceback;
28872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_type = type;
28882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_value = value;
28892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_traceback = tb;
28902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(tmp_type);
28912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(tmp_value);
28922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(tmp_tb);
28932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
28942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Restore(type, value, tb);
28952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
28962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
28972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
28982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_COMPILING_IN_CPYTHON
28992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyThreadState *tstate = PyThreadState_GET();
29002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *type = tstate->curexc_type;
29012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *value = tstate->curexc_value;
29022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *tb = tstate->curexc_traceback;
29032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_type = 0;
29042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_value = 0;
29052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    tstate->curexc_traceback = 0;
29062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
29072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_Fetch(type, value, tb);
29082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
29092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
29102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
29112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_MAJOR_VERSION < 3
29122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
29132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        CYTHON_UNUSED PyObject *cause) {
29142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XINCREF(type);
29152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!value || value == Py_None)
29162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        value = NULL;
29172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    else
29182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_INCREF(value);
29192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!tb || tb == Py_None)
29202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        tb = NULL;
29212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    else {
29222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_INCREF(tb);
29232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!PyTraceBack_Check(tb)) {
29242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_TypeError,
29252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                "raise: arg 3 must be a traceback or None");
29262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto raise_error;
29272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
29282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
29292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #if PY_VERSION_HEX < 0x02050000
29302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (PyClass_Check(type)) {
29312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #else
29322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (PyType_Check(type)) {
29332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #endif
29342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if CYTHON_COMPILING_IN_PYPY
29352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!value) {
29362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(Py_None);
29372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            value = Py_None;
29382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
29392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
29402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyErr_NormalizeException(&type, &value, &tb);
29412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
29422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (value) {
29432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_TypeError,
29442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                "instance exception may not have a separate value");
29452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto raise_error;
29462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
29472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        value = type;
29482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_VERSION_HEX < 0x02050000
29492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (PyInstance_Check(type)) {
29502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
29512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                Py_INCREF(type);
29522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
29532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            else {
29542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                type = 0;
29552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_TypeError,
29562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "raise: exception must be an old-style class or instance");
29572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                goto raise_error;
29582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
29592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #else
29602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            type = (PyObject*) Py_TYPE(type);
29612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(type);
29622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
29632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_TypeError,
29642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "raise: exception class must be a subclass of BaseException");
29652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                goto raise_error;
29662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
29672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
29682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
29692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_ErrRestore(type, value, tb);
29702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
29712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)raise_error:
29722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(value);
29732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(type);
29742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(tb);
29752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
29762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
29772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else /* Python 3+ */
29782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
29792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject* owned_instance = NULL;
29802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (tb == Py_None) {
29812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        tb = 0;
29822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else if (tb && !PyTraceBack_Check(tb)) {
29832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyErr_SetString(PyExc_TypeError,
29842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            "raise: arg 3 must be a traceback or None");
29852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto bad;
29862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
29872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (value == Py_None)
29882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        value = 0;
29892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (PyExceptionInstance_Check(type)) {
29902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (value) {
29912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_TypeError,
29922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                "instance exception may not have a separate value");
29932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto bad;
29942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
29952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        value = type;
29962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        type = (PyObject*) Py_TYPE(value);
29972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else if (PyExceptionClass_Check(type)) {
29982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *args;
29992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!value)
30002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            args = PyTuple_New(0);
30012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        else if (PyTuple_Check(value)) {
30022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(value);
30032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            args = value;
30042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        else
30062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            args = PyTuple_Pack(1, value);
30072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!args)
30082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto bad;
30092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        owned_instance = PyEval_CallObject(type, args);
30102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(args);
30112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!owned_instance)
30122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto bad;
30132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        value = owned_instance;
30142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!PyExceptionInstance_Check(value)) {
30152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_Format(PyExc_TypeError,
30162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         "calling %R should have returned an instance of "
30172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         "BaseException, not %R",
30182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         type, Py_TYPE(value));
30192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto bad;
30202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
30222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyErr_SetString(PyExc_TypeError,
30232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            "raise: exception class must be a subclass of BaseException");
30242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto bad;
30252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
30262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (cause && cause != Py_None) {
30272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *fixed_cause;
30282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (PyExceptionClass_Check(cause)) {
30292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            fixed_cause = PyObject_CallObject(cause, NULL);
30302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (fixed_cause == NULL)
30312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                goto bad;
30322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        else if (PyExceptionInstance_Check(cause)) {
30342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            fixed_cause = cause;
30352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(fixed_cause);
30362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        else {
30382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_TypeError,
30392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "exception causes must derive from "
30402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "BaseException");
30412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            goto bad;
30422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyException_SetCause(value, fixed_cause);
30442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
30452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_SetObject(type, value);
30462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (tb) {
30472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyThreadState *tstate = PyThreadState_GET();
30482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject* tmp_tb = tstate->curexc_traceback;
30492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (tb != tmp_tb) {
30502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(tb);
30512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            tstate->curexc_traceback = tb;
30522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_XDECREF(tmp_tb);
30532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
30552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bad:
30562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(owned_instance);
30572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
30582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
30592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
30602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
30612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
30622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
30632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
30642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(unsigned char) < sizeof(long)) {
30652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
30662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(unsigned char)val)) {
30672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
30682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
30692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
30702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to unsigned char" :
30712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to unsigned char");
30722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
30732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned char)-1;
30742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (unsigned char)val;
30762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
30772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
30782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
30792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
30802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
30812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
30822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
30832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(unsigned short) < sizeof(long)) {
30842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
30852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(unsigned short)val)) {
30862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
30872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
30882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
30892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to unsigned short" :
30902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to unsigned short");
30912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
30922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned short)-1;
30932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
30942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (unsigned short)val;
30952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
30962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
30972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
30982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
30992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
31002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
31012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(unsigned int) < sizeof(long)) {
31032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(unsigned int)val)) {
31052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
31062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
31072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
31082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to unsigned int" :
31092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to unsigned int");
31102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
31112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned int)-1;
31122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
31132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (unsigned int)val;
31142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
31152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
31162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
31172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
31192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char neg_one = (char)-1, const_zero = 0;
31202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(char) < sizeof(long)) {
31222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(char)val)) {
31242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
31252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
31262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
31272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to char" :
31282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to char");
31292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
31302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (char)-1;
31312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
31322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (char)val;
31332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
31342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (char)__Pyx_PyInt_AsLong(x);
31352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
31362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
31382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const short neg_one = (short)-1, const_zero = 0;
31392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(short) < sizeof(long)) {
31412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(short)val)) {
31432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
31442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
31452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
31462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to short" :
31472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to short");
31482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
31492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (short)-1;
31502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
31512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (short)val;
31522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
31532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (short)__Pyx_PyInt_AsLong(x);
31542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
31552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
31572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int neg_one = (int)-1, const_zero = 0;
31582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(int) < sizeof(long)) {
31602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(int)val)) {
31622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
31632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
31642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
31652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to int" :
31662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to int");
31672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
31682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (int)-1;
31692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
31702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (int)val;
31712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
31722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (int)__Pyx_PyInt_AsLong(x);
31732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
31742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
31762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const signed char neg_one = (signed char)-1, const_zero = 0;
31772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(signed char) < sizeof(long)) {
31792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(signed char)val)) {
31812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
31822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
31832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
31842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to signed char" :
31852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to signed char");
31862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
31872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed char)-1;
31882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
31892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (signed char)val;
31902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
31912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (signed char)__Pyx_PyInt_AsSignedLong(x);
31922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
31932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
31952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const signed short neg_one = (signed short)-1, const_zero = 0;
31962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
31972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(signed short) < sizeof(long)) {
31982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
31992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(signed short)val)) {
32002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
32012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
32022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
32032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to signed short" :
32042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to signed short");
32052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
32062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed short)-1;
32072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (signed short)val;
32092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
32102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (signed short)__Pyx_PyInt_AsSignedLong(x);
32112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
32122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
32142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const signed int neg_one = (signed int)-1, const_zero = 0;
32152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
32162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(signed int) < sizeof(long)) {
32172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
32182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(signed int)val)) {
32192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
32202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
32212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
32222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to signed int" :
32232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to signed int");
32242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
32252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed int)-1;
32262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (signed int)val;
32282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
32292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (signed int)__Pyx_PyInt_AsSignedLong(x);
32302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
32312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
32332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int neg_one = (int)-1, const_zero = 0;
32342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
32352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (sizeof(int) < sizeof(long)) {
32362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = __Pyx_PyInt_AsLong(x);
32372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(val != (long)(int)val)) {
32382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (!unlikely(val == -1 && PyErr_Occurred())) {
32392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
32402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    (is_unsigned && unlikely(val < 0)) ?
32412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "can't convert negative value to int" :
32422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "value too large to convert to int");
32432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
32442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (int)-1;
32452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (int)val;
32472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
32482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return (int)__Pyx_PyInt_AsLong(x);
32492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
32502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
32522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
32532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
32542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
32552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
32562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
32572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
32582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
32592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to unsigned long");
32602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned long)-1;
32612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (unsigned long)val;
32632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
32642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
32652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
32662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
32672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
32682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
32692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to unsigned long");
32702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (unsigned long)-1;
32712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
32722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned long)PyLong_AsUnsignedLong(x);
32732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
32742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned long)PyLong_AsLong(x);
32752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
32772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        unsigned long val;
32782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
32792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (unsigned long)-1;
32802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsUnsignedLong(tmp);
32812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
32822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
32832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
32842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
32852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
32872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
32882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
32892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
32902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
32912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
32922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
32932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
32942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to unsigned PY_LONG_LONG");
32952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned PY_LONG_LONG)-1;
32962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
32972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (unsigned PY_LONG_LONG)val;
32982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
32992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
33002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
33012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
33022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
33032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
33042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to unsigned PY_LONG_LONG");
33052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (unsigned PY_LONG_LONG)-1;
33062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
33072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
33082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
33092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
33102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
33112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
33122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        unsigned PY_LONG_LONG val;
33132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
33142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (unsigned PY_LONG_LONG)-1;
33152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
33162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
33172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
33182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
33192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
33202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
33212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
33222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const long neg_one = (long)-1, const_zero = 0;
33232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
33242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
33252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
33262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
33272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
33282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
33292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to long");
33302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (long)-1;
33312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
33322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (long)val;
33332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
33342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
33352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
33362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
33372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
33382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
33392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to long");
33402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (long)-1;
33412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
33422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (long)PyLong_AsUnsignedLong(x);
33432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
33442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (long)PyLong_AsLong(x);
33452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
33462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
33472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val;
33482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
33492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (long)-1;
33502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsLong(tmp);
33512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
33522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
33532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
33542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
33552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
33562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
33572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
33582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
33592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
33602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
33612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
33622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
33632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
33642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to PY_LONG_LONG");
33652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (PY_LONG_LONG)-1;
33662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
33672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (PY_LONG_LONG)val;
33682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
33692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
33702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
33712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
33722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
33732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
33742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to PY_LONG_LONG");
33752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (PY_LONG_LONG)-1;
33762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
33772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
33782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
33792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (PY_LONG_LONG)PyLong_AsLongLong(x);
33802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
33812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
33822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PY_LONG_LONG val;
33832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
33842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (PY_LONG_LONG)-1;
33852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsLongLong(tmp);
33862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
33872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
33882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
33892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
33902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
33912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
33922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const signed long neg_one = (signed long)-1, const_zero = 0;
33932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
33942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
33952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
33962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
33972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
33982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
33992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to signed long");
34002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed long)-1;
34012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
34022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (signed long)val;
34032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
34042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
34052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
34062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
34072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
34082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
34092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to signed long");
34102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (signed long)-1;
34112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
34122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed long)PyLong_AsUnsignedLong(x);
34132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
34142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed long)PyLong_AsLong(x);
34152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
34162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
34172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        signed long val;
34182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
34192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (signed long)-1;
34202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsSignedLong(tmp);
34212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
34222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
34232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
34242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
34252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
34262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
34272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
34282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const int is_unsigned = neg_one > const_zero;
34292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
34302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyInt_Check(x))) {
34312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        long val = PyInt_AS_LONG(x);
34322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned && unlikely(val < 0)) {
34332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            PyErr_SetString(PyExc_OverflowError,
34342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            "can't convert negative value to signed PY_LONG_LONG");
34352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed PY_LONG_LONG)-1;
34362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
34372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return (signed PY_LONG_LONG)val;
34382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else
34392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
34402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (likely(PyLong_Check(x))) {
34412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (is_unsigned) {
34422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (unlikely(Py_SIZE(x) < 0)) {
34432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                PyErr_SetString(PyExc_OverflowError,
34442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                "can't convert negative value to signed PY_LONG_LONG");
34452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                return (signed PY_LONG_LONG)-1;
34462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
34472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
34482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
34492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
34502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
34512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
34522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        signed PY_LONG_LONG val;
34532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyObject *tmp = __Pyx_PyNumber_Int(x);
34542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!tmp) return (signed PY_LONG_LONG)-1;
34552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        val = __Pyx_PyInt_AsSignedLongLong(tmp);
34562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
34572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return val;
34582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
34592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
34602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
34612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
34622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
34632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *old_exc, *old_val, *old_tb;
34642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *ctx;
34652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
34662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #if PY_MAJOR_VERSION < 3
34672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ctx = PyString_FromString(name);
34682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #else
34692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ctx = PyUnicode_FromString(name);
34702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #endif
34712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_ErrRestore(old_exc, old_val, old_tb);
34722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!ctx) {
34732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyErr_WriteUnraisable(Py_None);
34742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
34752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyErr_WriteUnraisable(ctx);
34762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(ctx);
34772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
34782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
34792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
34802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_check_binary_version(void) {
34812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    char ctversion[4], rtversion[4];
34822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
34832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
34842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
34852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        char message[200];
34862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyOS_snprintf(message, sizeof(message),
34872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      "compiletime version %s of module '%.100s' "
34882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      "does not match runtime version %s",
34892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      ctversion, __Pyx_MODULE_NAME, rtversion);
34902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_VERSION_HEX < 0x02050000
34912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return PyErr_Warn(NULL, message);
34922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #else
34932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return PyErr_WarnEx(NULL, message, 1);
34942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
34952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
34962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0;
34972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
34982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
34992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
35002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
35012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *ob = PyCapsule_New(vtable, 0, 0);
35022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
35032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
35042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
35052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!ob)
35062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto bad;
35072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
35082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        goto bad;
35092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_DECREF(ob);
35102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0;
35112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bad:
35122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(ob);
35132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return -1;
35142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
35152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
35162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
35172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int start = 0, mid = 0, end = count - 1;
35182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (end >= 0 && code_line > entries[end].code_line) {
35192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return count;
35202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    while (start < end) {
35222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mid = (start + end) / 2;
35232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (code_line < entries[mid].code_line) {
35242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            end = mid;
35252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else if (code_line > entries[mid].code_line) {
35262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)             start = mid + 1;
35272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
35282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return mid;
35292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
35302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (code_line <= entries[mid].code_line) {
35322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mid;
35332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    } else {
35342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mid + 1;
35352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
35372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyCodeObject *__pyx_find_code_object(int code_line) {
35382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyCodeObject* code_object;
35392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int pos;
35402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
35412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return NULL;
35422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
35442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
35452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return NULL;
35462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    code_object = __pyx_code_cache.entries[pos].code_object;
35482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_INCREF(code_object);
35492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return code_object;
35502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
35512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
35522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int pos, i;
35532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
35542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (unlikely(!code_line)) {
35552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return;
35562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (unlikely(!entries)) {
35582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
35592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (likely(entries)) {
35602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            __pyx_code_cache.entries = entries;
35612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            __pyx_code_cache.max_count = 64;
35622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            __pyx_code_cache.count = 1;
35632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            entries[0].code_line = code_line;
35642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            entries[0].code_object = code_object;
35652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Py_INCREF(code_object);
35662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
35672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return;
35682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
35702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
35712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyCodeObject* tmp = entries[pos].code_object;
35722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        entries[pos].code_object = code_object;
35732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Py_DECREF(tmp);
35742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return;
35752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
35772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        int new_max = __pyx_code_cache.max_count + 64;
35782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
35792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
35802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (unlikely(!entries)) {
35812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return;
35822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
35832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_code_cache.entries = entries;
35842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_code_cache.max_count = new_max;
35852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    for (i=__pyx_code_cache.count; i>pos; i--) {
35872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        entries[i] = entries[i-1];
35882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
35892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    entries[pos].code_line = code_line;
35902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    entries[pos].code_object = code_object;
35912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    __pyx_code_cache.count++;
35922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_INCREF(code_object);
35932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
35942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
35952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "compile.h"
35962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "frameobject.h"
35972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "traceback.h"
35982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
35992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            const char *funcname, int c_line,
36002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            int py_line, const char *filename) {
36012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyCodeObject *py_code = 0;
36022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *py_srcfile = 0;
36032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *py_funcname = 0;
36042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #if PY_MAJOR_VERSION < 3
36052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_srcfile = PyString_FromString(filename);
36062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #else
36072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_srcfile = PyUnicode_FromString(filename);
36082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    #endif
36092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!py_srcfile) goto bad;
36102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (c_line) {
36112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_MAJOR_VERSION < 3
36122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
36132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #else
36142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
36152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
36162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
36172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    else {
36182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_MAJOR_VERSION < 3
36192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_funcname = PyString_FromString(funcname);
36202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #else
36212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_funcname = PyUnicode_FromString(funcname);
36222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
36232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
36242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!py_funcname) goto bad;
36252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_code = __Pyx_PyCode_New(
36262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0,            /*int argcount,*/
36272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0,            /*int kwonlyargcount,*/
36282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0,            /*int nlocals,*/
36292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0,            /*int stacksize,*/
36302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0,            /*int flags,*/
36312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_bytes, /*PyObject *code,*/
36322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_tuple, /*PyObject *consts,*/
36332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_tuple, /*PyObject *names,*/
36342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_tuple, /*PyObject *varnames,*/
36352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_tuple, /*PyObject *freevars,*/
36362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_tuple, /*PyObject *cellvars,*/
36372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_srcfile,   /*PyObject *filename,*/
36382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_funcname,  /*PyObject *name,*/
36392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_line,      /*int firstlineno,*/
36402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_empty_bytes  /*PyObject *lnotab*/
36412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    );
36422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_DECREF(py_srcfile);
36432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_DECREF(py_funcname);
36442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return py_code;
36452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bad:
36462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(py_srcfile);
36472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(py_funcname);
36482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return NULL;
36492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
36502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static void __Pyx_AddTraceback(const char *funcname, int c_line,
36512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               int py_line, const char *filename) {
36522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyCodeObject *py_code = 0;
36532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyObject *py_globals = 0;
36542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyFrameObject *py_frame = 0;
36552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
36562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!py_code) {
36572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_code = __Pyx_CreateCodeObjectForTraceback(
36582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            funcname, c_line, py_line, filename);
36592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!py_code) goto bad;
36602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
36612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
36622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_globals = PyModule_GetDict(__pyx_m);
36632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!py_globals) goto bad;
36642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_frame = PyFrame_New(
36652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        PyThreadState_GET(), /*PyThreadState *tstate,*/
36662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_code,             /*PyCodeObject *code,*/
36672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        py_globals,          /*PyObject *globals,*/
36682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0                    /*PyObject *locals*/
36692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    );
36702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!py_frame) goto bad;
36712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    py_frame->f_lineno = py_line;
36722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyTraceBack_Here(py_frame);
36732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bad:
36742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(py_code);
36752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Py_XDECREF(py_frame);
36762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
36772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
36782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
36792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    while (t->p) {
36802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #if PY_MAJOR_VERSION < 3
36812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (t->is_unicode) {
36822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
36832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else if (t->intern) {
36842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            *t->p = PyString_InternFromString(t->s);
36852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
36862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
36872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
36882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #else  /* Python 3+ has unicode identifiers */
36892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (t->is_unicode | t->is_str) {
36902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            if (t->intern) {
36912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                *t->p = PyUnicode_InternFromString(t->s);
36922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            } else if (t->encoding) {
36932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
36942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            } else {
36952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
36962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            }
36972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } else {
36982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
36992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
37002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        #endif
37012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!*t->p)
37022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return -1;
37032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        ++t;
37042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
37052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0;
37062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Type Conversion Functions */
37102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
37122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   int is_true = x == Py_True;
37132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
37142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   else return PyObject_IsTrue(x);
37152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
37182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyNumberMethods *m;
37192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const char *name = NULL;
37202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject *res = NULL;
37212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
37222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyInt_Check(x) || PyLong_Check(x))
37232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
37242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (PyLong_Check(x))
37252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
37262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return Py_INCREF(x), x;
37272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  m = Py_TYPE(x)->tp_as_number;
37282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
37292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (m && m->nb_int) {
37302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    name = "int";
37312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    res = PyNumber_Int(x);
37322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
37332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else if (m && m->nb_long) {
37342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    name = "long";
37352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    res = PyNumber_Long(x);
37362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
37372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
37382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (m && m->nb_int) {
37392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    name = "int";
37402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    res = PyNumber_Long(x);
37412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
37422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
37432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (res) {
37442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x03000000
37452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyInt_Check(res) && !PyLong_Check(res)) {
37462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
37472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!PyLong_Check(res)) {
37482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
37492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      PyErr_Format(PyExc_TypeError,
37502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                   "__%s__ returned non-%s (type %.200s)",
37512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                   name, name, Py_TYPE(res)->tp_name);
37522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      Py_DECREF(res);
37532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return NULL;
37542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
37552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
37562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else if (!PyErr_Occurred()) {
37572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    PyErr_SetString(PyExc_TypeError,
37582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    "an integer is required");
37592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
37602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return res;
37612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
37642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Py_ssize_t ival;
37652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PyObject* x = PyNumber_Index(b);
37662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!x) return -1;
37672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ival = PyInt_AsSsize_t(x);
37682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Py_DECREF(x);
37692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return ival;
37702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
37732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if PY_VERSION_HEX < 0x02050000
37742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   if (ival <= LONG_MAX)
37752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       return PyInt_FromLong((long)ival);
37762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   else {
37772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       unsigned char *bytes = (unsigned char *) &ival;
37782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       int one = 1; int little = (int)*(unsigned char*)&one;
37792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
37802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   }
37812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
37822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   return PyInt_FromSize_t(ival);
37832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
37842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
37872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
37882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
37892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       return (size_t)-1;
37902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
37912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       PyErr_SetString(PyExc_OverflowError,
37922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       "value too large to convert to size_t");
37932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       return (size_t)-1;
37942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   }
37952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   return (size_t)val;
37962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
37972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* Py_PYTHON_H */
3800