From 21eed0286646c9c14029e6f12bcc1d13d9a40560 Mon Sep 17 00:00:00 2001 From: Irony <892768447@qq.com> Date: Sun, 6 May 2018 01:42:03 +0800 Subject: [PATCH] =?UTF-8?q?py=E8=BD=ACpyd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.core.resources.prefs | 1 + C和C++扩展/py转pyd/build.bat | 7 + .../build/lib.win32-3.5/pydmod.cp35-win32.pyd | Bin 0 -> 22528 bytes .../temp.win32-3.5/Release/pydmod.cp35-win32.exp | Bin 0 -> 693 bytes .../temp.win32-3.5/Release/pydmod.cp35-win32.lib | Bin 0 -> 1930 bytes .../build/temp.win32-3.5/Release/pydmod.obj | Bin 0 -> 235278 bytes C和C++扩展/py转pyd/pydmod.c | 3197 +++++++++++++++++ C和C++扩展/py转pyd/pydmod.py | 19 + C和C++扩展/py转pyd/setup.py | 9 + C和C++扩展/py转pyd/test.py | 7 + README.md | 1 + 11 files changed, 3241 insertions(+) create mode 100644 C和C++扩展/py转pyd/build.bat create mode 100644 C和C++扩展/py转pyd/build/lib.win32-3.5/pydmod.cp35-win32.pyd create mode 100644 C和C++扩展/py转pyd/build/temp.win32-3.5/Release/pydmod.cp35-win32.exp create mode 100644 C和C++扩展/py转pyd/build/temp.win32-3.5/Release/pydmod.cp35-win32.lib create mode 100644 C和C++扩展/py转pyd/build/temp.win32-3.5/Release/pydmod.obj create mode 100644 C和C++扩展/py转pyd/pydmod.c create mode 100644 C和C++扩展/py转pyd/pydmod.py create mode 100644 C和C++扩展/py转pyd/setup.py create mode 100644 C和C++扩展/py转pyd/test.py diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 6100072..d062e9d 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,5 +1,6 @@ eclipse.preferences.version=1 encoding//ActiveX\u7A97\u53E3/AxWidget.py=utf-8 +encoding//C\u548CC++\u6269\u5C55/py\u8F6Cpyd/pydmod.py=utf-8 encoding//Json\u751F\u6210QTreeWidget/Json\u751F\u6210\u6811\u5F62\u7ED3\u6784.py=utf-8 encoding//PyQtChart\u7EC3\u4E60/ChartView/ChartView.py=utf-8 encoding//PyQtChart\u7EC3\u4E60/ChartView/ChatWidget.py=utf-8 diff --git a/C和C++扩展/py转pyd/build.bat b/C和C++扩展/py转pyd/build.bat new file mode 100644 index 0000000..4c29f91 --- /dev/null +++ b/C和C++扩展/py转pyd/build.bat @@ -0,0 +1,7 @@ +cd %~dp0 + +python setup.py build + +python test.py + +pause \ No newline at end of file diff --git a/C和C++扩展/py转pyd/build/lib.win32-3.5/pydmod.cp35-win32.pyd b/C和C++扩展/py转pyd/build/lib.win32-3.5/pydmod.cp35-win32.pyd new file mode 100644 index 0000000000000000000000000000000000000000..30b0a0063eb8fb9a3ae20d46e868390d6e21d4cd GIT binary patch literal 22528 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Ë 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 literal 0 HcmV?d00001 diff --git a/C和C++扩展/py转pyd/pydmod.c b/C和C++扩展/py转pyd/pydmod.c new file mode 100644 index 0000000..23cf912 --- /dev/null +++ b/C和C++扩展/py转pyd/pydmod.c @@ -0,0 +1,3197 @@ +/* Generated by Cython 0.27.3 */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. +#else +#define CYTHON_ABI "0_27_3" +#define CYTHON_FUTURE_DIVISION 0 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x02070000 + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + + +#define __PYX_ERR(f_index, lineno, Ln_error) \ +{ \ + __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ +} + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__pydmod +#define __PYX_HAVE_API__pydmod +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +static PyObject *__pyx_m = NULL; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + + +static const char *__pyx_f[] = { + "pydmod.py", +}; + +/*--- Type declarations ---*/ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* CythonFunction.proto */ +#define __Pyx_CyFunction_USED 1 +#include +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { + PyCFunctionObject func; +#if PY_VERSION_HEX < 0x030500A0 + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; + PyObject *func_classobj; + void *defaults; + int defaults_pyobjects; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; +} __pyx_CyFunctionObject; +static PyTypeObject *__pyx_CyFunctionType = 0; +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ + __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) +static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *self, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(void); + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'pydmod' */ +#define __Pyx_MODULE_NAME "pydmod" +extern int __pyx_module_is_main_pydmod; +int __pyx_module_is_main_pydmod = 0; + +/* Implementation of 'pydmod' */ +static const char __pyx_k_x[] = "x"; +static const char __pyx_k_y[] = "y"; +static const char __pyx_k_sum[] = "sum"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_Author[] = "__Author__"; +static const char __pyx_k_pydmod[] = "pydmod"; +static const char __pyx_k_Version[] = "__Version__"; +static const char __pyx_k_Copyright[] = "__Copyright__"; +static const char __pyx_k_pydmod_py[] = "pydmod.py"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_Copyright_c_2018_Irony[] = "Copyright (c) 2018 Irony"; +static const char __pyx_k_By_Irony_QQ_892768447_Email_8927[] = "By: Irony\nQQ: 892768447\nEmail: 892768447@qq.com"; +static PyObject *__pyx_n_s_Author; +static PyObject *__pyx_kp_s_By_Irony_QQ_892768447_Email_8927; +static PyObject *__pyx_n_s_Copyright; +static PyObject *__pyx_kp_s_Copyright_c_2018_Irony; +static PyObject *__pyx_n_s_Version; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_pydmod; +static PyObject *__pyx_kp_s_pydmod_py; +static PyObject *__pyx_n_s_sum; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_x; +static PyObject *__pyx_n_s_y; +static PyObject *__pyx_pf_6pydmod_sum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ +static PyObject *__pyx_float_1_0; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_codeobj__2; + +/* "pydmod.py":18 + * + * + * def sum(x, y): # <<<<<<<<<<<<<< + * return x + y + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6pydmod_1sum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6pydmod_1sum = {"sum", (PyCFunction)__pyx_pw_6pydmod_1sum, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6pydmod_1sum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_x = 0; + PyObject *__pyx_v_y = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("sum (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("sum", 1, 2, 2, 1); __PYX_ERR(0, 18, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sum") < 0)) __PYX_ERR(0, 18, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_x = values[0]; + __pyx_v_y = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("sum", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 18, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pydmod.sum", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6pydmod_sum(__pyx_self, __pyx_v_x, __pyx_v_y); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6pydmod_sum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("sum", 0); + + /* "pydmod.py":19 + * + * def sum(x, y): + * return x + y # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyNumber_Add(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "pydmod.py":18 + * + * + * def sum(x, y): # <<<<<<<<<<<<<< + * return x + y + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("pydmod.sum", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_pydmod(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_pydmod}, + {0, NULL} +}; +#endif + +static struct PyModuleDef __pyx_moduledef = { + PyModuleDef_HEAD_INIT, + "pydmod", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_Author, __pyx_k_Author, sizeof(__pyx_k_Author), 0, 0, 1, 1}, + {&__pyx_kp_s_By_Irony_QQ_892768447_Email_8927, __pyx_k_By_Irony_QQ_892768447_Email_8927, sizeof(__pyx_k_By_Irony_QQ_892768447_Email_8927), 0, 0, 1, 0}, + {&__pyx_n_s_Copyright, __pyx_k_Copyright, sizeof(__pyx_k_Copyright), 0, 0, 1, 1}, + {&__pyx_kp_s_Copyright_c_2018_Irony, __pyx_k_Copyright_c_2018_Irony, sizeof(__pyx_k_Copyright_c_2018_Irony), 0, 0, 1, 0}, + {&__pyx_n_s_Version, __pyx_k_Version, sizeof(__pyx_k_Version), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_pydmod, __pyx_k_pydmod, sizeof(__pyx_k_pydmod), 0, 0, 1, 1}, + {&__pyx_kp_s_pydmod_py, __pyx_k_pydmod_py, sizeof(__pyx_k_pydmod_py), 0, 0, 1, 0}, + {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, + {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static int __Pyx_InitCachedBuiltins(void) { + return 0; +} + +static int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "pydmod.py":18 + * + * + * def sum(x, y): # <<<<<<<<<<<<<< + * return x + y + */ + __pyx_tuple_ = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydmod_py, __pyx_n_s_sum, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +#if PY_MAJOR_VERSION < 3 +PyMODINIT_FUNC initpydmod(void); /*proto*/ +PyMODINIT_FUNC initpydmod(void) +#else +PyMODINIT_FUNC PyInit_pydmod(void); /*proto*/ +PyMODINIT_FUNC PyInit_pydmod(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + result = PyDict_SetItemString(moddict, to_name, value); + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static int __pyx_pymod_exec_pydmod(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; + #endif + #if CYTHON_REFNANNY + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_pydmod(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + #ifdef WITH_THREAD /* Python build with threading support? */ + PyEval_InitThreads(); + #endif + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("pydmod", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_COMPILING_IN_PYPY + Py_INCREF(__pyx_b); + #endif + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_pydmod) { + if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "pydmod")) { + if (unlikely(PyDict_SetItemString(modules, "pydmod", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global init code ---*/ + /*--- Variable export code ---*/ + /*--- Function export code ---*/ + /*--- Type init code ---*/ + /*--- Type import code ---*/ + /*--- Variable import code ---*/ + /*--- Function import code ---*/ + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "pydmod.py":11 + * # description: + * + * __Author__ = """By: Irony # <<<<<<<<<<<<<< + * QQ: 892768447 + * Email: 892768447@qq.com""" + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Author, __pyx_kp_s_By_Irony_QQ_892768447_Email_8927) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + + /* "pydmod.py":14 + * QQ: 892768447 + * Email: 892768447@qq.com""" + * __Copyright__ = 'Copyright (c) 2018 Irony' # <<<<<<<<<<<<<< + * __Version__ = 1.0 + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Copyright, __pyx_kp_s_Copyright_c_2018_Irony) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + + /* "pydmod.py":15 + * Email: 892768447@qq.com""" + * __Copyright__ = 'Copyright (c) 2018 Irony' + * __Version__ = 1.0 # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Version, __pyx_float_1_0) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + + /* "pydmod.py":18 + * + * + * def sum(x, y): # <<<<<<<<<<<<<< + * return x + y + */ + __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pydmod_1sum, 0, __pyx_n_s_sum, NULL, __pyx_n_s_pydmod, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sum, __pyx_t_1) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pydmod.py":1 + * #!/usr/bin/env python # <<<<<<<<<<<<<< + * # -*- coding: utf-8 -*- + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init pydmod", 0, __pyx_lineno, __pyx_filename); + } + Py_DECREF(__pyx_m); __pyx_m = 0; + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init pydmod"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule((char *)modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* FetchCommonType */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* fake_module; + PyTypeObject* cached_type = NULL; + fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); + if (!fake_module) return NULL; + Py_INCREF(fake_module); + cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); + if (cached_type) { + if (!PyType_Check((PyObject*)cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", + type->tp_name); + goto bad; + } + if (cached_type->tp_basicsize != type->tp_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + type->tp_name); + goto bad; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; + } +done: + Py_DECREF(fake_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CythonFunction */ +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) +{ + if (unlikely(op->func_doc == NULL)) { + if (op->func.m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp = op->func_doc; + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + op->func_doc = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + tmp = op->func_name; + Py_INCREF(value); + op->func_name = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + tmp = op->func_qualname; + Py_INCREF(value); + op->func_qualname = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) +{ + PyObject *self; + self = m->func_closure; + if (self == NULL) + self = Py_None; + Py_INCREF(self); + return self; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + tmp = op->func_dict; + Py_INCREF(value); + op->func_dict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) +{ + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyTuple_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_tuple; + op->defaults_tuple = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_kwdict; + op->defaults_kwdict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value || value == Py_None) { + value = NULL; + } else if (!PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + tmp = op->func_annotations; + op->func_annotations = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromString(m->func.m_ml->ml_name); +#else + return PyString_FromString(m->func.m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); + if (op == NULL) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + op->func.m_ml = ml; + op->func.m_self = (PyObject *) op; + Py_XINCREF(closure); + op->func_closure = closure; + Py_XINCREF(module); + op->func.m_module = module; + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; + op->func_classobj = NULL; + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + PyObject_GC_Track(op); + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); + Py_CLEAR(m->func.m_module); + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); + Py_CLEAR(m->func_classobj); + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + PyObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); + Py_VISIT(m->func.m_module); + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); + Py_VISIT(m->func_classobj); + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) +{ + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(func); + return func; + } + if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { + if (type == NULL) + type = (PyObject *)(Py_TYPE(obj)); + return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); + } + if (obj == Py_None) + obj = NULL; + return __Pyx_PyMethod_New(func, obj, type); +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + Py_ssize_t size; + switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 0)) + return (*meth)(self, NULL); + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags in " + "__Pyx_CyFunction_Call. METH_OLDARGS is no " + "longer supported!"); + return NULL; + } + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; + argc = PyTuple_GET_SIZE(args); + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, + 0, + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_CyFunction_descr_get, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +}; +static int __pyx_CyFunction_init(void) { + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* PyErrFetchRestore */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (PyObject_Not(use_cline) != 0) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { + if (likely(err == exc_type)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); + } + return PyErr_GivenExceptionMatches(err, exc_type); +} +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { + if (likely(err == exc_type1 || err == exc_type2)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); + } + return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); +} +#endif + +/* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { + char ctversion[4], rtversion[4]; + PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); + PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); + if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compiletime version %s of module '%.100s' " + "does not match runtime version %s", + ctversion, __Pyx_MODULE_NAME, rtversion); + return PyErr_WarnEx(NULL, message, 1); + } + return 0; +} + +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + PyErr_Clear(); + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type %.200s). " + "The ability to return an instance of a strict subclass of int " + "is deprecated, and may be removed in a future version of Python.", + Py_TYPE(result)->tp_name)) { + Py_DECREF(result); + return NULL; + } + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + type_name, type_name, Py_TYPE(result)->tp_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(x); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/C和C++扩展/py转pyd/pydmod.py b/C和C++扩展/py转pyd/pydmod.py new file mode 100644 index 0000000..58da4b1 --- /dev/null +++ b/C和C++扩展/py转pyd/pydmod.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Created on 2018年5月6日 +# author: Irony +# site: https://github.com/892768447 +# email: 892768447@qq.com +# file: +# description: + +__Author__ = """By: Irony +QQ: 892768447 +Email: 892768447@qq.com""" +__Copyright__ = 'Copyright (c) 2018 Irony' +__Version__ = 1.0 + + +def sum(x, y): + return x + y diff --git a/C和C++扩展/py转pyd/setup.py b/C和C++扩展/py转pyd/setup.py new file mode 100644 index 0000000..f2453e1 --- /dev/null +++ b/C和C++扩展/py转pyd/setup.py @@ -0,0 +1,9 @@ +from distutils.core import setup, Extension + +from Cython.Distutils import build_ext + + +setup( + cmdclass={'build_ext': build_ext}, + ext_modules=[Extension("pydmod", sources=["pydmod.py"])] +) diff --git a/C和C++扩展/py转pyd/test.py b/C和C++扩展/py转pyd/test.py new file mode 100644 index 0000000..a787e3f --- /dev/null +++ b/C和C++扩展/py转pyd/test.py @@ -0,0 +1,7 @@ +import sys +sys.path.insert(0, + './build/lib.{0}-{1}.{2}'.format(sys.platform, sys.version_info.major, sys.version_info.minor)) + +import pydmod +print(pydmod) +print(pydmod.sum(1, 5)) diff --git a/README.md b/README.md index 791f39b..7fdb4ac 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ - [1.27 QRC资源文件使用](QRC资源文件使用/) - [1.28 C和C++扩展](C和C++扩展/) - [1.28.1 pyx和c++](C和C++扩展/pyx和c++/) + - [1.28.2 py转pyd](C和C++扩展/py转pyd/) ### [2.QGraphicsView练习](QGraphicsView练习/)