Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gevent
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gevent
Commits
bb329a81
Commit
bb329a81
authored
Apr 07, 2016
by
Jason Madden
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
windows doesn't like linking an empty extension.
parent
b92418e0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1590 additions
and
3 deletions
+1590
-3
Makefile
Makefile
+1
-1
_setuplibuv.py
_setuplibuv.py
+2
-2
src/gevent/libuv/_libuv.c
src/gevent/libuv/_libuv.c
+1586
-0
src/gevent/libuv/_libuv.py
src/gevent/libuv/_libuv.py
+1
-0
No files found.
Makefile
View file @
bb329a81
...
...
@@ -189,5 +189,5 @@ test-py27-cffi: $(PY27)
test-py27-noembed
:
$(PY27)
cd
deps/libev
&&
./configure
--disable-dependency-tracking
&&
make
cd
deps/c-ares
&&
./configure
--disable-dependency-tracking
&&
make
cd
deps/libuv
&&
./autoge
st
.sh
&&
./configure
&&
make
cd
deps/libuv
&&
./autoge
n
.sh
&&
./configure
&&
make
CPPFLAGS
=
"-Ideps/libev -Ideps/c-ares -Ideps/libuv/include"
LDFLAGS
=
"-Ldeps/libev/.libs -Ldeps/c-ares/.libs -Ldeps/libuv/.libs"
LD_LIBRARY_PATH
=
"
$(PWD)
/deps/libev/.libs:
$(PWD)
/deps/c-ares/.libs:
$(PWD)
/deps/libuv/.libs"
EMBED
=
0
GEVENT_CORE_CEXT_ONLY
=
1
PYTHON
=
python2.7
PATH
=
$(BUILD_RUNTIMES)
/versions/python2.7/bin:
$(PATH)
make develop toxtest
_setuplibuv.py
View file @
bb329a81
...
...
@@ -77,7 +77,7 @@ def prepare_windows_env(env):
try
:
sub
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
stdout
,
_
=
sub
.
communicate
()
version
=
ast
.
literal_eval
(
stdout
.
decode
(
sys
.
stdout
.
encoding
).
strip
())
version
=
ast
.
literal_eval
(
stdout
.
decode
(
sys
.
stdout
.
encoding
).
strip
())
# pylint:disable=no-member
if
version
==
(
2
,
7
):
return
# Python on PATH is fine
except
OSError
:
...
...
@@ -99,7 +99,7 @@ def prepare_windows_env(env):
# This is a dummy extension that serves to let us hook into
# when we need to compile libuv
LIBUV
=
Extension
(
name
=
'gevent.libuv._libuv'
,
sources
=
[],
sources
=
[
'src/gevent/libuv/_libuv.c'
],
include_dirs
=
[
LIBUV_INCLUDE_DIR
],
libraries
=
LIBUV_LIBRARIES
,
define_macros
=
list
(
DEFINE_MACROS
),
...
...
src/gevent/libuv/_libuv.c
0 → 100644
View file @
bb329a81
/* Generated by Cython 0.24 */
#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 < 0x03020000)
#error Cython requires Python 2.6+ or Python 3.2+.
#else
#define CYTHON_ABI "0_24"
#include <stddef.h>
#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
#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_CPYTHON 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_CPYTHON 1
#endif
#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
#define CYTHON_USE_PYLONG_INTERNALS 1
#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 > 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_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_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
#else
#define CYTHON_PEP393_ENABLED 0
#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_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_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(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
#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_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#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
#if PY_VERSION_HEX >= 0x030500B1
#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
typedef
struct
{
unaryfunc
am_await
;
unaryfunc
am_aiter
;
unaryfunc
am_anext
;
}
__Pyx_PyAsyncMethodsStruct
;
#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
#else
#define __Pyx_PyType_AsAsync(obj) NULL
#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
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifndef CYTHON_INLINE
#if 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 <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static
CYTHON_INLINE
float
__PYX_NAN
()
{
float
value
;
memset
(
&
value
,
0xFF
,
sizeof
(
value
));
return
value
;
}
#endif
#define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
__pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
}
#if PY_MAJOR_VERSION >= 3
#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
#ifndef __PYX_EXTERN_C
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
#endif
#define __PYX_HAVE__gevent__libuv___libuv
#define __PYX_HAVE_API__gevent__libuv___libuv
#ifdef _OPENMP
#include <omp.h>
#endif
/* _OPENMP */
#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#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_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
# define CYTHON_NCP_UNUSED
# else
# define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#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 <cstdlib>
#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) && defined (_M_X64)
#define __Pyx_sst_abs(value) _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
char
*
__Pyx_PyObject_AsString
(
PyObject
*
);
static
CYTHON_INLINE
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_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s) ((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)
#if PY_MAJOR_VERSION < 3
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
);
}
#else
#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
#endif
#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
);
static
CYTHON_INLINE
Py_ssize_t
__Pyx_PyIndex_AsSsize_t
(
PyObject
*
);
static
CYTHON_INLINE
PyObject
*
__Pyx_PyInt_FromSize_t
(
size_t
);
#if CYTHON_COMPILING_IN_CPYTHON
#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
PyObject
*
__pyx_m
;
static
PyObject
*
__pyx_d
;
static
PyObject
*
__pyx_b
;
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
[]
=
{
"gevent/libuv/_libuv.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)
/* 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
*
);
/* CheckBinaryVersion.proto */
static
int
__Pyx_check_binary_version
(
void
);
/* InitStrings.proto */
static
int
__Pyx_InitStrings
(
__Pyx_StringTabEntry
*
t
);
/* Module declarations from 'gevent.libuv._libuv' */
#define __Pyx_MODULE_NAME "gevent.libuv._libuv"
int
__pyx_module_is_main_gevent__libuv___libuv
=
0
;
/* Implementation of 'gevent.libuv._libuv' */
static
const
char
__pyx_k_main
[]
=
"__main__"
;
static
const
char
__pyx_k_test
[]
=
"__test__"
;
static
PyObject
*
__pyx_n_s_main
;
static
PyObject
*
__pyx_n_s_test
;
static
PyMethodDef
__pyx_methods
[]
=
{
{
0
,
0
,
0
,
0
}
};
#if PY_MAJOR_VERSION >= 3
static
struct
PyModuleDef
__pyx_moduledef
=
{
#if PY_VERSION_HEX < 0x03020000
{
PyObject_HEAD_INIT
(
NULL
)
NULL
,
0
,
NULL
},
#else
PyModuleDef_HEAD_INIT
,
#endif
"_libuv"
,
0
,
/* m_doc */
-
1
,
/* m_size */
__pyx_methods
/* m_methods */
,
NULL
,
/* m_reload */
NULL
,
/* m_traverse */
NULL
,
/* m_clear */
NULL
/* m_free */
};
#endif
static
__Pyx_StringTabEntry
__pyx_string_tab
[]
=
{
{
&
__pyx_n_s_main
,
__pyx_k_main
,
sizeof
(
__pyx_k_main
),
0
,
0
,
1
,
1
},
{
&
__pyx_n_s_test
,
__pyx_k_test
,
sizeof
(
__pyx_k_test
),
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
);
__Pyx_RefNannyFinishContext
();
return
0
;
}
static
int
__Pyx_InitGlobals
(
void
)
{
if
(
__Pyx_InitStrings
(
__pyx_string_tab
)
<
0
)
__PYX_ERR
(
0
,
1
,
__pyx_L1_error
);
return
0
;
__pyx_L1_error:
;
return
-
1
;
}
#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC
init_libuv
(
void
);
/*proto*/
PyMODINIT_FUNC
init_libuv
(
void
)
#else
PyMODINIT_FUNC
PyInit__libuv
(
void
);
/*proto*/
PyMODINIT_FUNC
PyInit__libuv
(
void
)
#endif
{
PyObject
*
__pyx_t_1
=
NULL
;
__Pyx_RefNannyDeclarations
#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__libuv(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_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 PY_MAJOR_VERSION < 3
__pyx_m
=
Py_InitModule4
(
"_libuv"
,
__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
)
__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
)
#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_gevent__libuv___libuv
)
{
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
,
"gevent.libuv._libuv"
))
{
if
(
unlikely
(
PyDict_SetItemString
(
modules
,
"gevent.libuv._libuv"
,
__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
/* "gevent/libuv/_libuv.py":1
* # Empty module, exists to build libuv library # <<<<<<<<<<<<<<
*/
__pyx_t_1
=
PyDict_New
();
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 gevent.libuv._libuv"
,
__pyx_clineno
,
__pyx_lineno
,
__pyx_filename
);
}
Py_DECREF
(
__pyx_m
);
__pyx_m
=
0
;
}
else
if
(
!
PyErr_Occurred
())
{
PyErr_SetString
(
PyExc_ImportError
,
"init gevent.libuv._libuv"
);
}
__pyx_L0:
;
__Pyx_RefNannyFinishContext
();
#if PY_MAJOR_VERSION < 3
return
;
#else
return
__pyx_m
;
#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
/* 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
;
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
(
PyThreadState_GET
(),
/*PyThreadState *tstate,*/
py_code
,
/*PyCodeObject *code,*/
__pyx_d
,
/*PyObject *globals,*/
0
/*PyObject *locals*/
);
if
(
!
py_frame
)
goto
bad
;
py_frame
->
f_lineno
=
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
);
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
return
PyLong_FromUnsignedLongLong
((
unsigned
PY_LONG_LONG
)
value
);
}
}
else
{
if
(
sizeof
(
long
)
<=
sizeof
(
long
))
{
return
PyInt_FromLong
((
long
)
value
);
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
PY_LONG_LONG
))
{
return
PyLong_FromLongLong
((
PY_LONG_LONG
)
value
);
}
}
{
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
))
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
unsigned
PY_LONG_LONG
,
PyLong_AsUnsignedLongLong
(
x
))
}
}
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
))
}
else
if
(
sizeof
(
long
)
<=
sizeof
(
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
long
,
PY_LONG_LONG
,
PyLong_AsLongLong
(
x
))
}
}
{
#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
))
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
unsigned
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
unsigned
PY_LONG_LONG
,
PyLong_AsUnsignedLongLong
(
x
))
}
}
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
))
}
else
if
(
sizeof
(
int
)
<=
sizeof
(
PY_LONG_LONG
))
{
__PYX_VERIFY_RETURN_INT_EXC
(
int
,
PY_LONG_LONG
,
PyLong_AsLongLong
(
x
))
}
}
{
#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
;
}
/* 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
;
++
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
char
*
__Pyx_PyObject_AsString
(
PyObject
*
o
)
{
Py_ssize_t
ignore
;
return
__Pyx_PyObject_AsStringAndSize
(
o
,
&
ignore
);
}
static
CYTHON_INLINE
char
*
__Pyx_PyObject_AsStringAndSize
(
PyObject
*
o
,
Py_ssize_t
*
length
)
{
#if CYTHON_COMPILING_IN_CPYTHON && (__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
))
{
#if PY_VERSION_HEX < 0x03030000
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
if
(
__Pyx_PyUnicode_READY
(
o
)
==
-
1
)
return
NULL
;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
if
(
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
}
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
CYTHON_INLINE
PyObject
*
__Pyx_PyNumber_IntOrLong
(
PyObject
*
x
)
{
PyNumberMethods
*
m
;
const
char
*
name
=
NULL
;
PyObject
*
res
=
NULL
;
#if PY_MAJOR_VERSION < 3
if
(
PyInt_Check
(
x
)
||
PyLong_Check
(
x
))
#else
if
(
PyLong_Check
(
x
))
#endif
return
__Pyx_NewRef
(
x
);
m
=
Py_TYPE
(
x
)
->
tp_as_number
;
#if PY_MAJOR_VERSION < 3
if
(
m
&&
m
->
nb_int
)
{
name
=
"int"
;
res
=
PyNumber_Int
(
x
);
}
else
if
(
m
&&
m
->
nb_long
)
{
name
=
"long"
;
res
=
PyNumber_Long
(
x
);
}
#else
if
(
m
&&
m
->
nb_int
)
{
name
=
"int"
;
res
=
PyNumber_Long
(
x
);
}
#endif
if
(
res
)
{
#if PY_MAJOR_VERSION < 3
if
(
!
PyInt_Check
(
res
)
&&
!
PyLong_Check
(
res
))
{
#else
if
(
!
PyLong_Check
(
res
))
{
#endif
PyErr_Format
(
PyExc_TypeError
,
"__%.4s__ returned non-%.4s (type %.200s)"
,
name
,
name
,
Py_TYPE
(
res
)
->
tp_name
);
Py_DECREF
(
res
);
return
NULL
;
}
}
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 */
src/gevent/libuv/_libuv.py
0 → 100644
View file @
bb329a81
# Empty module, exists to build libuv library
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment