| 1 | | /* Generated by Cython 0.15.1 on Fri Feb 17 23:33:28 2012 */ |
| 2 | | |
| 3 | | #define PY_SSIZE_T_CLEAN |
| 4 | | #include "Python.h" |
| 5 | | #ifndef Py_PYTHON_H |
| 6 | | #error Python headers needed to compile C extensions, please install development version of Python. |
| 7 | | #else |
| 8 | | |
| 9 | | #include <stddef.h> /* For offsetof */ |
| 10 | | #ifndef offsetof |
| 11 | | #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) |
| 12 | | #endif |
| 13 | | |
| 14 | | #if !defined(WIN32) && !defined(MS_WINDOWS) |
| 15 | | #ifndef __stdcall |
| 16 | | #define __stdcall |
| 17 | | #endif |
| 18 | | #ifndef __cdecl |
| 19 | | #define __cdecl |
| 20 | | #endif |
| 21 | | #ifndef __fastcall |
| 22 | | #define __fastcall |
| 23 | | #endif |
| 24 | | #endif |
| 25 | | |
| 26 | | #ifndef DL_IMPORT |
| 27 | | #define DL_IMPORT(t) t |
| 28 | | #endif |
| 29 | | #ifndef DL_EXPORT |
| 30 | | #define DL_EXPORT(t) t |
| 31 | | #endif |
| 32 | | |
| 33 | | #ifndef PY_LONG_LONG |
| 34 | | #define PY_LONG_LONG LONG_LONG |
| 35 | | #endif |
| 36 | | |
| 37 | | #if PY_VERSION_HEX < 0x02040000 |
| 38 | | #define METH_COEXIST 0 |
| 39 | | #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type) |
| 40 | | #define PyDict_Contains(d,o) PySequence_Contains(d,o) |
| 41 | | #endif |
| 42 | | |
| 43 | | #if PY_VERSION_HEX < 0x02050000 |
| 44 | | typedef int Py_ssize_t; |
| 45 | | #define PY_SSIZE_T_MAX INT_MAX |
| 46 | | #define PY_SSIZE_T_MIN INT_MIN |
| 47 | | #define PY_FORMAT_SIZE_T "" |
| 48 | | #define PyInt_FromSsize_t(z) PyInt_FromLong(z) |
| 49 | | #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) |
| 50 | | #define PyNumber_Index(o) PyNumber_Int(o) |
| 51 | | #define PyIndex_Check(o) PyNumber_Check(o) |
| 52 | | #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) |
| 53 | | #endif |
| 54 | | |
| 55 | | #if PY_VERSION_HEX < 0x02060000 |
| 56 | | #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) |
| 57 | | #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) |
| 58 | | #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) |
| 59 | | #define PyVarObject_HEAD_INIT(type, size) \ |
| 60 | | PyObject_HEAD_INIT(type) size, |
| 61 | | #define PyType_Modified(t) |
| 62 | | |
| 63 | | typedef struct { |
| 64 | | void *buf; |
| 65 | | PyObject *obj; |
| 66 | | Py_ssize_t len; |
| 67 | | Py_ssize_t itemsize; |
| 68 | | int readonly; |
| 69 | | int ndim; |
| 70 | | char *format; |
| 71 | | Py_ssize_t *shape; |
| 72 | | Py_ssize_t *strides; |
| 73 | | Py_ssize_t *suboffsets; |
| 74 | | void *internal; |
| 75 | | } Py_buffer; |
| 76 | | |
| 77 | | #define PyBUF_SIMPLE 0 |
| 78 | | #define PyBUF_WRITABLE 0x0001 |
| 79 | | #define PyBUF_FORMAT 0x0004 |
| 80 | | #define PyBUF_ND 0x0008 |
| 81 | | #define PyBUF_STRIDES (0x0010 | PyBUF_ND) |
| 82 | | #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) |
| 83 | | #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) |
| 84 | | #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) |
| 85 | | #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) |
| 86 | | |
| 87 | | #endif |
| 88 | | |
| 89 | | #if PY_MAJOR_VERSION < 3 |
| 90 | | #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" |
| 91 | | #else |
| 92 | | #define __Pyx_BUILTIN_MODULE_NAME "builtins" |
| 93 | | #endif |
| 94 | | |
| 95 | | #if PY_MAJOR_VERSION >= 3 |
| 96 | | #define Py_TPFLAGS_CHECKTYPES 0 |
| 97 | | #define Py_TPFLAGS_HAVE_INDEX 0 |
| 98 | | #endif |
| 99 | | |
| 100 | | #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) |
| 101 | | #define Py_TPFLAGS_HAVE_NEWBUFFER 0 |
| 102 | | #endif |
| 103 | | |
| 104 | | #if PY_MAJOR_VERSION >= 3 |
| 105 | | #define PyBaseString_Type PyUnicode_Type |
| 106 | | #define PyStringObject PyUnicodeObject |
| 107 | | #define PyString_Type PyUnicode_Type |
| 108 | | #define PyString_Check PyUnicode_Check |
| 109 | | #define PyString_CheckExact PyUnicode_CheckExact |
| 110 | | #endif |
| 111 | | |
| 112 | | #if PY_VERSION_HEX < 0x02060000 |
| 113 | | #define PyBytesObject PyStringObject |
| 114 | | #define PyBytes_Type PyString_Type |
| 115 | | #define PyBytes_Check PyString_Check |
| 116 | | #define PyBytes_CheckExact PyString_CheckExact |
| 117 | | #define PyBytes_FromString PyString_FromString |
| 118 | | #define PyBytes_FromStringAndSize PyString_FromStringAndSize |
| 119 | | #define PyBytes_FromFormat PyString_FromFormat |
| 120 | | #define PyBytes_DecodeEscape PyString_DecodeEscape |
| 121 | | #define PyBytes_AsString PyString_AsString |
| 122 | | #define PyBytes_AsStringAndSize PyString_AsStringAndSize |
| 123 | | #define PyBytes_Size PyString_Size |
| 124 | | #define PyBytes_AS_STRING PyString_AS_STRING |
| 125 | | #define PyBytes_GET_SIZE PyString_GET_SIZE |
| 126 | | #define PyBytes_Repr PyString_Repr |
| 127 | | #define PyBytes_Concat PyString_Concat |
| 128 | | #define PyBytes_ConcatAndDel PyString_ConcatAndDel |
| 129 | | #endif |
| 130 | | |
| 131 | | #if PY_VERSION_HEX < 0x02060000 |
| 132 | | #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) |
| 133 | | #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) |
| 134 | | #endif |
| 135 | | #ifndef PySet_CheckExact |
| 136 | | #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) |
| 137 | | #endif |
| 138 | | |
| 139 | | #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) |
| 140 | | |
| 141 | | #if PY_MAJOR_VERSION >= 3 |
| 142 | | #define PyIntObject PyLongObject |
| 143 | | #define PyInt_Type PyLong_Type |
| 144 | | #define PyInt_Check(op) PyLong_Check(op) |
| 145 | | #define PyInt_CheckExact(op) PyLong_CheckExact(op) |
| 146 | | #define PyInt_FromString PyLong_FromString |
| 147 | | #define PyInt_FromUnicode PyLong_FromUnicode |
| 148 | | #define PyInt_FromLong PyLong_FromLong |
| 149 | | #define PyInt_FromSize_t PyLong_FromSize_t |
| 150 | | #define PyInt_FromSsize_t PyLong_FromSsize_t |
| 151 | | #define PyInt_AsLong PyLong_AsLong |
| 152 | | #define PyInt_AS_LONG PyLong_AS_LONG |
| 153 | | #define PyInt_AsSsize_t PyLong_AsSsize_t |
| 154 | | #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask |
| 155 | | #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask |
| 156 | | #endif |
| 157 | | |
| 158 | | #if PY_MAJOR_VERSION >= 3 |
| 159 | | #define PyBoolObject PyLongObject |
| 160 | | #endif |
| 161 | | |
| 162 | | #if PY_VERSION_HEX < 0x03020000 |
| 163 | | typedef long Py_hash_t; |
| 164 | | #define __Pyx_PyInt_FromHash_t PyInt_FromLong |
| 165 | | #define __Pyx_PyInt_AsHash_t PyInt_AsLong |
| 166 | | #else |
| 167 | | #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t |
| 168 | | #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t |
| 169 | | #endif |
| 170 | | |
| 171 | | |
| 172 | | #if PY_MAJOR_VERSION >= 3 |
| 173 | | #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) |
| 174 | | #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) |
| 175 | | #else |
| 176 | | #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) |
| 177 | | #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) |
| 178 | | #endif |
| 179 | | |
| 180 | | #if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) |
| 181 | | #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) |
| 182 | | #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) |
| 183 | | #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) |
| 184 | | #else |
| 185 | | #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ |
| 186 | | (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ |
| 187 | | (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ |
| 188 | | (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) |
| 189 | | #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ |
| 190 | | (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ |
| 191 | | (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ |
| 192 | | (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) |
| 193 | | #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ |
| 194 | | (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ |
| 195 | | (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ |
| 196 | | (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) |
| 197 | | #endif |
| 198 | | |
| 199 | | #if PY_MAJOR_VERSION >= 3 |
| 200 | | #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) |
| 201 | | #endif |
| 202 | | |
| 203 | | #if PY_VERSION_HEX < 0x02050000 |
| 204 | | #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) |
| 205 | | #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) |
| 206 | | #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) |
| 207 | | #else |
| 208 | | #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) |
| 209 | | #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) |
| 210 | | #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) |
| 211 | | #endif |
| 212 | | |
| 213 | | #if PY_VERSION_HEX < 0x02050000 |
| 214 | | #define __Pyx_NAMESTR(n) ((char *)(n)) |
| 215 | | #define __Pyx_DOCSTR(n) ((char *)(n)) |
| 216 | | #else |
| 217 | | #define __Pyx_NAMESTR(n) (n) |
| 218 | | #define __Pyx_DOCSTR(n) (n) |
| 219 | | #endif |
| 220 | | |
| 221 | | #ifndef __PYX_EXTERN_C |
| 222 | | #ifdef __cplusplus |
| 223 | | #define __PYX_EXTERN_C extern "C" |
| 224 | | #else |
| 225 | | #define __PYX_EXTERN_C extern |
| 226 | | #endif |
| 227 | | #endif |
| 228 | | |
| 229 | | #if defined(WIN32) || defined(MS_WINDOWS) |
| 230 | | #define _USE_MATH_DEFINES |
| 231 | | #endif |
| 232 | | #include <math.h> |
| 233 | | #define __PYX_HAVE__twisted__python___epoll |
| 234 | | #define __PYX_HAVE_API__twisted__python___epoll |
| 235 | | #include "stdio.h" |
| 236 | | #include "errno.h" |
| 237 | | #include "string.h" |
| 238 | | #include "stdint.h" |
| 239 | | #include "sys/epoll.h" |
| 240 | | #ifdef _OPENMP |
| 241 | | #include <omp.h> |
| 242 | | #endif /* _OPENMP */ |
| 243 | | |
| 244 | | #ifdef PYREX_WITHOUT_ASSERTIONS |
| 245 | | #define CYTHON_WITHOUT_ASSERTIONS |
| 246 | | #endif |
| 247 | | |
| 248 | | |
| 249 | | /* inline attribute */ |
| 250 | | #ifndef CYTHON_INLINE |
| 251 | | #if defined(__GNUC__) |
| 252 | | #define CYTHON_INLINE __inline__ |
| 253 | | #elif defined(_MSC_VER) |
| 254 | | #define CYTHON_INLINE __inline |
| 255 | | #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L |
| 256 | | #define CYTHON_INLINE inline |
| 257 | | #else |
| 258 | | #define CYTHON_INLINE |
| 259 | | #endif |
| 260 | | #endif |
| 261 | | |
| 262 | | /* unused attribute */ |
| 263 | | #ifndef CYTHON_UNUSED |
| 264 | | # if defined(__GNUC__) |
| 265 | | # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) |
| 266 | | # define CYTHON_UNUSED __attribute__ ((__unused__)) |
| 267 | | # else |
| 268 | | # define CYTHON_UNUSED |
| 269 | | # endif |
| 270 | | # elif defined(__ICC) || defined(__INTEL_COMPILER) |
| 271 | | # define CYTHON_UNUSED __attribute__ ((__unused__)) |
| 272 | | # else |
| 273 | | # define CYTHON_UNUSED |
| 274 | | # endif |
| 275 | | #endif |
| 276 | | |
| 277 | | typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ |
| 278 | | |
| 279 | | |
| 280 | | /* Type Conversion Predeclarations */ |
| 281 | | |
| 282 | | #define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) |
| 283 | | #define __Pyx_PyBytes_AsUString(s) ((unsigned char*) PyBytes_AsString(s)) |
| 284 | | |
| 285 | | #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) |
| 286 | | #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) |
| 287 | | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); |
| 288 | | static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); |
| 289 | | |
| 290 | | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); |
| 291 | | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); |
| 292 | | static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); |
| 293 | | |
| 294 | | #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) |
| 295 | | |
| 296 | | |
| 297 | | #ifdef __GNUC__ |
| 298 | | /* Test for GCC > 2.95 */ |
| 299 | | #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) |
| 300 | | #define likely(x) __builtin_expect(!!(x), 1) |
| 301 | | #define unlikely(x) __builtin_expect(!!(x), 0) |
| 302 | | #else /* __GNUC__ > 2 ... */ |
| 303 | | #define likely(x) (x) |
| 304 | | #define unlikely(x) (x) |
| 305 | | #endif /* __GNUC__ > 2 ... */ |
| 306 | | #else /* __GNUC__ */ |
| 307 | | #define likely(x) (x) |
| 308 | | #define unlikely(x) (x) |
| 309 | | #endif /* __GNUC__ */ |
| 310 | | |
| 311 | | static PyObject *__pyx_m; |
| 312 | | static PyObject *__pyx_b; |
| 313 | | static PyObject *__pyx_empty_tuple; |
| 314 | | static PyObject *__pyx_empty_bytes; |
| 315 | | static int __pyx_lineno; |
| 316 | | static int __pyx_clineno = 0; |
| 317 | | static const char * __pyx_cfilenm= __FILE__; |
| 318 | | static const char *__pyx_filename; |
| 319 | | |
| 320 | | |
| 321 | | static const char *__pyx_f[] = { |
| 322 | | "_epoll.pyx", |
| 323 | | }; |
| 324 | | |
| 325 | | /*--- Type declarations ---*/ |
| 326 | | struct __pyx_obj_7twisted_6python_6_epoll_epoll; |
| 327 | | |
| 328 | | /* "twisted/python/_epoll.pyx":106 |
| 329 | | * free(events) |
| 330 | | * |
| 331 | | * cdef class epoll: # <<<<<<<<<<<<<< |
| 332 | | * """ |
| 333 | | * Represent a set of file descriptors being monitored for events. |
| 334 | | */ |
| 335 | | struct __pyx_obj_7twisted_6python_6_epoll_epoll { |
| 336 | | PyObject_HEAD |
| 337 | | int fd; |
| 338 | | int initialized; |
| 339 | | }; |
| 340 | | |
| 341 | | |
| 342 | | #ifndef CYTHON_REFNANNY |
| 343 | | #define CYTHON_REFNANNY 0 |
| 344 | | #endif |
| 345 | | |
| 346 | | #if CYTHON_REFNANNY |
| 347 | | typedef struct { |
| 348 | | void (*INCREF)(void*, PyObject*, int); |
| 349 | | void (*DECREF)(void*, PyObject*, int); |
| 350 | | void (*GOTREF)(void*, PyObject*, int); |
| 351 | | void (*GIVEREF)(void*, PyObject*, int); |
| 352 | | void* (*SetupContext)(const char*, int, const char*); |
| 353 | | void (*FinishContext)(void**); |
| 354 | | } __Pyx_RefNannyAPIStruct; |
| 355 | | static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; |
| 356 | | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ |
| 357 | | #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; |
| 358 | | #define __Pyx_RefNannySetupContext(name) __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) |
| 359 | | #define __Pyx_RefNannyFinishContext() __Pyx_RefNanny->FinishContext(&__pyx_refnanny) |
| 360 | | #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
| 361 | | #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
| 362 | | #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
| 363 | | #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) |
| 364 | | #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) |
| 365 | | #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) |
| 366 | | #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) |
| 367 | | #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) |
| 368 | | #else |
| 369 | | #define __Pyx_RefNannyDeclarations |
| 370 | | #define __Pyx_RefNannySetupContext(name) |
| 371 | | #define __Pyx_RefNannyFinishContext() |
| 372 | | #define __Pyx_INCREF(r) Py_INCREF(r) |
| 373 | | #define __Pyx_DECREF(r) Py_DECREF(r) |
| 374 | | #define __Pyx_GOTREF(r) |
| 375 | | #define __Pyx_GIVEREF(r) |
| 376 | | #define __Pyx_XINCREF(r) Py_XINCREF(r) |
| 377 | | #define __Pyx_XDECREF(r) Py_XDECREF(r) |
| 378 | | #define __Pyx_XGOTREF(r) |
| 379 | | #define __Pyx_XGIVEREF(r) |
| 380 | | #endif /* CYTHON_REFNANNY */ |
| 381 | | |
| 382 | | static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ |
| 383 | | |
| 384 | | static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ |
| 385 | | static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ |
| 386 | | |
| 387 | | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ |
| 388 | | |
| 389 | | static void __Pyx_RaiseDoubleKeywordsError( |
| 390 | | const char* func_name, PyObject* kw_name); /*proto*/ |
| 391 | | |
| 392 | | static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /*proto*/ |
| 393 | | |
| 394 | | static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, |
| 395 | | Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ |
| 396 | | |
| 397 | | static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); |
| 398 | | |
| 399 | | static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); |
| 400 | | |
| 401 | | static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); |
| 402 | | |
| 403 | | static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); |
| 404 | | |
| 405 | | static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); |
| 406 | | |
| 407 | | static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); |
| 408 | | |
| 409 | | static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); |
| 410 | | |
| 411 | | static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); |
| 412 | | |
| 413 | | static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); |
| 414 | | |
| 415 | | static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); |
| 416 | | |
| 417 | | static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); |
| 418 | | |
| 419 | | static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); |
| 420 | | |
| 421 | | static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); |
| 422 | | |
| 423 | | static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); |
| 424 | | |
| 425 | | static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); |
| 426 | | |
| 427 | | static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); |
| 428 | | |
| 429 | | static int __Pyx_check_binary_version(void); |
| 430 | | |
| 431 | | static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno, |
| 432 | | int __pyx_lineno, const char *__pyx_filename); /*proto*/ |
| 433 | | |
| 434 | | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ |
| 435 | | |
| 436 | | /* Module declarations from 'twisted.python._epoll' */ |
| 437 | | static PyTypeObject *__pyx_ptype_7twisted_6python_6_epoll_epoll = 0; |
| 438 | | static PyObject *__pyx_f_7twisted_6python_6_epoll_call_epoll_wait(int, unsigned int, int); /*proto*/ |
| 439 | | #define __Pyx_MODULE_NAME "twisted.python._epoll" |
| 440 | | int __pyx_module_is_main_twisted__python___epoll = 0; |
| 441 | | |
| 442 | | /* Implementation of 'twisted.python._epoll' */ |
| 443 | | static PyObject *__pyx_builtin_IOError; |
| 444 | | static char __pyx_k_1[] = "\nInterface to epoll I/O event notification facility.\n"; |
| 445 | | static char __pyx_k__ET[] = "ET"; |
| 446 | | static char __pyx_k__IN[] = "IN"; |
| 447 | | static char __pyx_k__fd[] = "fd"; |
| 448 | | static char __pyx_k__op[] = "op"; |
| 449 | | static char __pyx_k__ERR[] = "ERR"; |
| 450 | | static char __pyx_k__HUP[] = "HUP"; |
| 451 | | static char __pyx_k__MSG[] = "MSG"; |
| 452 | | static char __pyx_k__OUT[] = "OUT"; |
| 453 | | static char __pyx_k__PRI[] = "PRI"; |
| 454 | | static char __pyx_k__size[] = "size"; |
| 455 | | static char __pyx_k__RDBAND[] = "RDBAND"; |
| 456 | | static char __pyx_k__RDNORM[] = "RDNORM"; |
| 457 | | static char __pyx_k__WRBAND[] = "WRBAND"; |
| 458 | | static char __pyx_k__WRNORM[] = "WRNORM"; |
| 459 | | static char __pyx_k__events[] = "events"; |
| 460 | | static char __pyx_k__CTL_ADD[] = "CTL_ADD"; |
| 461 | | static char __pyx_k__CTL_DEL[] = "CTL_DEL"; |
| 462 | | static char __pyx_k__CTL_MOD[] = "CTL_MOD"; |
| 463 | | static char __pyx_k__EPOLLET[] = "EPOLLET"; |
| 464 | | static char __pyx_k__EPOLLIN[] = "EPOLLIN"; |
| 465 | | static char __pyx_k__IOError[] = "IOError"; |
| 466 | | static char __pyx_k__timeout[] = "timeout"; |
| 467 | | static char __pyx_k__EPOLLERR[] = "EPOLLERR"; |
| 468 | | static char __pyx_k__EPOLLHUP[] = "EPOLLHUP"; |
| 469 | | static char __pyx_k__EPOLLMSG[] = "EPOLLMSG"; |
| 470 | | static char __pyx_k__EPOLLOUT[] = "EPOLLOUT"; |
| 471 | | static char __pyx_k__EPOLLPRI[] = "EPOLLPRI"; |
| 472 | | static char __pyx_k____main__[] = "__main__"; |
| 473 | | static char __pyx_k____test__[] = "__test__"; |
| 474 | | static char __pyx_k__maxevents[] = "maxevents"; |
| 475 | | static char __pyx_k__EPOLLRDBAND[] = "EPOLLRDBAND"; |
| 476 | | static char __pyx_k__EPOLLRDNORM[] = "EPOLLRDNORM"; |
| 477 | | static char __pyx_k__EPOLLWRBAND[] = "EPOLLWRBAND"; |
| 478 | | static char __pyx_k__EPOLLWRNORM[] = "EPOLLWRNORM"; |
| 479 | | static PyObject *__pyx_n_s__CTL_ADD; |
| 480 | | static PyObject *__pyx_n_s__CTL_DEL; |
| 481 | | static PyObject *__pyx_n_s__CTL_MOD; |
| 482 | | static PyObject *__pyx_n_s__EPOLLERR; |
| 483 | | static PyObject *__pyx_n_s__EPOLLET; |
| 484 | | static PyObject *__pyx_n_s__EPOLLHUP; |
| 485 | | static PyObject *__pyx_n_s__EPOLLIN; |
| 486 | | static PyObject *__pyx_n_s__EPOLLMSG; |
| 487 | | static PyObject *__pyx_n_s__EPOLLOUT; |
| 488 | | static PyObject *__pyx_n_s__EPOLLPRI; |
| 489 | | static PyObject *__pyx_n_s__EPOLLRDBAND; |
| 490 | | static PyObject *__pyx_n_s__EPOLLRDNORM; |
| 491 | | static PyObject *__pyx_n_s__EPOLLWRBAND; |
| 492 | | static PyObject *__pyx_n_s__EPOLLWRNORM; |
| 493 | | static PyObject *__pyx_n_s__ERR; |
| 494 | | static PyObject *__pyx_n_s__ET; |
| 495 | | static PyObject *__pyx_n_s__HUP; |
| 496 | | static PyObject *__pyx_n_s__IN; |
| 497 | | static PyObject *__pyx_n_s__IOError; |
| 498 | | static PyObject *__pyx_n_s__MSG; |
| 499 | | static PyObject *__pyx_n_s__OUT; |
| 500 | | static PyObject *__pyx_n_s__PRI; |
| 501 | | static PyObject *__pyx_n_s__RDBAND; |
| 502 | | static PyObject *__pyx_n_s__RDNORM; |
| 503 | | static PyObject *__pyx_n_s__WRBAND; |
| 504 | | static PyObject *__pyx_n_s__WRNORM; |
| 505 | | static PyObject *__pyx_n_s____main__; |
| 506 | | static PyObject *__pyx_n_s____test__; |
| 507 | | static PyObject *__pyx_n_s__events; |
| 508 | | static PyObject *__pyx_n_s__fd; |
| 509 | | static PyObject *__pyx_n_s__maxevents; |
| 510 | | static PyObject *__pyx_n_s__op; |
| 511 | | static PyObject *__pyx_n_s__size; |
| 512 | | static PyObject *__pyx_n_s__timeout; |
| 513 | | |
| 514 | | /* "twisted/python/_epoll.pyx":68 |
| 515 | | * cdef extern void PyEval_RestoreThread(PyThreadState*) |
| 516 | | * |
| 517 | | * cdef call_epoll_wait(int fd, unsigned int maxevents, int timeout_msec): # <<<<<<<<<<<<<< |
| 518 | | * """ |
| 519 | | * Wait for an I/O event, wrap epoll_wait(2). |
| 520 | | */ |
| 521 | | |
| 522 | | static PyObject *__pyx_f_7twisted_6python_6_epoll_call_epoll_wait(int __pyx_v_fd, unsigned int __pyx_v_maxevents, int __pyx_v_timeout_msec) { |
| 523 | | struct epoll_event *__pyx_v_events; |
| 524 | | int __pyx_v_result; |
| 525 | | int __pyx_v_nbytes; |
| 526 | | PyThreadState *__pyx_v__save; |
| 527 | | PyObject *__pyx_v_results = NULL; |
| 528 | | long __pyx_v_i; |
| 529 | | PyObject *__pyx_r = NULL; |
| 530 | | __Pyx_RefNannyDeclarations |
| 531 | | int __pyx_t_1; |
| 532 | | PyObject *__pyx_t_2 = NULL; |
| 533 | | PyObject *__pyx_t_3 = NULL; |
| 534 | | PyObject *__pyx_t_4 = NULL; |
| 535 | | int __pyx_t_5; |
| 536 | | int __pyx_t_6; |
| 537 | | int __pyx_lineno = 0; |
| 538 | | const char *__pyx_filename = NULL; |
| 539 | | int __pyx_clineno = 0; |
| 540 | | __Pyx_RefNannySetupContext("call_epoll_wait"); |
| 541 | | |
| 542 | | /* "twisted/python/_epoll.pyx":89 |
| 543 | | * cdef PyThreadState *_save |
| 544 | | * |
| 545 | | * nbytes = sizeof(epoll_event) * maxevents # <<<<<<<<<<<<<< |
| 546 | | * events = <epoll_event*>malloc(nbytes) |
| 547 | | * memset(events, 0, nbytes) |
| 548 | | */ |
| 549 | | __pyx_v_nbytes = ((sizeof(struct epoll_event)) * __pyx_v_maxevents); |
| 550 | | |
| 551 | | /* "twisted/python/_epoll.pyx":90 |
| 552 | | * |
| 553 | | * nbytes = sizeof(epoll_event) * maxevents |
| 554 | | * events = <epoll_event*>malloc(nbytes) # <<<<<<<<<<<<<< |
| 555 | | * memset(events, 0, nbytes) |
| 556 | | * try: |
| 557 | | */ |
| 558 | | __pyx_v_events = ((struct epoll_event *)malloc(__pyx_v_nbytes)); |
| 559 | | |
| 560 | | /* "twisted/python/_epoll.pyx":91 |
| 561 | | * nbytes = sizeof(epoll_event) * maxevents |
| 562 | | * events = <epoll_event*>malloc(nbytes) |
| 563 | | * memset(events, 0, nbytes) # <<<<<<<<<<<<<< |
| 564 | | * try: |
| 565 | | * _save = PyEval_SaveThread() |
| 566 | | */ |
| 567 | | memset(__pyx_v_events, 0, __pyx_v_nbytes); |
| 568 | | |
| 569 | | /* "twisted/python/_epoll.pyx":92 |
| 570 | | * events = <epoll_event*>malloc(nbytes) |
| 571 | | * memset(events, 0, nbytes) |
| 572 | | * try: # <<<<<<<<<<<<<< |
| 573 | | * _save = PyEval_SaveThread() |
| 574 | | * result = epoll_wait(fd, events, maxevents, timeout_msec) |
| 575 | | */ |
| 576 | | /*try:*/ { |
| 577 | | |
| 578 | | /* "twisted/python/_epoll.pyx":93 |
| 579 | | * memset(events, 0, nbytes) |
| 580 | | * try: |
| 581 | | * _save = PyEval_SaveThread() # <<<<<<<<<<<<<< |
| 582 | | * result = epoll_wait(fd, events, maxevents, timeout_msec) |
| 583 | | * PyEval_RestoreThread(_save) |
| 584 | | */ |
| 585 | | __pyx_v__save = PyEval_SaveThread(); |
| 586 | | |
| 587 | | /* "twisted/python/_epoll.pyx":94 |
| 588 | | * try: |
| 589 | | * _save = PyEval_SaveThread() |
| 590 | | * result = epoll_wait(fd, events, maxevents, timeout_msec) # <<<<<<<<<<<<<< |
| 591 | | * PyEval_RestoreThread(_save) |
| 592 | | * |
| 593 | | */ |
| 594 | | __pyx_v_result = epoll_wait(__pyx_v_fd, __pyx_v_events, __pyx_v_maxevents, __pyx_v_timeout_msec); |
| 595 | | |
| 596 | | /* "twisted/python/_epoll.pyx":95 |
| 597 | | * _save = PyEval_SaveThread() |
| 598 | | * result = epoll_wait(fd, events, maxevents, timeout_msec) |
| 599 | | * PyEval_RestoreThread(_save) # <<<<<<<<<<<<<< |
| 600 | | * |
| 601 | | * if result == -1: |
| 602 | | */ |
| 603 | | PyEval_RestoreThread(__pyx_v__save); |
| 604 | | |
| 605 | | /* "twisted/python/_epoll.pyx":97 |
| 606 | | * PyEval_RestoreThread(_save) |
| 607 | | * |
| 608 | | * if result == -1: # <<<<<<<<<<<<<< |
| 609 | | * raise IOError(errno, strerror(errno)) |
| 610 | | * results = [] |
| 611 | | */ |
| 612 | | __pyx_t_1 = (__pyx_v_result == -1); |
| 613 | | if (__pyx_t_1) { |
| 614 | | |
| 615 | | /* "twisted/python/_epoll.pyx":98 |
| 616 | | * |
| 617 | | * if result == -1: |
| 618 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 619 | | * results = [] |
| 620 | | * for i from 0 <= i < result: |
| 621 | | */ |
| 622 | | __pyx_t_2 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 623 | | __Pyx_GOTREF(__pyx_t_2); |
| 624 | | __pyx_t_3 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 625 | | __Pyx_GOTREF(((PyObject *)__pyx_t_3)); |
| 626 | | __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 627 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 628 | | PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); |
| 629 | | __Pyx_GIVEREF(__pyx_t_2); |
| 630 | | PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3)); |
| 631 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); |
| 632 | | __pyx_t_2 = 0; |
| 633 | | __pyx_t_3 = 0; |
| 634 | | __pyx_t_3 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 635 | | __Pyx_GOTREF(__pyx_t_3); |
| 636 | | __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; |
| 637 | | __Pyx_Raise(__pyx_t_3, 0, 0, 0); |
| 638 | | __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; |
| 639 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 640 | | goto __pyx_L6; |
| 641 | | } |
| 642 | | __pyx_L6:; |
| 643 | | |
| 644 | | /* "twisted/python/_epoll.pyx":99 |
| 645 | | * if result == -1: |
| 646 | | * raise IOError(errno, strerror(errno)) |
| 647 | | * results = [] # <<<<<<<<<<<<<< |
| 648 | | * for i from 0 <= i < result: |
| 649 | | * results.append((events[i].data.fd, <int>events[i].events)) |
| 650 | | */ |
| 651 | | __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 652 | | __Pyx_GOTREF(((PyObject *)__pyx_t_3)); |
| 653 | | __pyx_v_results = __pyx_t_3; |
| 654 | | __pyx_t_3 = 0; |
| 655 | | |
| 656 | | /* "twisted/python/_epoll.pyx":100 |
| 657 | | * raise IOError(errno, strerror(errno)) |
| 658 | | * results = [] |
| 659 | | * for i from 0 <= i < result: # <<<<<<<<<<<<<< |
| 660 | | * results.append((events[i].data.fd, <int>events[i].events)) |
| 661 | | * return results |
| 662 | | */ |
| 663 | | __pyx_t_5 = __pyx_v_result; |
| 664 | | for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { |
| 665 | | |
| 666 | | /* "twisted/python/_epoll.pyx":101 |
| 667 | | * results = [] |
| 668 | | * for i from 0 <= i < result: |
| 669 | | * results.append((events[i].data.fd, <int>events[i].events)) # <<<<<<<<<<<<<< |
| 670 | | * return results |
| 671 | | * finally: |
| 672 | | */ |
| 673 | | if (unlikely(((PyObject *)__pyx_v_results) == Py_None)) { |
| 674 | | PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 675 | | } |
| 676 | | __pyx_t_3 = PyInt_FromLong((__pyx_v_events[__pyx_v_i]).data.fd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 677 | | __Pyx_GOTREF(__pyx_t_3); |
| 678 | | __pyx_t_4 = PyInt_FromLong(((int)(__pyx_v_events[__pyx_v_i]).events)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 679 | | __Pyx_GOTREF(__pyx_t_4); |
| 680 | | __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 681 | | __Pyx_GOTREF(((PyObject *)__pyx_t_2)); |
| 682 | | PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); |
| 683 | | __Pyx_GIVEREF(__pyx_t_3); |
| 684 | | PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); |
| 685 | | __Pyx_GIVEREF(__pyx_t_4); |
| 686 | | __pyx_t_3 = 0; |
| 687 | | __pyx_t_4 = 0; |
| 688 | | __pyx_t_6 = PyList_Append(__pyx_v_results, ((PyObject *)__pyx_t_2)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L4;} |
| 689 | | __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; |
| 690 | | } |
| 691 | | |
| 692 | | /* "twisted/python/_epoll.pyx":102 |
| 693 | | * for i from 0 <= i < result: |
| 694 | | * results.append((events[i].data.fd, <int>events[i].events)) |
| 695 | | * return results # <<<<<<<<<<<<<< |
| 696 | | * finally: |
| 697 | | * free(events) |
| 698 | | */ |
| 699 | | __Pyx_XDECREF(__pyx_r); |
| 700 | | __Pyx_INCREF(((PyObject *)__pyx_v_results)); |
| 701 | | __pyx_r = ((PyObject *)__pyx_v_results); |
| 702 | | goto __pyx_L3; |
| 703 | | } |
| 704 | | |
| 705 | | /* "twisted/python/_epoll.pyx":104 |
| 706 | | * return results |
| 707 | | * finally: |
| 708 | | * free(events) # <<<<<<<<<<<<<< |
| 709 | | * |
| 710 | | * cdef class epoll: |
| 711 | | */ |
| 712 | | /*finally:*/ { |
| 713 | | int __pyx_why; |
| 714 | | PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb; |
| 715 | | int __pyx_exc_lineno; |
| 716 | | __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0; |
| 717 | | __pyx_why = 0; goto __pyx_L5; |
| 718 | | __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0; |
| 719 | | __pyx_why = 3; goto __pyx_L5; |
| 720 | | __pyx_L4: { |
| 721 | | __pyx_why = 4; |
| 722 | | __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; |
| 723 | | __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; |
| 724 | | __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; |
| 725 | | __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb); |
| 726 | | __pyx_exc_lineno = __pyx_lineno; |
| 727 | | goto __pyx_L5; |
| 728 | | } |
| 729 | | __pyx_L5:; |
| 730 | | free(__pyx_v_events); |
| 731 | | switch (__pyx_why) { |
| 732 | | case 3: goto __pyx_L0; |
| 733 | | case 4: { |
| 734 | | __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb); |
| 735 | | __pyx_lineno = __pyx_exc_lineno; |
| 736 | | __pyx_exc_type = 0; |
| 737 | | __pyx_exc_value = 0; |
| 738 | | __pyx_exc_tb = 0; |
| 739 | | goto __pyx_L1_error; |
| 740 | | } |
| 741 | | } |
| 742 | | } |
| 743 | | |
| 744 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 745 | | goto __pyx_L0; |
| 746 | | __pyx_L1_error:; |
| 747 | | __Pyx_XDECREF(__pyx_t_2); |
| 748 | | __Pyx_XDECREF(__pyx_t_3); |
| 749 | | __Pyx_XDECREF(__pyx_t_4); |
| 750 | | __Pyx_AddTraceback("twisted.python._epoll.call_epoll_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 751 | | __pyx_r = 0; |
| 752 | | __pyx_L0:; |
| 753 | | __Pyx_XDECREF(__pyx_v_results); |
| 754 | | __Pyx_XGIVEREF(__pyx_r); |
| 755 | | __Pyx_RefNannyFinishContext(); |
| 756 | | return __pyx_r; |
| 757 | | } |
| 758 | | |
| 759 | | /* "twisted/python/_epoll.pyx":114 |
| 760 | | * cdef int initialized |
| 761 | | * |
| 762 | | * def __init__(self, int size=1023): # <<<<<<<<<<<<<< |
| 763 | | * """ |
| 764 | | * The constructor arguments are compatible with select.poll.__init__. |
| 765 | | */ |
| 766 | | |
| 767 | | static int __pyx_pf_7twisted_6python_6_epoll_5epoll___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 768 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll___init__[] = "\n The constructor arguments are compatible with select.poll.__init__.\n "; |
| 769 | | struct wrapperbase __pyx_wrapperbase_7twisted_6python_6_epoll_5epoll___init__; |
| 770 | | static int __pyx_pf_7twisted_6python_6_epoll_5epoll___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 771 | | int __pyx_v_size; |
| 772 | | int __pyx_r; |
| 773 | | __Pyx_RefNannyDeclarations |
| 774 | | int __pyx_t_1; |
| 775 | | PyObject *__pyx_t_2 = NULL; |
| 776 | | PyObject *__pyx_t_3 = NULL; |
| 777 | | PyObject *__pyx_t_4 = NULL; |
| 778 | | int __pyx_lineno = 0; |
| 779 | | const char *__pyx_filename = NULL; |
| 780 | | int __pyx_clineno = 0; |
| 781 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0}; |
| 782 | | __Pyx_RefNannySetupContext("__init__"); |
| 783 | | { |
| 784 | | PyObject* values[1] = {0}; |
| 785 | | if (unlikely(__pyx_kwds)) { |
| 786 | | Py_ssize_t kw_args; |
| 787 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 788 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 789 | | case 0: break; |
| 790 | | default: goto __pyx_L5_argtuple_error; |
| 791 | | } |
| 792 | | kw_args = PyDict_Size(__pyx_kwds); |
| 793 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 794 | | case 0: |
| 795 | | if (kw_args > 0) { |
| 796 | | PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size); |
| 797 | | if (value) { values[0] = value; kw_args--; } |
| 798 | | } |
| 799 | | } |
| 800 | | if (unlikely(kw_args > 0)) { |
| 801 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 802 | | } |
| 803 | | } else { |
| 804 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 805 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 806 | | case 0: break; |
| 807 | | default: goto __pyx_L5_argtuple_error; |
| 808 | | } |
| 809 | | } |
| 810 | | if (values[0]) { |
| 811 | | __pyx_v_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 812 | | } else { |
| 813 | | __pyx_v_size = ((int)1023); |
| 814 | | } |
| 815 | | } |
| 816 | | goto __pyx_L4_argument_unpacking_done; |
| 817 | | __pyx_L5_argtuple_error:; |
| 818 | | __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 819 | | __pyx_L3_error:; |
| 820 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 821 | | __Pyx_RefNannyFinishContext(); |
| 822 | | return -1; |
| 823 | | __pyx_L4_argument_unpacking_done:; |
| 824 | | |
| 825 | | /* "twisted/python/_epoll.pyx":118 |
| 826 | | * The constructor arguments are compatible with select.poll.__init__. |
| 827 | | * """ |
| 828 | | * self.fd = epoll_create(size) # <<<<<<<<<<<<<< |
| 829 | | * if self.fd == -1: |
| 830 | | * raise IOError(errno, strerror(errno)) |
| 831 | | */ |
| 832 | | ((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd = epoll_create(__pyx_v_size); |
| 833 | | |
| 834 | | /* "twisted/python/_epoll.pyx":119 |
| 835 | | * """ |
| 836 | | * self.fd = epoll_create(size) |
| 837 | | * if self.fd == -1: # <<<<<<<<<<<<<< |
| 838 | | * raise IOError(errno, strerror(errno)) |
| 839 | | * self.initialized = 1 |
| 840 | | */ |
| 841 | | __pyx_t_1 = (((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd == -1); |
| 842 | | if (__pyx_t_1) { |
| 843 | | |
| 844 | | /* "twisted/python/_epoll.pyx":120 |
| 845 | | * self.fd = epoll_create(size) |
| 846 | | * if self.fd == -1: |
| 847 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 848 | | * self.initialized = 1 |
| 849 | | * |
| 850 | | */ |
| 851 | | __pyx_t_2 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 852 | | __Pyx_GOTREF(__pyx_t_2); |
| 853 | | __pyx_t_3 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 854 | | __Pyx_GOTREF(((PyObject *)__pyx_t_3)); |
| 855 | | __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 856 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 857 | | PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); |
| 858 | | __Pyx_GIVEREF(__pyx_t_2); |
| 859 | | PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3)); |
| 860 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); |
| 861 | | __pyx_t_2 = 0; |
| 862 | | __pyx_t_3 = 0; |
| 863 | | __pyx_t_3 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 864 | | __Pyx_GOTREF(__pyx_t_3); |
| 865 | | __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; |
| 866 | | __Pyx_Raise(__pyx_t_3, 0, 0, 0); |
| 867 | | __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; |
| 868 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 869 | | goto __pyx_L6; |
| 870 | | } |
| 871 | | __pyx_L6:; |
| 872 | | |
| 873 | | /* "twisted/python/_epoll.pyx":121 |
| 874 | | * if self.fd == -1: |
| 875 | | * raise IOError(errno, strerror(errno)) |
| 876 | | * self.initialized = 1 # <<<<<<<<<<<<<< |
| 877 | | * |
| 878 | | * def __dealloc__(self): |
| 879 | | */ |
| 880 | | ((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->initialized = 1; |
| 881 | | |
| 882 | | __pyx_r = 0; |
| 883 | | goto __pyx_L0; |
| 884 | | __pyx_L1_error:; |
| 885 | | __Pyx_XDECREF(__pyx_t_2); |
| 886 | | __Pyx_XDECREF(__pyx_t_3); |
| 887 | | __Pyx_XDECREF(__pyx_t_4); |
| 888 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 889 | | __pyx_r = -1; |
| 890 | | __pyx_L0:; |
| 891 | | __Pyx_RefNannyFinishContext(); |
| 892 | | return __pyx_r; |
| 893 | | } |
| 894 | | |
| 895 | | /* "twisted/python/_epoll.pyx":123 |
| 896 | | * self.initialized = 1 |
| 897 | | * |
| 898 | | * def __dealloc__(self): # <<<<<<<<<<<<<< |
| 899 | | * if self.initialized: |
| 900 | | * close(self.fd) |
| 901 | | */ |
| 902 | | |
| 903 | | static void __pyx_pf_7twisted_6python_6_epoll_5epoll_1__dealloc__(PyObject *__pyx_v_self); /*proto*/ |
| 904 | | static void __pyx_pf_7twisted_6python_6_epoll_5epoll_1__dealloc__(PyObject *__pyx_v_self) { |
| 905 | | __Pyx_RefNannyDeclarations |
| 906 | | __Pyx_RefNannySetupContext("__dealloc__"); |
| 907 | | |
| 908 | | /* "twisted/python/_epoll.pyx":124 |
| 909 | | * |
| 910 | | * def __dealloc__(self): |
| 911 | | * if self.initialized: # <<<<<<<<<<<<<< |
| 912 | | * close(self.fd) |
| 913 | | * self.initialized = 0 |
| 914 | | */ |
| 915 | | if (((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->initialized) { |
| 916 | | |
| 917 | | /* "twisted/python/_epoll.pyx":125 |
| 918 | | * def __dealloc__(self): |
| 919 | | * if self.initialized: |
| 920 | | * close(self.fd) # <<<<<<<<<<<<<< |
| 921 | | * self.initialized = 0 |
| 922 | | * |
| 923 | | */ |
| 924 | | close(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd); |
| 925 | | |
| 926 | | /* "twisted/python/_epoll.pyx":126 |
| 927 | | * if self.initialized: |
| 928 | | * close(self.fd) |
| 929 | | * self.initialized = 0 # <<<<<<<<<<<<<< |
| 930 | | * |
| 931 | | * def close(self): |
| 932 | | */ |
| 933 | | ((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->initialized = 0; |
| 934 | | goto __pyx_L5; |
| 935 | | } |
| 936 | | __pyx_L5:; |
| 937 | | |
| 938 | | __Pyx_RefNannyFinishContext(); |
| 939 | | } |
| 940 | | |
| 941 | | /* "twisted/python/_epoll.pyx":128 |
| 942 | | * self.initialized = 0 |
| 943 | | * |
| 944 | | * def close(self): # <<<<<<<<<<<<<< |
| 945 | | * """ |
| 946 | | * Close the epoll file descriptor. |
| 947 | | */ |
| 948 | | |
| 949 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_2close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ |
| 950 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_2close[] = "\n Close the epoll file descriptor.\n "; |
| 951 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_2close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { |
| 952 | | PyObject *__pyx_r = NULL; |
| 953 | | __Pyx_RefNannyDeclarations |
| 954 | | int __pyx_t_1; |
| 955 | | PyObject *__pyx_t_2 = NULL; |
| 956 | | PyObject *__pyx_t_3 = NULL; |
| 957 | | PyObject *__pyx_t_4 = NULL; |
| 958 | | int __pyx_lineno = 0; |
| 959 | | const char *__pyx_filename = NULL; |
| 960 | | int __pyx_clineno = 0; |
| 961 | | __Pyx_RefNannySetupContext("close"); |
| 962 | | |
| 963 | | /* "twisted/python/_epoll.pyx":132 |
| 964 | | * Close the epoll file descriptor. |
| 965 | | * """ |
| 966 | | * if self.initialized: # <<<<<<<<<<<<<< |
| 967 | | * if close(self.fd) == -1: |
| 968 | | * raise IOError(errno, strerror(errno)) |
| 969 | | */ |
| 970 | | if (((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->initialized) { |
| 971 | | |
| 972 | | /* "twisted/python/_epoll.pyx":133 |
| 973 | | * """ |
| 974 | | * if self.initialized: |
| 975 | | * if close(self.fd) == -1: # <<<<<<<<<<<<<< |
| 976 | | * raise IOError(errno, strerror(errno)) |
| 977 | | * self.initialized = 0 |
| 978 | | */ |
| 979 | | __pyx_t_1 = (close(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd) == -1); |
| 980 | | if (__pyx_t_1) { |
| 981 | | |
| 982 | | /* "twisted/python/_epoll.pyx":134 |
| 983 | | * if self.initialized: |
| 984 | | * if close(self.fd) == -1: |
| 985 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 986 | | * self.initialized = 0 |
| 987 | | * |
| 988 | | */ |
| 989 | | __pyx_t_2 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 990 | | __Pyx_GOTREF(__pyx_t_2); |
| 991 | | __pyx_t_3 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 992 | | __Pyx_GOTREF(((PyObject *)__pyx_t_3)); |
| 993 | | __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 994 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 995 | | PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); |
| 996 | | __Pyx_GIVEREF(__pyx_t_2); |
| 997 | | PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3)); |
| 998 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); |
| 999 | | __pyx_t_2 = 0; |
| 1000 | | __pyx_t_3 = 0; |
| 1001 | | __pyx_t_3 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1002 | | __Pyx_GOTREF(__pyx_t_3); |
| 1003 | | __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; |
| 1004 | | __Pyx_Raise(__pyx_t_3, 0, 0, 0); |
| 1005 | | __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; |
| 1006 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1007 | | goto __pyx_L6; |
| 1008 | | } |
| 1009 | | __pyx_L6:; |
| 1010 | | |
| 1011 | | /* "twisted/python/_epoll.pyx":135 |
| 1012 | | * if close(self.fd) == -1: |
| 1013 | | * raise IOError(errno, strerror(errno)) |
| 1014 | | * self.initialized = 0 # <<<<<<<<<<<<<< |
| 1015 | | * |
| 1016 | | * def fileno(self): |
| 1017 | | */ |
| 1018 | | ((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->initialized = 0; |
| 1019 | | goto __pyx_L5; |
| 1020 | | } |
| 1021 | | __pyx_L5:; |
| 1022 | | |
| 1023 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1024 | | goto __pyx_L0; |
| 1025 | | __pyx_L1_error:; |
| 1026 | | __Pyx_XDECREF(__pyx_t_2); |
| 1027 | | __Pyx_XDECREF(__pyx_t_3); |
| 1028 | | __Pyx_XDECREF(__pyx_t_4); |
| 1029 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.close", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1030 | | __pyx_r = NULL; |
| 1031 | | __pyx_L0:; |
| 1032 | | __Pyx_XGIVEREF(__pyx_r); |
| 1033 | | __Pyx_RefNannyFinishContext(); |
| 1034 | | return __pyx_r; |
| 1035 | | } |
| 1036 | | |
| 1037 | | /* "twisted/python/_epoll.pyx":137 |
| 1038 | | * self.initialized = 0 |
| 1039 | | * |
| 1040 | | * def fileno(self): # <<<<<<<<<<<<<< |
| 1041 | | * """ |
| 1042 | | * Return the epoll file descriptor number. |
| 1043 | | */ |
| 1044 | | |
| 1045 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_3fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ |
| 1046 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_3fileno[] = "\n Return the epoll file descriptor number.\n "; |
| 1047 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_3fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { |
| 1048 | | PyObject *__pyx_r = NULL; |
| 1049 | | __Pyx_RefNannyDeclarations |
| 1050 | | PyObject *__pyx_t_1 = NULL; |
| 1051 | | int __pyx_lineno = 0; |
| 1052 | | const char *__pyx_filename = NULL; |
| 1053 | | int __pyx_clineno = 0; |
| 1054 | | __Pyx_RefNannySetupContext("fileno"); |
| 1055 | | |
| 1056 | | /* "twisted/python/_epoll.pyx":141 |
| 1057 | | * Return the epoll file descriptor number. |
| 1058 | | * """ |
| 1059 | | * return self.fd # <<<<<<<<<<<<<< |
| 1060 | | * |
| 1061 | | * def register(self, int fd, int events): |
| 1062 | | */ |
| 1063 | | __Pyx_XDECREF(__pyx_r); |
| 1064 | | __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1065 | | __Pyx_GOTREF(__pyx_t_1); |
| 1066 | | __pyx_r = __pyx_t_1; |
| 1067 | | __pyx_t_1 = 0; |
| 1068 | | goto __pyx_L0; |
| 1069 | | |
| 1070 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1071 | | goto __pyx_L0; |
| 1072 | | __pyx_L1_error:; |
| 1073 | | __Pyx_XDECREF(__pyx_t_1); |
| 1074 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.fileno", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1075 | | __pyx_r = NULL; |
| 1076 | | __pyx_L0:; |
| 1077 | | __Pyx_XGIVEREF(__pyx_r); |
| 1078 | | __Pyx_RefNannyFinishContext(); |
| 1079 | | return __pyx_r; |
| 1080 | | } |
| 1081 | | |
| 1082 | | /* "twisted/python/_epoll.pyx":143 |
| 1083 | | * return self.fd |
| 1084 | | * |
| 1085 | | * def register(self, int fd, int events): # <<<<<<<<<<<<<< |
| 1086 | | * """ |
| 1087 | | * Add (register) a file descriptor to be monitored by self. |
| 1088 | | */ |
| 1089 | | |
| 1090 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_4register(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 1091 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_4register[] = "\n Add (register) a file descriptor to be monitored by self.\n\n This method is compatible with select.epoll.register in Python 2.6.\n\n Wrap epoll_ctl(2).\n\n @type fd: C{int}\n @param fd: File descriptor to modify\n\n @type events: C{int}\n @param events: A bit set of IN, OUT, PRI, ERR, HUP, and ET.\n\n @raise IOError: Raised if the underlying epoll_ctl() call fails.\n "; |
| 1092 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_4register(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 1093 | | int __pyx_v_fd; |
| 1094 | | int __pyx_v_events; |
| 1095 | | int __pyx_v_result; |
| 1096 | | struct epoll_event __pyx_v_evt; |
| 1097 | | PyObject *__pyx_r = NULL; |
| 1098 | | __Pyx_RefNannyDeclarations |
| 1099 | | PyObject *__pyx_t_1 = NULL; |
| 1100 | | int __pyx_t_2; |
| 1101 | | int __pyx_t_3; |
| 1102 | | PyObject *__pyx_t_4 = NULL; |
| 1103 | | PyObject *__pyx_t_5 = NULL; |
| 1104 | | int __pyx_lineno = 0; |
| 1105 | | const char *__pyx_filename = NULL; |
| 1106 | | int __pyx_clineno = 0; |
| 1107 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fd,&__pyx_n_s__events,0}; |
| 1108 | | __Pyx_RefNannySetupContext("register"); |
| 1109 | | { |
| 1110 | | PyObject* values[2] = {0,0}; |
| 1111 | | if (unlikely(__pyx_kwds)) { |
| 1112 | | Py_ssize_t kw_args; |
| 1113 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1114 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1115 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1116 | | case 0: break; |
| 1117 | | default: goto __pyx_L5_argtuple_error; |
| 1118 | | } |
| 1119 | | kw_args = PyDict_Size(__pyx_kwds); |
| 1120 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1121 | | case 0: |
| 1122 | | values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fd); |
| 1123 | | if (likely(values[0])) kw_args--; |
| 1124 | | else goto __pyx_L5_argtuple_error; |
| 1125 | | case 1: |
| 1126 | | values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__events); |
| 1127 | | if (likely(values[1])) kw_args--; |
| 1128 | | else { |
| 1129 | | __Pyx_RaiseArgtupleInvalid("register", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1130 | | } |
| 1131 | | } |
| 1132 | | if (unlikely(kw_args > 0)) { |
| 1133 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "register") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1134 | | } |
| 1135 | | } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { |
| 1136 | | goto __pyx_L5_argtuple_error; |
| 1137 | | } else { |
| 1138 | | values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1139 | | values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1140 | | } |
| 1141 | | __pyx_v_fd = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1142 | | __pyx_v_events = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1143 | | } |
| 1144 | | goto __pyx_L4_argument_unpacking_done; |
| 1145 | | __pyx_L5_argtuple_error:; |
| 1146 | | __Pyx_RaiseArgtupleInvalid("register", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1147 | | __pyx_L3_error:; |
| 1148 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.register", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1149 | | __Pyx_RefNannyFinishContext(); |
| 1150 | | return NULL; |
| 1151 | | __pyx_L4_argument_unpacking_done:; |
| 1152 | | |
| 1153 | | /* "twisted/python/_epoll.pyx":161 |
| 1154 | | * cdef int result |
| 1155 | | * cdef epoll_event evt |
| 1156 | | * evt.events = events # <<<<<<<<<<<<<< |
| 1157 | | * evt.data.fd = fd |
| 1158 | | * result = epoll_ctl(self.fd, CTL_ADD, fd, &evt) |
| 1159 | | */ |
| 1160 | | __pyx_v_evt.events = __pyx_v_events; |
| 1161 | | |
| 1162 | | /* "twisted/python/_epoll.pyx":162 |
| 1163 | | * cdef epoll_event evt |
| 1164 | | * evt.events = events |
| 1165 | | * evt.data.fd = fd # <<<<<<<<<<<<<< |
| 1166 | | * result = epoll_ctl(self.fd, CTL_ADD, fd, &evt) |
| 1167 | | * if result == -1: |
| 1168 | | */ |
| 1169 | | __pyx_v_evt.data.fd = __pyx_v_fd; |
| 1170 | | |
| 1171 | | /* "twisted/python/_epoll.pyx":163 |
| 1172 | | * evt.events = events |
| 1173 | | * evt.data.fd = fd |
| 1174 | | * result = epoll_ctl(self.fd, CTL_ADD, fd, &evt) # <<<<<<<<<<<<<< |
| 1175 | | * if result == -1: |
| 1176 | | * raise IOError(errno, strerror(errno)) |
| 1177 | | */ |
| 1178 | | __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__CTL_ADD); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1179 | | __Pyx_GOTREF(__pyx_t_1); |
| 1180 | | __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1181 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 1182 | | __pyx_v_result = epoll_ctl(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_t_2, __pyx_v_fd, (&__pyx_v_evt)); |
| 1183 | | |
| 1184 | | /* "twisted/python/_epoll.pyx":164 |
| 1185 | | * evt.data.fd = fd |
| 1186 | | * result = epoll_ctl(self.fd, CTL_ADD, fd, &evt) |
| 1187 | | * if result == -1: # <<<<<<<<<<<<<< |
| 1188 | | * raise IOError(errno, strerror(errno)) |
| 1189 | | * |
| 1190 | | */ |
| 1191 | | __pyx_t_3 = (__pyx_v_result == -1); |
| 1192 | | if (__pyx_t_3) { |
| 1193 | | |
| 1194 | | /* "twisted/python/_epoll.pyx":165 |
| 1195 | | * result = epoll_ctl(self.fd, CTL_ADD, fd, &evt) |
| 1196 | | * if result == -1: |
| 1197 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 1198 | | * |
| 1199 | | * def unregister(self, int fd): |
| 1200 | | */ |
| 1201 | | __pyx_t_1 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1202 | | __Pyx_GOTREF(__pyx_t_1); |
| 1203 | | __pyx_t_4 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1204 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 1205 | | __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1206 | | __Pyx_GOTREF(((PyObject *)__pyx_t_5)); |
| 1207 | | PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); |
| 1208 | | __Pyx_GIVEREF(__pyx_t_1); |
| 1209 | | PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_4)); |
| 1210 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); |
| 1211 | | __pyx_t_1 = 0; |
| 1212 | | __pyx_t_4 = 0; |
| 1213 | | __pyx_t_4 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1214 | | __Pyx_GOTREF(__pyx_t_4); |
| 1215 | | __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; |
| 1216 | | __Pyx_Raise(__pyx_t_4, 0, 0, 0); |
| 1217 | | __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; |
| 1218 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1219 | | goto __pyx_L6; |
| 1220 | | } |
| 1221 | | __pyx_L6:; |
| 1222 | | |
| 1223 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1224 | | goto __pyx_L0; |
| 1225 | | __pyx_L1_error:; |
| 1226 | | __Pyx_XDECREF(__pyx_t_1); |
| 1227 | | __Pyx_XDECREF(__pyx_t_4); |
| 1228 | | __Pyx_XDECREF(__pyx_t_5); |
| 1229 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.register", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1230 | | __pyx_r = NULL; |
| 1231 | | __pyx_L0:; |
| 1232 | | __Pyx_XGIVEREF(__pyx_r); |
| 1233 | | __Pyx_RefNannyFinishContext(); |
| 1234 | | return __pyx_r; |
| 1235 | | } |
| 1236 | | |
| 1237 | | /* "twisted/python/_epoll.pyx":167 |
| 1238 | | * raise IOError(errno, strerror(errno)) |
| 1239 | | * |
| 1240 | | * def unregister(self, int fd): # <<<<<<<<<<<<<< |
| 1241 | | * """ |
| 1242 | | * Remove (unregister) a file descriptor monitored by self. |
| 1243 | | */ |
| 1244 | | |
| 1245 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_5unregister(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd); /*proto*/ |
| 1246 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_5unregister[] = "\n Remove (unregister) a file descriptor monitored by self.\n\n This method is compatible with select.epoll.unregister in Python 2.6.\n\n Wrap epoll_ctl(2).\n\n @type fd: C{int}\n @param fd: File descriptor to modify\n\n @raise IOError: Raised if the underlying epoll_ctl() call fails.\n "; |
| 1247 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_5unregister(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd) { |
| 1248 | | int __pyx_v_fd; |
| 1249 | | int __pyx_v_result; |
| 1250 | | struct epoll_event __pyx_v_evt; |
| 1251 | | PyObject *__pyx_r = NULL; |
| 1252 | | __Pyx_RefNannyDeclarations |
| 1253 | | PyObject *__pyx_t_1 = NULL; |
| 1254 | | int __pyx_t_2; |
| 1255 | | int __pyx_t_3; |
| 1256 | | PyObject *__pyx_t_4 = NULL; |
| 1257 | | PyObject *__pyx_t_5 = NULL; |
| 1258 | | int __pyx_lineno = 0; |
| 1259 | | const char *__pyx_filename = NULL; |
| 1260 | | int __pyx_clineno = 0; |
| 1261 | | __Pyx_RefNannySetupContext("unregister"); |
| 1262 | | assert(__pyx_arg_fd); { |
| 1263 | | __pyx_v_fd = __Pyx_PyInt_AsInt(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1264 | | } |
| 1265 | | goto __pyx_L4_argument_unpacking_done; |
| 1266 | | __pyx_L3_error:; |
| 1267 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.unregister", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1268 | | __Pyx_RefNannyFinishContext(); |
| 1269 | | return NULL; |
| 1270 | | __pyx_L4_argument_unpacking_done:; |
| 1271 | | |
| 1272 | | /* "twisted/python/_epoll.pyx":183 |
| 1273 | | * cdef epoll_event evt |
| 1274 | | * # We don't have to fill evt.events for CTL_DEL. |
| 1275 | | * evt.data.fd = fd # <<<<<<<<<<<<<< |
| 1276 | | * result = epoll_ctl(self.fd, CTL_DEL, fd, &evt) |
| 1277 | | * if result == -1: |
| 1278 | | */ |
| 1279 | | __pyx_v_evt.data.fd = __pyx_v_fd; |
| 1280 | | |
| 1281 | | /* "twisted/python/_epoll.pyx":184 |
| 1282 | | * # We don't have to fill evt.events for CTL_DEL. |
| 1283 | | * evt.data.fd = fd |
| 1284 | | * result = epoll_ctl(self.fd, CTL_DEL, fd, &evt) # <<<<<<<<<<<<<< |
| 1285 | | * if result == -1: |
| 1286 | | * raise IOError(errno, strerror(errno)) |
| 1287 | | */ |
| 1288 | | __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__CTL_DEL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1289 | | __Pyx_GOTREF(__pyx_t_1); |
| 1290 | | __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1291 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 1292 | | __pyx_v_result = epoll_ctl(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_t_2, __pyx_v_fd, (&__pyx_v_evt)); |
| 1293 | | |
| 1294 | | /* "twisted/python/_epoll.pyx":185 |
| 1295 | | * evt.data.fd = fd |
| 1296 | | * result = epoll_ctl(self.fd, CTL_DEL, fd, &evt) |
| 1297 | | * if result == -1: # <<<<<<<<<<<<<< |
| 1298 | | * raise IOError(errno, strerror(errno)) |
| 1299 | | * |
| 1300 | | */ |
| 1301 | | __pyx_t_3 = (__pyx_v_result == -1); |
| 1302 | | if (__pyx_t_3) { |
| 1303 | | |
| 1304 | | /* "twisted/python/_epoll.pyx":186 |
| 1305 | | * result = epoll_ctl(self.fd, CTL_DEL, fd, &evt) |
| 1306 | | * if result == -1: |
| 1307 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 1308 | | * |
| 1309 | | * def modify(self, int fd, int events): |
| 1310 | | */ |
| 1311 | | __pyx_t_1 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1312 | | __Pyx_GOTREF(__pyx_t_1); |
| 1313 | | __pyx_t_4 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1314 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 1315 | | __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1316 | | __Pyx_GOTREF(((PyObject *)__pyx_t_5)); |
| 1317 | | PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); |
| 1318 | | __Pyx_GIVEREF(__pyx_t_1); |
| 1319 | | PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_4)); |
| 1320 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); |
| 1321 | | __pyx_t_1 = 0; |
| 1322 | | __pyx_t_4 = 0; |
| 1323 | | __pyx_t_4 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1324 | | __Pyx_GOTREF(__pyx_t_4); |
| 1325 | | __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; |
| 1326 | | __Pyx_Raise(__pyx_t_4, 0, 0, 0); |
| 1327 | | __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; |
| 1328 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1329 | | goto __pyx_L5; |
| 1330 | | } |
| 1331 | | __pyx_L5:; |
| 1332 | | |
| 1333 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1334 | | goto __pyx_L0; |
| 1335 | | __pyx_L1_error:; |
| 1336 | | __Pyx_XDECREF(__pyx_t_1); |
| 1337 | | __Pyx_XDECREF(__pyx_t_4); |
| 1338 | | __Pyx_XDECREF(__pyx_t_5); |
| 1339 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.unregister", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1340 | | __pyx_r = NULL; |
| 1341 | | __pyx_L0:; |
| 1342 | | __Pyx_XGIVEREF(__pyx_r); |
| 1343 | | __Pyx_RefNannyFinishContext(); |
| 1344 | | return __pyx_r; |
| 1345 | | } |
| 1346 | | |
| 1347 | | /* "twisted/python/_epoll.pyx":188 |
| 1348 | | * raise IOError(errno, strerror(errno)) |
| 1349 | | * |
| 1350 | | * def modify(self, int fd, int events): # <<<<<<<<<<<<<< |
| 1351 | | * """ |
| 1352 | | * Modify the modified state of a file descriptor monitored by self. |
| 1353 | | */ |
| 1354 | | |
| 1355 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_6modify(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 1356 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_6modify[] = "\n Modify the modified state of a file descriptor monitored by self.\n\n This method is compatible with select.epoll.modify in Python 2.6.\n\n Wrap epoll_ctl(2).\n\n @type fd: C{int}\n @param fd: File descriptor to modify\n\n @type events: C{int}\n @param events: A bit set of IN, OUT, PRI, ERR, HUP, and ET.\n\n @raise IOError: Raised if the underlying epoll_ctl() call fails.\n "; |
| 1357 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_6modify(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 1358 | | int __pyx_v_fd; |
| 1359 | | int __pyx_v_events; |
| 1360 | | int __pyx_v_result; |
| 1361 | | struct epoll_event __pyx_v_evt; |
| 1362 | | PyObject *__pyx_r = NULL; |
| 1363 | | __Pyx_RefNannyDeclarations |
| 1364 | | PyObject *__pyx_t_1 = NULL; |
| 1365 | | int __pyx_t_2; |
| 1366 | | int __pyx_t_3; |
| 1367 | | PyObject *__pyx_t_4 = NULL; |
| 1368 | | PyObject *__pyx_t_5 = NULL; |
| 1369 | | int __pyx_lineno = 0; |
| 1370 | | const char *__pyx_filename = NULL; |
| 1371 | | int __pyx_clineno = 0; |
| 1372 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fd,&__pyx_n_s__events,0}; |
| 1373 | | __Pyx_RefNannySetupContext("modify"); |
| 1374 | | { |
| 1375 | | PyObject* values[2] = {0,0}; |
| 1376 | | if (unlikely(__pyx_kwds)) { |
| 1377 | | Py_ssize_t kw_args; |
| 1378 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1379 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1380 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1381 | | case 0: break; |
| 1382 | | default: goto __pyx_L5_argtuple_error; |
| 1383 | | } |
| 1384 | | kw_args = PyDict_Size(__pyx_kwds); |
| 1385 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1386 | | case 0: |
| 1387 | | values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fd); |
| 1388 | | if (likely(values[0])) kw_args--; |
| 1389 | | else goto __pyx_L5_argtuple_error; |
| 1390 | | case 1: |
| 1391 | | values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__events); |
| 1392 | | if (likely(values[1])) kw_args--; |
| 1393 | | else { |
| 1394 | | __Pyx_RaiseArgtupleInvalid("modify", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1395 | | } |
| 1396 | | } |
| 1397 | | if (unlikely(kw_args > 0)) { |
| 1398 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "modify") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1399 | | } |
| 1400 | | } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { |
| 1401 | | goto __pyx_L5_argtuple_error; |
| 1402 | | } else { |
| 1403 | | values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1404 | | values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1405 | | } |
| 1406 | | __pyx_v_fd = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1407 | | __pyx_v_events = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1408 | | } |
| 1409 | | goto __pyx_L4_argument_unpacking_done; |
| 1410 | | __pyx_L5_argtuple_error:; |
| 1411 | | __Pyx_RaiseArgtupleInvalid("modify", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1412 | | __pyx_L3_error:; |
| 1413 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.modify", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1414 | | __Pyx_RefNannyFinishContext(); |
| 1415 | | return NULL; |
| 1416 | | __pyx_L4_argument_unpacking_done:; |
| 1417 | | |
| 1418 | | /* "twisted/python/_epoll.pyx":206 |
| 1419 | | * cdef int result |
| 1420 | | * cdef epoll_event evt |
| 1421 | | * evt.events = events # <<<<<<<<<<<<<< |
| 1422 | | * evt.data.fd = fd |
| 1423 | | * result = epoll_ctl(self.fd, CTL_MOD, fd, &evt) |
| 1424 | | */ |
| 1425 | | __pyx_v_evt.events = __pyx_v_events; |
| 1426 | | |
| 1427 | | /* "twisted/python/_epoll.pyx":207 |
| 1428 | | * cdef epoll_event evt |
| 1429 | | * evt.events = events |
| 1430 | | * evt.data.fd = fd # <<<<<<<<<<<<<< |
| 1431 | | * result = epoll_ctl(self.fd, CTL_MOD, fd, &evt) |
| 1432 | | * if result == -1: |
| 1433 | | */ |
| 1434 | | __pyx_v_evt.data.fd = __pyx_v_fd; |
| 1435 | | |
| 1436 | | /* "twisted/python/_epoll.pyx":208 |
| 1437 | | * evt.events = events |
| 1438 | | * evt.data.fd = fd |
| 1439 | | * result = epoll_ctl(self.fd, CTL_MOD, fd, &evt) # <<<<<<<<<<<<<< |
| 1440 | | * if result == -1: |
| 1441 | | * raise IOError(errno, strerror(errno)) |
| 1442 | | */ |
| 1443 | | __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__CTL_MOD); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1444 | | __Pyx_GOTREF(__pyx_t_1); |
| 1445 | | __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1446 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 1447 | | __pyx_v_result = epoll_ctl(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_t_2, __pyx_v_fd, (&__pyx_v_evt)); |
| 1448 | | |
| 1449 | | /* "twisted/python/_epoll.pyx":209 |
| 1450 | | * evt.data.fd = fd |
| 1451 | | * result = epoll_ctl(self.fd, CTL_MOD, fd, &evt) |
| 1452 | | * if result == -1: # <<<<<<<<<<<<<< |
| 1453 | | * raise IOError(errno, strerror(errno)) |
| 1454 | | * |
| 1455 | | */ |
| 1456 | | __pyx_t_3 = (__pyx_v_result == -1); |
| 1457 | | if (__pyx_t_3) { |
| 1458 | | |
| 1459 | | /* "twisted/python/_epoll.pyx":210 |
| 1460 | | * result = epoll_ctl(self.fd, CTL_MOD, fd, &evt) |
| 1461 | | * if result == -1: |
| 1462 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 1463 | | * |
| 1464 | | * def _control(self, int op, int fd, int events): |
| 1465 | | */ |
| 1466 | | __pyx_t_1 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1467 | | __Pyx_GOTREF(__pyx_t_1); |
| 1468 | | __pyx_t_4 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1469 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 1470 | | __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1471 | | __Pyx_GOTREF(((PyObject *)__pyx_t_5)); |
| 1472 | | PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); |
| 1473 | | __Pyx_GIVEREF(__pyx_t_1); |
| 1474 | | PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_4)); |
| 1475 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); |
| 1476 | | __pyx_t_1 = 0; |
| 1477 | | __pyx_t_4 = 0; |
| 1478 | | __pyx_t_4 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1479 | | __Pyx_GOTREF(__pyx_t_4); |
| 1480 | | __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; |
| 1481 | | __Pyx_Raise(__pyx_t_4, 0, 0, 0); |
| 1482 | | __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; |
| 1483 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1484 | | goto __pyx_L6; |
| 1485 | | } |
| 1486 | | __pyx_L6:; |
| 1487 | | |
| 1488 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1489 | | goto __pyx_L0; |
| 1490 | | __pyx_L1_error:; |
| 1491 | | __Pyx_XDECREF(__pyx_t_1); |
| 1492 | | __Pyx_XDECREF(__pyx_t_4); |
| 1493 | | __Pyx_XDECREF(__pyx_t_5); |
| 1494 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.modify", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1495 | | __pyx_r = NULL; |
| 1496 | | __pyx_L0:; |
| 1497 | | __Pyx_XGIVEREF(__pyx_r); |
| 1498 | | __Pyx_RefNannyFinishContext(); |
| 1499 | | return __pyx_r; |
| 1500 | | } |
| 1501 | | |
| 1502 | | /* "twisted/python/_epoll.pyx":212 |
| 1503 | | * raise IOError(errno, strerror(errno)) |
| 1504 | | * |
| 1505 | | * def _control(self, int op, int fd, int events): # <<<<<<<<<<<<<< |
| 1506 | | * """ |
| 1507 | | * Modify the monitored state of a particular file descriptor. |
| 1508 | | */ |
| 1509 | | |
| 1510 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_7_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 1511 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_7_control[] = "\n Modify the monitored state of a particular file descriptor.\n \n Wrap epoll_ctl(2).\n\n @type op: C{int}\n @param op: One of CTL_ADD, CTL_DEL, or CTL_MOD\n\n @type fd: C{int}\n @param fd: File descriptor to modify\n\n @type events: C{int}\n @param events: A bit set of IN, OUT, PRI, ERR, HUP, and ET.\n\n @raise IOError: Raised if the underlying epoll_ctl() call fails.\n "; |
| 1512 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_7_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 1513 | | int __pyx_v_op; |
| 1514 | | int __pyx_v_fd; |
| 1515 | | int __pyx_v_events; |
| 1516 | | int __pyx_v_result; |
| 1517 | | struct epoll_event __pyx_v_evt; |
| 1518 | | PyObject *__pyx_r = NULL; |
| 1519 | | __Pyx_RefNannyDeclarations |
| 1520 | | int __pyx_t_1; |
| 1521 | | PyObject *__pyx_t_2 = NULL; |
| 1522 | | PyObject *__pyx_t_3 = NULL; |
| 1523 | | PyObject *__pyx_t_4 = NULL; |
| 1524 | | int __pyx_lineno = 0; |
| 1525 | | const char *__pyx_filename = NULL; |
| 1526 | | int __pyx_clineno = 0; |
| 1527 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__op,&__pyx_n_s__fd,&__pyx_n_s__events,0}; |
| 1528 | | __Pyx_RefNannySetupContext("_control"); |
| 1529 | | { |
| 1530 | | PyObject* values[3] = {0,0,0}; |
| 1531 | | if (unlikely(__pyx_kwds)) { |
| 1532 | | Py_ssize_t kw_args; |
| 1533 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1534 | | case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); |
| 1535 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1536 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1537 | | case 0: break; |
| 1538 | | default: goto __pyx_L5_argtuple_error; |
| 1539 | | } |
| 1540 | | kw_args = PyDict_Size(__pyx_kwds); |
| 1541 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1542 | | case 0: |
| 1543 | | values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op); |
| 1544 | | if (likely(values[0])) kw_args--; |
| 1545 | | else goto __pyx_L5_argtuple_error; |
| 1546 | | case 1: |
| 1547 | | values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fd); |
| 1548 | | if (likely(values[1])) kw_args--; |
| 1549 | | else { |
| 1550 | | __Pyx_RaiseArgtupleInvalid("_control", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1551 | | } |
| 1552 | | case 2: |
| 1553 | | values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__events); |
| 1554 | | if (likely(values[2])) kw_args--; |
| 1555 | | else { |
| 1556 | | __Pyx_RaiseArgtupleInvalid("_control", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1557 | | } |
| 1558 | | } |
| 1559 | | if (unlikely(kw_args > 0)) { |
| 1560 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_control") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1561 | | } |
| 1562 | | } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { |
| 1563 | | goto __pyx_L5_argtuple_error; |
| 1564 | | } else { |
| 1565 | | values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1566 | | values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1567 | | values[2] = PyTuple_GET_ITEM(__pyx_args, 2); |
| 1568 | | } |
| 1569 | | __pyx_v_op = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_op == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1570 | | __pyx_v_fd = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1571 | | __pyx_v_events = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1572 | | } |
| 1573 | | goto __pyx_L4_argument_unpacking_done; |
| 1574 | | __pyx_L5_argtuple_error:; |
| 1575 | | __Pyx_RaiseArgtupleInvalid("_control", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1576 | | __pyx_L3_error:; |
| 1577 | | __Pyx_AddTraceback("twisted.python._epoll.epoll._control", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1578 | | __Pyx_RefNannyFinishContext(); |
| 1579 | | return NULL; |
| 1580 | | __pyx_L4_argument_unpacking_done:; |
| 1581 | | |
| 1582 | | /* "twisted/python/_epoll.pyx":231 |
| 1583 | | * cdef int result |
| 1584 | | * cdef epoll_event evt |
| 1585 | | * evt.events = events # <<<<<<<<<<<<<< |
| 1586 | | * evt.data.fd = fd |
| 1587 | | * result = epoll_ctl(self.fd, op, fd, &evt) |
| 1588 | | */ |
| 1589 | | __pyx_v_evt.events = __pyx_v_events; |
| 1590 | | |
| 1591 | | /* "twisted/python/_epoll.pyx":232 |
| 1592 | | * cdef epoll_event evt |
| 1593 | | * evt.events = events |
| 1594 | | * evt.data.fd = fd # <<<<<<<<<<<<<< |
| 1595 | | * result = epoll_ctl(self.fd, op, fd, &evt) |
| 1596 | | * if result == -1: |
| 1597 | | */ |
| 1598 | | __pyx_v_evt.data.fd = __pyx_v_fd; |
| 1599 | | |
| 1600 | | /* "twisted/python/_epoll.pyx":233 |
| 1601 | | * evt.events = events |
| 1602 | | * evt.data.fd = fd |
| 1603 | | * result = epoll_ctl(self.fd, op, fd, &evt) # <<<<<<<<<<<<<< |
| 1604 | | * if result == -1: |
| 1605 | | * raise IOError(errno, strerror(errno)) |
| 1606 | | */ |
| 1607 | | __pyx_v_result = epoll_ctl(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_v_op, __pyx_v_fd, (&__pyx_v_evt)); |
| 1608 | | |
| 1609 | | /* "twisted/python/_epoll.pyx":234 |
| 1610 | | * evt.data.fd = fd |
| 1611 | | * result = epoll_ctl(self.fd, op, fd, &evt) |
| 1612 | | * if result == -1: # <<<<<<<<<<<<<< |
| 1613 | | * raise IOError(errno, strerror(errno)) |
| 1614 | | * |
| 1615 | | */ |
| 1616 | | __pyx_t_1 = (__pyx_v_result == -1); |
| 1617 | | if (__pyx_t_1) { |
| 1618 | | |
| 1619 | | /* "twisted/python/_epoll.pyx":235 |
| 1620 | | * result = epoll_ctl(self.fd, op, fd, &evt) |
| 1621 | | * if result == -1: |
| 1622 | | * raise IOError(errno, strerror(errno)) # <<<<<<<<<<<<<< |
| 1623 | | * |
| 1624 | | * def wait(self, unsigned int maxevents, int timeout): |
| 1625 | | */ |
| 1626 | | __pyx_t_2 = PyInt_FromLong(errno); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1627 | | __Pyx_GOTREF(__pyx_t_2); |
| 1628 | | __pyx_t_3 = PyBytes_FromString(strerror(errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1629 | | __Pyx_GOTREF(((PyObject *)__pyx_t_3)); |
| 1630 | | __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1631 | | __Pyx_GOTREF(((PyObject *)__pyx_t_4)); |
| 1632 | | PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); |
| 1633 | | __Pyx_GIVEREF(__pyx_t_2); |
| 1634 | | PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3)); |
| 1635 | | __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); |
| 1636 | | __pyx_t_2 = 0; |
| 1637 | | __pyx_t_3 = 0; |
| 1638 | | __pyx_t_3 = PyObject_Call(__pyx_builtin_IOError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1639 | | __Pyx_GOTREF(__pyx_t_3); |
| 1640 | | __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; |
| 1641 | | __Pyx_Raise(__pyx_t_3, 0, 0, 0); |
| 1642 | | __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; |
| 1643 | | {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1644 | | goto __pyx_L6; |
| 1645 | | } |
| 1646 | | __pyx_L6:; |
| 1647 | | |
| 1648 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1649 | | goto __pyx_L0; |
| 1650 | | __pyx_L1_error:; |
| 1651 | | __Pyx_XDECREF(__pyx_t_2); |
| 1652 | | __Pyx_XDECREF(__pyx_t_3); |
| 1653 | | __Pyx_XDECREF(__pyx_t_4); |
| 1654 | | __Pyx_AddTraceback("twisted.python._epoll.epoll._control", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1655 | | __pyx_r = NULL; |
| 1656 | | __pyx_L0:; |
| 1657 | | __Pyx_XGIVEREF(__pyx_r); |
| 1658 | | __Pyx_RefNannyFinishContext(); |
| 1659 | | return __pyx_r; |
| 1660 | | } |
| 1661 | | |
| 1662 | | /* "twisted/python/_epoll.pyx":237 |
| 1663 | | * raise IOError(errno, strerror(errno)) |
| 1664 | | * |
| 1665 | | * def wait(self, unsigned int maxevents, int timeout): # <<<<<<<<<<<<<< |
| 1666 | | * """ |
| 1667 | | * Wait for an I/O event, wrap epoll_wait(2). |
| 1668 | | */ |
| 1669 | | |
| 1670 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_8wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 1671 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_8wait[] = "\n Wait for an I/O event, wrap epoll_wait(2).\n\n @type maxevents: C{int}\n @param maxevents: Maximum number of events returned.\n\n @type timeout: C{int}\n @param timeout: Maximum time in milliseconds waiting for events. 0\n makes it return immediately whereas -1 makes it wait indefinitely.\n \n @raise IOError: Raised if the underlying epoll_wait() call fails.\n "; |
| 1672 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_8wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 1673 | | unsigned int __pyx_v_maxevents; |
| 1674 | | int __pyx_v_timeout; |
| 1675 | | PyObject *__pyx_r = NULL; |
| 1676 | | __Pyx_RefNannyDeclarations |
| 1677 | | PyObject *__pyx_t_1 = NULL; |
| 1678 | | int __pyx_lineno = 0; |
| 1679 | | const char *__pyx_filename = NULL; |
| 1680 | | int __pyx_clineno = 0; |
| 1681 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__maxevents,&__pyx_n_s__timeout,0}; |
| 1682 | | __Pyx_RefNannySetupContext("wait"); |
| 1683 | | { |
| 1684 | | PyObject* values[2] = {0,0}; |
| 1685 | | if (unlikely(__pyx_kwds)) { |
| 1686 | | Py_ssize_t kw_args; |
| 1687 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1688 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1689 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1690 | | case 0: break; |
| 1691 | | default: goto __pyx_L5_argtuple_error; |
| 1692 | | } |
| 1693 | | kw_args = PyDict_Size(__pyx_kwds); |
| 1694 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1695 | | case 0: |
| 1696 | | values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxevents); |
| 1697 | | if (likely(values[0])) kw_args--; |
| 1698 | | else goto __pyx_L5_argtuple_error; |
| 1699 | | case 1: |
| 1700 | | values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__timeout); |
| 1701 | | if (likely(values[1])) kw_args--; |
| 1702 | | else { |
| 1703 | | __Pyx_RaiseArgtupleInvalid("wait", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1704 | | } |
| 1705 | | } |
| 1706 | | if (unlikely(kw_args > 0)) { |
| 1707 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "wait") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1708 | | } |
| 1709 | | } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { |
| 1710 | | goto __pyx_L5_argtuple_error; |
| 1711 | | } else { |
| 1712 | | values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1713 | | values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1714 | | } |
| 1715 | | __pyx_v_maxevents = __Pyx_PyInt_AsUnsignedInt(values[0]); if (unlikely((__pyx_v_maxevents == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1716 | | __pyx_v_timeout = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_timeout == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1717 | | } |
| 1718 | | goto __pyx_L4_argument_unpacking_done; |
| 1719 | | __pyx_L5_argtuple_error:; |
| 1720 | | __Pyx_RaiseArgtupleInvalid("wait", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1721 | | __pyx_L3_error:; |
| 1722 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1723 | | __Pyx_RefNannyFinishContext(); |
| 1724 | | return NULL; |
| 1725 | | __pyx_L4_argument_unpacking_done:; |
| 1726 | | |
| 1727 | | /* "twisted/python/_epoll.pyx":250 |
| 1728 | | * @raise IOError: Raised if the underlying epoll_wait() call fails. |
| 1729 | | * """ |
| 1730 | | * return call_epoll_wait(self.fd, maxevents, timeout) # <<<<<<<<<<<<<< |
| 1731 | | * |
| 1732 | | * def poll(self, float timeout=-1, unsigned int maxevents=1024): |
| 1733 | | */ |
| 1734 | | __Pyx_XDECREF(__pyx_r); |
| 1735 | | __pyx_t_1 = __pyx_f_7twisted_6python_6_epoll_call_epoll_wait(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_v_maxevents, __pyx_v_timeout); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1736 | | __Pyx_GOTREF(__pyx_t_1); |
| 1737 | | __pyx_r = __pyx_t_1; |
| 1738 | | __pyx_t_1 = 0; |
| 1739 | | goto __pyx_L0; |
| 1740 | | |
| 1741 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1742 | | goto __pyx_L0; |
| 1743 | | __pyx_L1_error:; |
| 1744 | | __Pyx_XDECREF(__pyx_t_1); |
| 1745 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1746 | | __pyx_r = NULL; |
| 1747 | | __pyx_L0:; |
| 1748 | | __Pyx_XGIVEREF(__pyx_r); |
| 1749 | | __Pyx_RefNannyFinishContext(); |
| 1750 | | return __pyx_r; |
| 1751 | | } |
| 1752 | | |
| 1753 | | /* "twisted/python/_epoll.pyx":252 |
| 1754 | | * return call_epoll_wait(self.fd, maxevents, timeout) |
| 1755 | | * |
| 1756 | | * def poll(self, float timeout=-1, unsigned int maxevents=1024): # <<<<<<<<<<<<<< |
| 1757 | | * """ |
| 1758 | | * Wait for an I/O event, wrap epoll_wait(2). |
| 1759 | | */ |
| 1760 | | |
| 1761 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_9poll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ |
| 1762 | | static char __pyx_doc_7twisted_6python_6_epoll_5epoll_9poll[] = "\n Wait for an I/O event, wrap epoll_wait(2).\n\n This method is compatible with select.epoll.poll in Python 2.6.\n\n @type maxevents: C{int}\n @param maxevents: Maximum number of events returned.\n\n @type timeout: C{int}\n @param timeout: Maximum time waiting for events. 0 makes it return\n immediately whereas -1 makes it wait indefinitely.\n \n @raise IOError: Raised if the underlying epoll_wait() call fails.\n "; |
| 1763 | | static PyObject *__pyx_pf_7twisted_6python_6_epoll_5epoll_9poll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { |
| 1764 | | float __pyx_v_timeout; |
| 1765 | | unsigned int __pyx_v_maxevents; |
| 1766 | | PyObject *__pyx_r = NULL; |
| 1767 | | __Pyx_RefNannyDeclarations |
| 1768 | | PyObject *__pyx_t_1 = NULL; |
| 1769 | | int __pyx_lineno = 0; |
| 1770 | | const char *__pyx_filename = NULL; |
| 1771 | | int __pyx_clineno = 0; |
| 1772 | | static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__timeout,&__pyx_n_s__maxevents,0}; |
| 1773 | | __Pyx_RefNannySetupContext("poll"); |
| 1774 | | { |
| 1775 | | PyObject* values[2] = {0,0}; |
| 1776 | | if (unlikely(__pyx_kwds)) { |
| 1777 | | Py_ssize_t kw_args; |
| 1778 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1779 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1780 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1781 | | case 0: break; |
| 1782 | | default: goto __pyx_L5_argtuple_error; |
| 1783 | | } |
| 1784 | | kw_args = PyDict_Size(__pyx_kwds); |
| 1785 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1786 | | case 0: |
| 1787 | | if (kw_args > 0) { |
| 1788 | | PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__timeout); |
| 1789 | | if (value) { values[0] = value; kw_args--; } |
| 1790 | | } |
| 1791 | | case 1: |
| 1792 | | if (kw_args > 0) { |
| 1793 | | PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxevents); |
| 1794 | | if (value) { values[1] = value; kw_args--; } |
| 1795 | | } |
| 1796 | | } |
| 1797 | | if (unlikely(kw_args > 0)) { |
| 1798 | | if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "poll") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1799 | | } |
| 1800 | | } else { |
| 1801 | | switch (PyTuple_GET_SIZE(__pyx_args)) { |
| 1802 | | case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); |
| 1803 | | case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); |
| 1804 | | case 0: break; |
| 1805 | | default: goto __pyx_L5_argtuple_error; |
| 1806 | | } |
| 1807 | | } |
| 1808 | | if (values[0]) { |
| 1809 | | __pyx_v_timeout = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_timeout == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1810 | | } else { |
| 1811 | | __pyx_v_timeout = ((float)-1.0); |
| 1812 | | } |
| 1813 | | if (values[1]) { |
| 1814 | | __pyx_v_maxevents = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_maxevents == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1815 | | } else { |
| 1816 | | __pyx_v_maxevents = ((unsigned int)1024); |
| 1817 | | } |
| 1818 | | } |
| 1819 | | goto __pyx_L4_argument_unpacking_done; |
| 1820 | | __pyx_L5_argtuple_error:; |
| 1821 | | __Pyx_RaiseArgtupleInvalid("poll", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} |
| 1822 | | __pyx_L3_error:; |
| 1823 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.poll", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1824 | | __Pyx_RefNannyFinishContext(); |
| 1825 | | return NULL; |
| 1826 | | __pyx_L4_argument_unpacking_done:; |
| 1827 | | |
| 1828 | | /* "twisted/python/_epoll.pyx":267 |
| 1829 | | * @raise IOError: Raised if the underlying epoll_wait() call fails. |
| 1830 | | * """ |
| 1831 | | * return call_epoll_wait(self.fd, maxevents, <int>(timeout * 1000.0)) # <<<<<<<<<<<<<< |
| 1832 | | * |
| 1833 | | * |
| 1834 | | */ |
| 1835 | | __Pyx_XDECREF(__pyx_r); |
| 1836 | | __pyx_t_1 = __pyx_f_7twisted_6python_6_epoll_call_epoll_wait(((struct __pyx_obj_7twisted_6python_6_epoll_epoll *)__pyx_v_self)->fd, __pyx_v_maxevents, ((int)(__pyx_v_timeout * 1000.0))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 1837 | | __Pyx_GOTREF(__pyx_t_1); |
| 1838 | | __pyx_r = __pyx_t_1; |
| 1839 | | __pyx_t_1 = 0; |
| 1840 | | goto __pyx_L0; |
| 1841 | | |
| 1842 | | __pyx_r = Py_None; __Pyx_INCREF(Py_None); |
| 1843 | | goto __pyx_L0; |
| 1844 | | __pyx_L1_error:; |
| 1845 | | __Pyx_XDECREF(__pyx_t_1); |
| 1846 | | __Pyx_AddTraceback("twisted.python._epoll.epoll.poll", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 1847 | | __pyx_r = NULL; |
| 1848 | | __pyx_L0:; |
| 1849 | | __Pyx_XGIVEREF(__pyx_r); |
| 1850 | | __Pyx_RefNannyFinishContext(); |
| 1851 | | return __pyx_r; |
| 1852 | | } |
| 1853 | | |
| 1854 | | static PyObject *__pyx_tp_new_7twisted_6python_6_epoll_epoll(PyTypeObject *t, PyObject *a, PyObject *k) { |
| 1855 | | PyObject *o = (*t->tp_alloc)(t, 0); |
| 1856 | | if (!o) return 0; |
| 1857 | | return o; |
| 1858 | | } |
| 1859 | | |
| 1860 | | static void __pyx_tp_dealloc_7twisted_6python_6_epoll_epoll(PyObject *o) { |
| 1861 | | { |
| 1862 | | PyObject *etype, *eval, *etb; |
| 1863 | | PyErr_Fetch(&etype, &eval, &etb); |
| 1864 | | ++Py_REFCNT(o); |
| 1865 | | __pyx_pf_7twisted_6python_6_epoll_5epoll_1__dealloc__(o); |
| 1866 | | if (PyErr_Occurred()) PyErr_WriteUnraisable(o); |
| 1867 | | --Py_REFCNT(o); |
| 1868 | | PyErr_Restore(etype, eval, etb); |
| 1869 | | } |
| 1870 | | (*Py_TYPE(o)->tp_free)(o); |
| 1871 | | } |
| 1872 | | |
| 1873 | | static PyMethodDef __pyx_methods_7twisted_6python_6_epoll_epoll[] = { |
| 1874 | | {__Pyx_NAMESTR("close"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_2close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_2close)}, |
| 1875 | | {__Pyx_NAMESTR("fileno"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_3fileno, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_3fileno)}, |
| 1876 | | {__Pyx_NAMESTR("register"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_4register, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_4register)}, |
| 1877 | | {__Pyx_NAMESTR("unregister"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_5unregister, METH_O, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_5unregister)}, |
| 1878 | | {__Pyx_NAMESTR("modify"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_6modify, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_6modify)}, |
| 1879 | | {__Pyx_NAMESTR("_control"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_7_control, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_7_control)}, |
| 1880 | | {__Pyx_NAMESTR("wait"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_8wait, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_8wait)}, |
| 1881 | | {__Pyx_NAMESTR("poll"), (PyCFunction)__pyx_pf_7twisted_6python_6_epoll_5epoll_9poll, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_7twisted_6python_6_epoll_5epoll_9poll)}, |
| 1882 | | {0, 0, 0, 0} |
| 1883 | | }; |
| 1884 | | |
| 1885 | | static PyNumberMethods __pyx_tp_as_number_epoll = { |
| 1886 | | 0, /*nb_add*/ |
| 1887 | | 0, /*nb_subtract*/ |
| 1888 | | 0, /*nb_multiply*/ |
| 1889 | | #if PY_MAJOR_VERSION < 3 |
| 1890 | | 0, /*nb_divide*/ |
| 1891 | | #endif |
| 1892 | | 0, /*nb_remainder*/ |
| 1893 | | 0, /*nb_divmod*/ |
| 1894 | | 0, /*nb_power*/ |
| 1895 | | 0, /*nb_negative*/ |
| 1896 | | 0, /*nb_positive*/ |
| 1897 | | 0, /*nb_absolute*/ |
| 1898 | | 0, /*nb_nonzero*/ |
| 1899 | | 0, /*nb_invert*/ |
| 1900 | | 0, /*nb_lshift*/ |
| 1901 | | 0, /*nb_rshift*/ |
| 1902 | | 0, /*nb_and*/ |
| 1903 | | 0, /*nb_xor*/ |
| 1904 | | 0, /*nb_or*/ |
| 1905 | | #if PY_MAJOR_VERSION < 3 |
| 1906 | | 0, /*nb_coerce*/ |
| 1907 | | #endif |
| 1908 | | 0, /*nb_int*/ |
| 1909 | | #if PY_MAJOR_VERSION < 3 |
| 1910 | | 0, /*nb_long*/ |
| 1911 | | #else |
| 1912 | | 0, /*reserved*/ |
| 1913 | | #endif |
| 1914 | | 0, /*nb_float*/ |
| 1915 | | #if PY_MAJOR_VERSION < 3 |
| 1916 | | 0, /*nb_oct*/ |
| 1917 | | #endif |
| 1918 | | #if PY_MAJOR_VERSION < 3 |
| 1919 | | 0, /*nb_hex*/ |
| 1920 | | #endif |
| 1921 | | 0, /*nb_inplace_add*/ |
| 1922 | | 0, /*nb_inplace_subtract*/ |
| 1923 | | 0, /*nb_inplace_multiply*/ |
| 1924 | | #if PY_MAJOR_VERSION < 3 |
| 1925 | | 0, /*nb_inplace_divide*/ |
| 1926 | | #endif |
| 1927 | | 0, /*nb_inplace_remainder*/ |
| 1928 | | 0, /*nb_inplace_power*/ |
| 1929 | | 0, /*nb_inplace_lshift*/ |
| 1930 | | 0, /*nb_inplace_rshift*/ |
| 1931 | | 0, /*nb_inplace_and*/ |
| 1932 | | 0, /*nb_inplace_xor*/ |
| 1933 | | 0, /*nb_inplace_or*/ |
| 1934 | | 0, /*nb_floor_divide*/ |
| 1935 | | 0, /*nb_true_divide*/ |
| 1936 | | 0, /*nb_inplace_floor_divide*/ |
| 1937 | | 0, /*nb_inplace_true_divide*/ |
| 1938 | | #if PY_VERSION_HEX >= 0x02050000 |
| 1939 | | 0, /*nb_index*/ |
| 1940 | | #endif |
| 1941 | | }; |
| 1942 | | |
| 1943 | | static PySequenceMethods __pyx_tp_as_sequence_epoll = { |
| 1944 | | 0, /*sq_length*/ |
| 1945 | | 0, /*sq_concat*/ |
| 1946 | | 0, /*sq_repeat*/ |
| 1947 | | 0, /*sq_item*/ |
| 1948 | | 0, /*sq_slice*/ |
| 1949 | | 0, /*sq_ass_item*/ |
| 1950 | | 0, /*sq_ass_slice*/ |
| 1951 | | 0, /*sq_contains*/ |
| 1952 | | 0, /*sq_inplace_concat*/ |
| 1953 | | 0, /*sq_inplace_repeat*/ |
| 1954 | | }; |
| 1955 | | |
| 1956 | | static PyMappingMethods __pyx_tp_as_mapping_epoll = { |
| 1957 | | 0, /*mp_length*/ |
| 1958 | | 0, /*mp_subscript*/ |
| 1959 | | 0, /*mp_ass_subscript*/ |
| 1960 | | }; |
| 1961 | | |
| 1962 | | static PyBufferProcs __pyx_tp_as_buffer_epoll = { |
| 1963 | | #if PY_MAJOR_VERSION < 3 |
| 1964 | | 0, /*bf_getreadbuffer*/ |
| 1965 | | #endif |
| 1966 | | #if PY_MAJOR_VERSION < 3 |
| 1967 | | 0, /*bf_getwritebuffer*/ |
| 1968 | | #endif |
| 1969 | | #if PY_MAJOR_VERSION < 3 |
| 1970 | | 0, /*bf_getsegcount*/ |
| 1971 | | #endif |
| 1972 | | #if PY_MAJOR_VERSION < 3 |
| 1973 | | 0, /*bf_getcharbuffer*/ |
| 1974 | | #endif |
| 1975 | | #if PY_VERSION_HEX >= 0x02060000 |
| 1976 | | 0, /*bf_getbuffer*/ |
| 1977 | | #endif |
| 1978 | | #if PY_VERSION_HEX >= 0x02060000 |
| 1979 | | 0, /*bf_releasebuffer*/ |
| 1980 | | #endif |
| 1981 | | }; |
| 1982 | | |
| 1983 | | static PyTypeObject __pyx_type_7twisted_6python_6_epoll_epoll = { |
| 1984 | | PyVarObject_HEAD_INIT(0, 0) |
| 1985 | | __Pyx_NAMESTR("twisted.python._epoll.epoll"), /*tp_name*/ |
| 1986 | | sizeof(struct __pyx_obj_7twisted_6python_6_epoll_epoll), /*tp_basicsize*/ |
| 1987 | | 0, /*tp_itemsize*/ |
| 1988 | | __pyx_tp_dealloc_7twisted_6python_6_epoll_epoll, /*tp_dealloc*/ |
| 1989 | | 0, /*tp_print*/ |
| 1990 | | 0, /*tp_getattr*/ |
| 1991 | | 0, /*tp_setattr*/ |
| 1992 | | #if PY_MAJOR_VERSION < 3 |
| 1993 | | 0, /*tp_compare*/ |
| 1994 | | #else |
| 1995 | | 0, /*reserved*/ |
| 1996 | | #endif |
| 1997 | | 0, /*tp_repr*/ |
| 1998 | | &__pyx_tp_as_number_epoll, /*tp_as_number*/ |
| 1999 | | &__pyx_tp_as_sequence_epoll, /*tp_as_sequence*/ |
| 2000 | | &__pyx_tp_as_mapping_epoll, /*tp_as_mapping*/ |
| 2001 | | 0, /*tp_hash*/ |
| 2002 | | 0, /*tp_call*/ |
| 2003 | | 0, /*tp_str*/ |
| 2004 | | 0, /*tp_getattro*/ |
| 2005 | | 0, /*tp_setattro*/ |
| 2006 | | &__pyx_tp_as_buffer_epoll, /*tp_as_buffer*/ |
| 2007 | | Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ |
| 2008 | | __Pyx_DOCSTR("\n Represent a set of file descriptors being monitored for events.\n "), /*tp_doc*/ |
| 2009 | | 0, /*tp_traverse*/ |
| 2010 | | 0, /*tp_clear*/ |
| 2011 | | 0, /*tp_richcompare*/ |
| 2012 | | 0, /*tp_weaklistoffset*/ |
| 2013 | | 0, /*tp_iter*/ |
| 2014 | | 0, /*tp_iternext*/ |
| 2015 | | __pyx_methods_7twisted_6python_6_epoll_epoll, /*tp_methods*/ |
| 2016 | | 0, /*tp_members*/ |
| 2017 | | 0, /*tp_getset*/ |
| 2018 | | 0, /*tp_base*/ |
| 2019 | | 0, /*tp_dict*/ |
| 2020 | | 0, /*tp_descr_get*/ |
| 2021 | | 0, /*tp_descr_set*/ |
| 2022 | | 0, /*tp_dictoffset*/ |
| 2023 | | __pyx_pf_7twisted_6python_6_epoll_5epoll___init__, /*tp_init*/ |
| 2024 | | 0, /*tp_alloc*/ |
| 2025 | | __pyx_tp_new_7twisted_6python_6_epoll_epoll, /*tp_new*/ |
| 2026 | | 0, /*tp_free*/ |
| 2027 | | 0, /*tp_is_gc*/ |
| 2028 | | 0, /*tp_bases*/ |
| 2029 | | 0, /*tp_mro*/ |
| 2030 | | 0, /*tp_cache*/ |
| 2031 | | 0, /*tp_subclasses*/ |
| 2032 | | 0, /*tp_weaklist*/ |
| 2033 | | 0, /*tp_del*/ |
| 2034 | | #if PY_VERSION_HEX >= 0x02060000 |
| 2035 | | 0, /*tp_version_tag*/ |
| 2036 | | #endif |
| 2037 | | }; |
| 2038 | | |
| 2039 | | static PyMethodDef __pyx_methods[] = { |
| 2040 | | {0, 0, 0, 0} |
| 2041 | | }; |
| 2042 | | |
| 2043 | | #if PY_MAJOR_VERSION >= 3 |
| 2044 | | static struct PyModuleDef __pyx_moduledef = { |
| 2045 | | PyModuleDef_HEAD_INIT, |
| 2046 | | __Pyx_NAMESTR("_epoll"), |
| 2047 | | __Pyx_DOCSTR(__pyx_k_1), /* m_doc */ |
| 2048 | | -1, /* m_size */ |
| 2049 | | __pyx_methods /* m_methods */, |
| 2050 | | NULL, /* m_reload */ |
| 2051 | | NULL, /* m_traverse */ |
| 2052 | | NULL, /* m_clear */ |
| 2053 | | NULL /* m_free */ |
| 2054 | | }; |
| 2055 | | #endif |
| 2056 | | |
| 2057 | | static __Pyx_StringTabEntry __pyx_string_tab[] = { |
| 2058 | | {&__pyx_n_s__CTL_ADD, __pyx_k__CTL_ADD, sizeof(__pyx_k__CTL_ADD), 0, 0, 1, 1}, |
| 2059 | | {&__pyx_n_s__CTL_DEL, __pyx_k__CTL_DEL, sizeof(__pyx_k__CTL_DEL), 0, 0, 1, 1}, |
| 2060 | | {&__pyx_n_s__CTL_MOD, __pyx_k__CTL_MOD, sizeof(__pyx_k__CTL_MOD), 0, 0, 1, 1}, |
| 2061 | | {&__pyx_n_s__EPOLLERR, __pyx_k__EPOLLERR, sizeof(__pyx_k__EPOLLERR), 0, 0, 1, 1}, |
| 2062 | | {&__pyx_n_s__EPOLLET, __pyx_k__EPOLLET, sizeof(__pyx_k__EPOLLET), 0, 0, 1, 1}, |
| 2063 | | {&__pyx_n_s__EPOLLHUP, __pyx_k__EPOLLHUP, sizeof(__pyx_k__EPOLLHUP), 0, 0, 1, 1}, |
| 2064 | | {&__pyx_n_s__EPOLLIN, __pyx_k__EPOLLIN, sizeof(__pyx_k__EPOLLIN), 0, 0, 1, 1}, |
| 2065 | | {&__pyx_n_s__EPOLLMSG, __pyx_k__EPOLLMSG, sizeof(__pyx_k__EPOLLMSG), 0, 0, 1, 1}, |
| 2066 | | {&__pyx_n_s__EPOLLOUT, __pyx_k__EPOLLOUT, sizeof(__pyx_k__EPOLLOUT), 0, 0, 1, 1}, |
| 2067 | | {&__pyx_n_s__EPOLLPRI, __pyx_k__EPOLLPRI, sizeof(__pyx_k__EPOLLPRI), 0, 0, 1, 1}, |
| 2068 | | {&__pyx_n_s__EPOLLRDBAND, __pyx_k__EPOLLRDBAND, sizeof(__pyx_k__EPOLLRDBAND), 0, 0, 1, 1}, |
| 2069 | | {&__pyx_n_s__EPOLLRDNORM, __pyx_k__EPOLLRDNORM, sizeof(__pyx_k__EPOLLRDNORM), 0, 0, 1, 1}, |
| 2070 | | {&__pyx_n_s__EPOLLWRBAND, __pyx_k__EPOLLWRBAND, sizeof(__pyx_k__EPOLLWRBAND), 0, 0, 1, 1}, |
| 2071 | | {&__pyx_n_s__EPOLLWRNORM, __pyx_k__EPOLLWRNORM, sizeof(__pyx_k__EPOLLWRNORM), 0, 0, 1, 1}, |
| 2072 | | {&__pyx_n_s__ERR, __pyx_k__ERR, sizeof(__pyx_k__ERR), 0, 0, 1, 1}, |
| 2073 | | {&__pyx_n_s__ET, __pyx_k__ET, sizeof(__pyx_k__ET), 0, 0, 1, 1}, |
| 2074 | | {&__pyx_n_s__HUP, __pyx_k__HUP, sizeof(__pyx_k__HUP), 0, 0, 1, 1}, |
| 2075 | | {&__pyx_n_s__IN, __pyx_k__IN, sizeof(__pyx_k__IN), 0, 0, 1, 1}, |
| 2076 | | {&__pyx_n_s__IOError, __pyx_k__IOError, sizeof(__pyx_k__IOError), 0, 0, 1, 1}, |
| 2077 | | {&__pyx_n_s__MSG, __pyx_k__MSG, sizeof(__pyx_k__MSG), 0, 0, 1, 1}, |
| 2078 | | {&__pyx_n_s__OUT, __pyx_k__OUT, sizeof(__pyx_k__OUT), 0, 0, 1, 1}, |
| 2079 | | {&__pyx_n_s__PRI, __pyx_k__PRI, sizeof(__pyx_k__PRI), 0, 0, 1, 1}, |
| 2080 | | {&__pyx_n_s__RDBAND, __pyx_k__RDBAND, sizeof(__pyx_k__RDBAND), 0, 0, 1, 1}, |
| 2081 | | {&__pyx_n_s__RDNORM, __pyx_k__RDNORM, sizeof(__pyx_k__RDNORM), 0, 0, 1, 1}, |
| 2082 | | {&__pyx_n_s__WRBAND, __pyx_k__WRBAND, sizeof(__pyx_k__WRBAND), 0, 0, 1, 1}, |
| 2083 | | {&__pyx_n_s__WRNORM, __pyx_k__WRNORM, sizeof(__pyx_k__WRNORM), 0, 0, 1, 1}, |
| 2084 | | {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, |
| 2085 | | {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, |
| 2086 | | {&__pyx_n_s__events, __pyx_k__events, sizeof(__pyx_k__events), 0, 0, 1, 1}, |
| 2087 | | {&__pyx_n_s__fd, __pyx_k__fd, sizeof(__pyx_k__fd), 0, 0, 1, 1}, |
| 2088 | | {&__pyx_n_s__maxevents, __pyx_k__maxevents, sizeof(__pyx_k__maxevents), 0, 0, 1, 1}, |
| 2089 | | {&__pyx_n_s__op, __pyx_k__op, sizeof(__pyx_k__op), 0, 0, 1, 1}, |
| 2090 | | {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1}, |
| 2091 | | {&__pyx_n_s__timeout, __pyx_k__timeout, sizeof(__pyx_k__timeout), 0, 0, 1, 1}, |
| 2092 | | {0, 0, 0, 0, 0, 0, 0} |
| 2093 | | }; |
| 2094 | | static int __Pyx_InitCachedBuiltins(void) { |
| 2095 | | __pyx_builtin_IOError = __Pyx_GetName(__pyx_b, __pyx_n_s__IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2096 | | return 0; |
| 2097 | | __pyx_L1_error:; |
| 2098 | | return -1; |
| 2099 | | } |
| 2100 | | |
| 2101 | | static int __Pyx_InitCachedConstants(void) { |
| 2102 | | __Pyx_RefNannyDeclarations |
| 2103 | | __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants"); |
| 2104 | | __Pyx_RefNannyFinishContext(); |
| 2105 | | return 0; |
| 2106 | | } |
| 2107 | | |
| 2108 | | static int __Pyx_InitGlobals(void) { |
| 2109 | | if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
| 2110 | | return 0; |
| 2111 | | __pyx_L1_error:; |
| 2112 | | return -1; |
| 2113 | | } |
| 2114 | | |
| 2115 | | #if PY_MAJOR_VERSION < 3 |
| 2116 | | PyMODINIT_FUNC init_epoll(void); /*proto*/ |
| 2117 | | PyMODINIT_FUNC init_epoll(void) |
| 2118 | | #else |
| 2119 | | PyMODINIT_FUNC PyInit__epoll(void); /*proto*/ |
| 2120 | | PyMODINIT_FUNC PyInit__epoll(void) |
| 2121 | | #endif |
| 2122 | | { |
| 2123 | | PyObject *__pyx_t_1 = NULL; |
| 2124 | | __Pyx_RefNannyDeclarations |
| 2125 | | #if CYTHON_REFNANNY |
| 2126 | | __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); |
| 2127 | | if (!__Pyx_RefNanny) { |
| 2128 | | PyErr_Clear(); |
| 2129 | | __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); |
| 2130 | | if (!__Pyx_RefNanny) |
| 2131 | | Py_FatalError("failed to import 'refnanny' module"); |
| 2132 | | } |
| 2133 | | #endif |
| 2134 | | __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__epoll(void)"); |
| 2135 | | if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2136 | | __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2137 | | __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2138 | | #ifdef __pyx_binding_PyCFunctionType_USED |
| 2139 | | if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2140 | | #endif |
| 2141 | | /*--- Library function declarations ---*/ |
| 2142 | | /*--- Threads initialization code ---*/ |
| 2143 | | #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS |
| 2144 | | #ifdef WITH_THREAD /* Python build with threading support? */ |
| 2145 | | PyEval_InitThreads(); |
| 2146 | | #endif |
| 2147 | | #endif |
| 2148 | | /*--- Module creation code ---*/ |
| 2149 | | #if PY_MAJOR_VERSION < 3 |
| 2150 | | __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_epoll"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_1), 0, PYTHON_API_VERSION); |
| 2151 | | #else |
| 2152 | | __pyx_m = PyModule_Create(&__pyx_moduledef); |
| 2153 | | #endif |
| 2154 | | if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
| 2155 | | #if PY_MAJOR_VERSION < 3 |
| 2156 | | Py_INCREF(__pyx_m); |
| 2157 | | #endif |
| 2158 | | __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); |
| 2159 | | if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
| 2160 | | if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
| 2161 | | /*--- Initialize various global constants etc. ---*/ |
| 2162 | | if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2163 | | if (__pyx_module_is_main_twisted__python___epoll) { |
| 2164 | | if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; |
| 2165 | | } |
| 2166 | | /*--- Builtin init code ---*/ |
| 2167 | | if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2168 | | /*--- Constants init code ---*/ |
| 2169 | | if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2170 | | /*--- Global init code ---*/ |
| 2171 | | /*--- Variable export code ---*/ |
| 2172 | | /*--- Function export code ---*/ |
| 2173 | | /*--- Type init code ---*/ |
| 2174 | | if (PyType_Ready(&__pyx_type_7twisted_6python_6_epoll_epoll) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2175 | | { |
| 2176 | | PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_7twisted_6python_6_epoll_epoll, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2177 | | if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { |
| 2178 | | __pyx_wrapperbase_7twisted_6python_6_epoll_5epoll___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; |
| 2179 | | __pyx_wrapperbase_7twisted_6python_6_epoll_5epoll___init__.doc = __pyx_doc_7twisted_6python_6_epoll_5epoll___init__; |
| 2180 | | ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7twisted_6python_6_epoll_5epoll___init__; |
| 2181 | | } |
| 2182 | | } |
| 2183 | | if (__Pyx_SetAttrString(__pyx_m, "epoll", (PyObject *)&__pyx_type_7twisted_6python_6_epoll_epoll) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2184 | | __pyx_ptype_7twisted_6python_6_epoll_epoll = &__pyx_type_7twisted_6python_6_epoll_epoll; |
| 2185 | | /*--- Type import code ---*/ |
| 2186 | | /*--- Variable import code ---*/ |
| 2187 | | /*--- Function import code ---*/ |
| 2188 | | /*--- Execution code ---*/ |
| 2189 | | |
| 2190 | | /* "twisted/python/_epoll.pyx":270 |
| 2191 | | * |
| 2192 | | * |
| 2193 | | * CTL_ADD = EPOLL_CTL_ADD # <<<<<<<<<<<<<< |
| 2194 | | * CTL_DEL = EPOLL_CTL_DEL |
| 2195 | | * CTL_MOD = EPOLL_CTL_MOD |
| 2196 | | */ |
| 2197 | | __pyx_t_1 = PyInt_FromLong(EPOLL_CTL_ADD); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2198 | | __Pyx_GOTREF(__pyx_t_1); |
| 2199 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CTL_ADD, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2200 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2201 | | |
| 2202 | | /* "twisted/python/_epoll.pyx":271 |
| 2203 | | * |
| 2204 | | * CTL_ADD = EPOLL_CTL_ADD |
| 2205 | | * CTL_DEL = EPOLL_CTL_DEL # <<<<<<<<<<<<<< |
| 2206 | | * CTL_MOD = EPOLL_CTL_MOD |
| 2207 | | * |
| 2208 | | */ |
| 2209 | | __pyx_t_1 = PyInt_FromLong(EPOLL_CTL_DEL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2210 | | __Pyx_GOTREF(__pyx_t_1); |
| 2211 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CTL_DEL, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2212 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2213 | | |
| 2214 | | /* "twisted/python/_epoll.pyx":272 |
| 2215 | | * CTL_ADD = EPOLL_CTL_ADD |
| 2216 | | * CTL_DEL = EPOLL_CTL_DEL |
| 2217 | | * CTL_MOD = EPOLL_CTL_MOD # <<<<<<<<<<<<<< |
| 2218 | | * |
| 2219 | | * IN = EPOLLIN = c_EPOLLIN |
| 2220 | | */ |
| 2221 | | __pyx_t_1 = PyInt_FromLong(EPOLL_CTL_MOD); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2222 | | __Pyx_GOTREF(__pyx_t_1); |
| 2223 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CTL_MOD, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2224 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2225 | | |
| 2226 | | /* "twisted/python/_epoll.pyx":274 |
| 2227 | | * CTL_MOD = EPOLL_CTL_MOD |
| 2228 | | * |
| 2229 | | * IN = EPOLLIN = c_EPOLLIN # <<<<<<<<<<<<<< |
| 2230 | | * OUT = EPOLLOUT = c_EPOLLOUT |
| 2231 | | * PRI = EPOLLPRI = c_EPOLLPRI |
| 2232 | | */ |
| 2233 | | __pyx_t_1 = PyInt_FromLong(EPOLLIN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2234 | | __Pyx_GOTREF(__pyx_t_1); |
| 2235 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IN, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2236 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2237 | | __pyx_t_1 = PyInt_FromLong(EPOLLIN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2238 | | __Pyx_GOTREF(__pyx_t_1); |
| 2239 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLIN, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2240 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2241 | | |
| 2242 | | /* "twisted/python/_epoll.pyx":275 |
| 2243 | | * |
| 2244 | | * IN = EPOLLIN = c_EPOLLIN |
| 2245 | | * OUT = EPOLLOUT = c_EPOLLOUT # <<<<<<<<<<<<<< |
| 2246 | | * PRI = EPOLLPRI = c_EPOLLPRI |
| 2247 | | * ERR = EPOLLERR = c_EPOLLERR |
| 2248 | | */ |
| 2249 | | __pyx_t_1 = PyInt_FromLong(EPOLLOUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2250 | | __Pyx_GOTREF(__pyx_t_1); |
| 2251 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OUT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2252 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2253 | | __pyx_t_1 = PyInt_FromLong(EPOLLOUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2254 | | __Pyx_GOTREF(__pyx_t_1); |
| 2255 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLOUT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2256 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2257 | | |
| 2258 | | /* "twisted/python/_epoll.pyx":276 |
| 2259 | | * IN = EPOLLIN = c_EPOLLIN |
| 2260 | | * OUT = EPOLLOUT = c_EPOLLOUT |
| 2261 | | * PRI = EPOLLPRI = c_EPOLLPRI # <<<<<<<<<<<<<< |
| 2262 | | * ERR = EPOLLERR = c_EPOLLERR |
| 2263 | | * HUP = EPOLLHUP = c_EPOLLHUP |
| 2264 | | */ |
| 2265 | | __pyx_t_1 = PyInt_FromLong(EPOLLPRI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2266 | | __Pyx_GOTREF(__pyx_t_1); |
| 2267 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PRI, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2268 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2269 | | __pyx_t_1 = PyInt_FromLong(EPOLLPRI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2270 | | __Pyx_GOTREF(__pyx_t_1); |
| 2271 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLPRI, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2272 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2273 | | |
| 2274 | | /* "twisted/python/_epoll.pyx":277 |
| 2275 | | * OUT = EPOLLOUT = c_EPOLLOUT |
| 2276 | | * PRI = EPOLLPRI = c_EPOLLPRI |
| 2277 | | * ERR = EPOLLERR = c_EPOLLERR # <<<<<<<<<<<<<< |
| 2278 | | * HUP = EPOLLHUP = c_EPOLLHUP |
| 2279 | | * ET = EPOLLET = c_EPOLLET |
| 2280 | | */ |
| 2281 | | __pyx_t_1 = PyInt_FromLong(EPOLLERR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2282 | | __Pyx_GOTREF(__pyx_t_1); |
| 2283 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2284 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2285 | | __pyx_t_1 = PyInt_FromLong(EPOLLERR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2286 | | __Pyx_GOTREF(__pyx_t_1); |
| 2287 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLERR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2288 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2289 | | |
| 2290 | | /* "twisted/python/_epoll.pyx":278 |
| 2291 | | * PRI = EPOLLPRI = c_EPOLLPRI |
| 2292 | | * ERR = EPOLLERR = c_EPOLLERR |
| 2293 | | * HUP = EPOLLHUP = c_EPOLLHUP # <<<<<<<<<<<<<< |
| 2294 | | * ET = EPOLLET = c_EPOLLET |
| 2295 | | * |
| 2296 | | */ |
| 2297 | | __pyx_t_1 = PyInt_FromLong(EPOLLHUP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2298 | | __Pyx_GOTREF(__pyx_t_1); |
| 2299 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HUP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2300 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2301 | | __pyx_t_1 = PyInt_FromLong(EPOLLHUP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2302 | | __Pyx_GOTREF(__pyx_t_1); |
| 2303 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLHUP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2304 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2305 | | |
| 2306 | | /* "twisted/python/_epoll.pyx":279 |
| 2307 | | * ERR = EPOLLERR = c_EPOLLERR |
| 2308 | | * HUP = EPOLLHUP = c_EPOLLHUP |
| 2309 | | * ET = EPOLLET = c_EPOLLET # <<<<<<<<<<<<<< |
| 2310 | | * |
| 2311 | | * RDNORM = EPOLLRDNORM = c_EPOLLRDNORM |
| 2312 | | */ |
| 2313 | | __pyx_t_1 = PyInt_FromLong(EPOLLET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2314 | | __Pyx_GOTREF(__pyx_t_1); |
| 2315 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ET, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2316 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2317 | | __pyx_t_1 = PyInt_FromLong(EPOLLET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2318 | | __Pyx_GOTREF(__pyx_t_1); |
| 2319 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLET, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2320 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2321 | | |
| 2322 | | /* "twisted/python/_epoll.pyx":281 |
| 2323 | | * ET = EPOLLET = c_EPOLLET |
| 2324 | | * |
| 2325 | | * RDNORM = EPOLLRDNORM = c_EPOLLRDNORM # <<<<<<<<<<<<<< |
| 2326 | | * RDBAND = EPOLLRDBAND = c_EPOLLRDBAND |
| 2327 | | * WRNORM = EPOLLWRNORM = c_EPOLLWRNORM |
| 2328 | | */ |
| 2329 | | __pyx_t_1 = PyInt_FromLong(EPOLLRDNORM); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2330 | | __Pyx_GOTREF(__pyx_t_1); |
| 2331 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__RDNORM, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2332 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2333 | | __pyx_t_1 = PyInt_FromLong(EPOLLRDNORM); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2334 | | __Pyx_GOTREF(__pyx_t_1); |
| 2335 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLRDNORM, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2336 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2337 | | |
| 2338 | | /* "twisted/python/_epoll.pyx":282 |
| 2339 | | * |
| 2340 | | * RDNORM = EPOLLRDNORM = c_EPOLLRDNORM |
| 2341 | | * RDBAND = EPOLLRDBAND = c_EPOLLRDBAND # <<<<<<<<<<<<<< |
| 2342 | | * WRNORM = EPOLLWRNORM = c_EPOLLWRNORM |
| 2343 | | * WRBAND = EPOLLWRBAND = c_EPOLLWRBAND |
| 2344 | | */ |
| 2345 | | __pyx_t_1 = PyInt_FromLong(EPOLLRDBAND); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2346 | | __Pyx_GOTREF(__pyx_t_1); |
| 2347 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__RDBAND, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2348 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2349 | | __pyx_t_1 = PyInt_FromLong(EPOLLRDBAND); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2350 | | __Pyx_GOTREF(__pyx_t_1); |
| 2351 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLRDBAND, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2352 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2353 | | |
| 2354 | | /* "twisted/python/_epoll.pyx":283 |
| 2355 | | * RDNORM = EPOLLRDNORM = c_EPOLLRDNORM |
| 2356 | | * RDBAND = EPOLLRDBAND = c_EPOLLRDBAND |
| 2357 | | * WRNORM = EPOLLWRNORM = c_EPOLLWRNORM # <<<<<<<<<<<<<< |
| 2358 | | * WRBAND = EPOLLWRBAND = c_EPOLLWRBAND |
| 2359 | | * MSG = EPOLLMSG = c_EPOLLMSG |
| 2360 | | */ |
| 2361 | | __pyx_t_1 = PyInt_FromLong(EPOLLWRNORM); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2362 | | __Pyx_GOTREF(__pyx_t_1); |
| 2363 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WRNORM, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2364 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2365 | | __pyx_t_1 = PyInt_FromLong(EPOLLWRNORM); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2366 | | __Pyx_GOTREF(__pyx_t_1); |
| 2367 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLWRNORM, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2368 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2369 | | |
| 2370 | | /* "twisted/python/_epoll.pyx":284 |
| 2371 | | * RDBAND = EPOLLRDBAND = c_EPOLLRDBAND |
| 2372 | | * WRNORM = EPOLLWRNORM = c_EPOLLWRNORM |
| 2373 | | * WRBAND = EPOLLWRBAND = c_EPOLLWRBAND # <<<<<<<<<<<<<< |
| 2374 | | * MSG = EPOLLMSG = c_EPOLLMSG |
| 2375 | | */ |
| 2376 | | __pyx_t_1 = PyInt_FromLong(EPOLLWRBAND); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2377 | | __Pyx_GOTREF(__pyx_t_1); |
| 2378 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WRBAND, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2379 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2380 | | __pyx_t_1 = PyInt_FromLong(EPOLLWRBAND); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2381 | | __Pyx_GOTREF(__pyx_t_1); |
| 2382 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLWRBAND, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2383 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2384 | | |
| 2385 | | /* "twisted/python/_epoll.pyx":285 |
| 2386 | | * WRNORM = EPOLLWRNORM = c_EPOLLWRNORM |
| 2387 | | * WRBAND = EPOLLWRBAND = c_EPOLLWRBAND |
| 2388 | | * MSG = EPOLLMSG = c_EPOLLMSG # <<<<<<<<<<<<<< |
| 2389 | | */ |
| 2390 | | __pyx_t_1 = PyInt_FromLong(EPOLLMSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2391 | | __Pyx_GOTREF(__pyx_t_1); |
| 2392 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MSG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2393 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2394 | | __pyx_t_1 = PyInt_FromLong(EPOLLMSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2395 | | __Pyx_GOTREF(__pyx_t_1); |
| 2396 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPOLLMSG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2397 | | __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |
| 2398 | | |
| 2399 | | /* "twisted/python/_epoll.pyx":1 |
| 2400 | | * # Copyright (c) Twisted Matrix Laboratories. # <<<<<<<<<<<<<< |
| 2401 | | * # See LICENSE for details. |
| 2402 | | * |
| 2403 | | */ |
| 2404 | | __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2405 | | __Pyx_GOTREF(((PyObject *)__pyx_t_1)); |
| 2406 | | if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} |
| 2407 | | __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; |
| 2408 | | goto __pyx_L0; |
| 2409 | | __pyx_L1_error:; |
| 2410 | | __Pyx_XDECREF(__pyx_t_1); |
| 2411 | | if (__pyx_m) { |
| 2412 | | __Pyx_AddTraceback("init twisted.python._epoll", __pyx_clineno, __pyx_lineno, __pyx_filename); |
| 2413 | | Py_DECREF(__pyx_m); __pyx_m = 0; |
| 2414 | | } else if (!PyErr_Occurred()) { |
| 2415 | | PyErr_SetString(PyExc_ImportError, "init twisted.python._epoll"); |
| 2416 | | } |
| 2417 | | __pyx_L0:; |
| 2418 | | __Pyx_RefNannyFinishContext(); |
| 2419 | | #if PY_MAJOR_VERSION < 3 |
| 2420 | | return; |
| 2421 | | #else |
| 2422 | | return __pyx_m; |
| 2423 | | #endif |
| 2424 | | } |
| 2425 | | |
| 2426 | | /* Runtime support code */ |
| 2427 | | |
| 2428 | | #if CYTHON_REFNANNY |
| 2429 | | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { |
| 2430 | | PyObject *m = NULL, *p = NULL; |
| 2431 | | void *r = NULL; |
| 2432 | | m = PyImport_ImportModule((char *)modname); |
| 2433 | | if (!m) goto end; |
| 2434 | | p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); |
| 2435 | | if (!p) goto end; |
| 2436 | | r = PyLong_AsVoidPtr(p); |
| 2437 | | end: |
| 2438 | | Py_XDECREF(p); |
| 2439 | | Py_XDECREF(m); |
| 2440 | | return (__Pyx_RefNannyAPIStruct *)r; |
| 2441 | | } |
| 2442 | | #endif /* CYTHON_REFNANNY */ |
| 2443 | | |
| 2444 | | static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { |
| 2445 | | PyObject *result; |
| 2446 | | result = PyObject_GetAttr(dict, name); |
| 2447 | | if (!result) { |
| 2448 | | if (dict != __pyx_b) { |
| 2449 | | PyErr_Clear(); |
| 2450 | | result = PyObject_GetAttr(__pyx_b, name); |
| 2451 | | } |
| 2452 | | if (!result) { |
| 2453 | | PyErr_SetObject(PyExc_NameError, name); |
| 2454 | | } |
| 2455 | | } |
| 2456 | | return result; |
| 2457 | | } |
| 2458 | | |
| 2459 | | static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { |
| 2460 | | PyObject *tmp_type, *tmp_value, *tmp_tb; |
| 2461 | | PyThreadState *tstate = PyThreadState_GET(); |
| 2462 | | |
| 2463 | | tmp_type = tstate->curexc_type; |
| 2464 | | tmp_value = tstate->curexc_value; |
| 2465 | | tmp_tb = tstate->curexc_traceback; |
| 2466 | | tstate->curexc_type = type; |
| 2467 | | tstate->curexc_value = value; |
| 2468 | | tstate->curexc_traceback = tb; |
| 2469 | | Py_XDECREF(tmp_type); |
| 2470 | | Py_XDECREF(tmp_value); |
| 2471 | | Py_XDECREF(tmp_tb); |
| 2472 | | } |
| 2473 | | |
| 2474 | | static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { |
| 2475 | | PyThreadState *tstate = PyThreadState_GET(); |
| 2476 | | *type = tstate->curexc_type; |
| 2477 | | *value = tstate->curexc_value; |
| 2478 | | *tb = tstate->curexc_traceback; |
| 2479 | | |
| 2480 | | tstate->curexc_type = 0; |
| 2481 | | tstate->curexc_value = 0; |
| 2482 | | tstate->curexc_traceback = 0; |
| 2483 | | } |
| 2484 | | |
| 2485 | | |
| 2486 | | #if PY_MAJOR_VERSION < 3 |
| 2487 | | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { |
| 2488 | | /* cause is unused */ |
| 2489 | | Py_XINCREF(type); |
| 2490 | | Py_XINCREF(value); |
| 2491 | | Py_XINCREF(tb); |
| 2492 | | /* First, check the traceback argument, replacing None with NULL. */ |
| 2493 | | if (tb == Py_None) { |
| 2494 | | Py_DECREF(tb); |
| 2495 | | tb = 0; |
| 2496 | | } |
| 2497 | | else if (tb != NULL && !PyTraceBack_Check(tb)) { |
| 2498 | | PyErr_SetString(PyExc_TypeError, |
| 2499 | | "raise: arg 3 must be a traceback or None"); |
| 2500 | | goto raise_error; |
| 2501 | | } |
| 2502 | | /* Next, replace a missing value with None */ |
| 2503 | | if (value == NULL) { |
| 2504 | | value = Py_None; |
| 2505 | | Py_INCREF(value); |
| 2506 | | } |
| 2507 | | #if PY_VERSION_HEX < 0x02050000 |
| 2508 | | if (!PyClass_Check(type)) |
| 2509 | | #else |
| 2510 | | if (!PyType_Check(type)) |
| 2511 | | #endif |
| 2512 | | { |
| 2513 | | /* Raising an instance. The value should be a dummy. */ |
| 2514 | | if (value != Py_None) { |
| 2515 | | PyErr_SetString(PyExc_TypeError, |
| 2516 | | "instance exception may not have a separate value"); |
| 2517 | | goto raise_error; |
| 2518 | | } |
| 2519 | | /* Normalize to raise <class>, <instance> */ |
| 2520 | | Py_DECREF(value); |
| 2521 | | value = type; |
| 2522 | | #if PY_VERSION_HEX < 0x02050000 |
| 2523 | | if (PyInstance_Check(type)) { |
| 2524 | | type = (PyObject*) ((PyInstanceObject*)type)->in_class; |
| 2525 | | Py_INCREF(type); |
| 2526 | | } |
| 2527 | | else { |
| 2528 | | type = 0; |
| 2529 | | PyErr_SetString(PyExc_TypeError, |
| 2530 | | "raise: exception must be an old-style class or instance"); |
| 2531 | | goto raise_error; |
| 2532 | | } |
| 2533 | | #else |
| 2534 | | type = (PyObject*) Py_TYPE(type); |
| 2535 | | Py_INCREF(type); |
| 2536 | | if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { |
| 2537 | | PyErr_SetString(PyExc_TypeError, |
| 2538 | | "raise: exception class must be a subclass of BaseException"); |
| 2539 | | goto raise_error; |
| 2540 | | } |
| 2541 | | #endif |
| 2542 | | } |
| 2543 | | |
| 2544 | | __Pyx_ErrRestore(type, value, tb); |
| 2545 | | return; |
| 2546 | | raise_error: |
| 2547 | | Py_XDECREF(value); |
| 2548 | | Py_XDECREF(type); |
| 2549 | | Py_XDECREF(tb); |
| 2550 | | return; |
| 2551 | | } |
| 2552 | | |
| 2553 | | #else /* Python 3+ */ |
| 2554 | | |
| 2555 | | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { |
| 2556 | | if (tb == Py_None) { |
| 2557 | | tb = 0; |
| 2558 | | } else if (tb && !PyTraceBack_Check(tb)) { |
| 2559 | | PyErr_SetString(PyExc_TypeError, |
| 2560 | | "raise: arg 3 must be a traceback or None"); |
| 2561 | | goto bad; |
| 2562 | | } |
| 2563 | | if (value == Py_None) |
| 2564 | | value = 0; |
| 2565 | | |
| 2566 | | if (PyExceptionInstance_Check(type)) { |
| 2567 | | if (value) { |
| 2568 | | PyErr_SetString(PyExc_TypeError, |
| 2569 | | "instance exception may not have a separate value"); |
| 2570 | | goto bad; |
| 2571 | | } |
| 2572 | | value = type; |
| 2573 | | type = (PyObject*) Py_TYPE(value); |
| 2574 | | } else if (!PyExceptionClass_Check(type)) { |
| 2575 | | PyErr_SetString(PyExc_TypeError, |
| 2576 | | "raise: exception class must be a subclass of BaseException"); |
| 2577 | | goto bad; |
| 2578 | | } |
| 2579 | | |
| 2580 | | if (cause) { |
| 2581 | | PyObject *fixed_cause; |
| 2582 | | if (PyExceptionClass_Check(cause)) { |
| 2583 | | fixed_cause = PyObject_CallObject(cause, NULL); |
| 2584 | | if (fixed_cause == NULL) |
| 2585 | | goto bad; |
| 2586 | | } |
| 2587 | | else if (PyExceptionInstance_Check(cause)) { |
| 2588 | | fixed_cause = cause; |
| 2589 | | Py_INCREF(fixed_cause); |
| 2590 | | } |
| 2591 | | else { |
| 2592 | | PyErr_SetString(PyExc_TypeError, |
| 2593 | | "exception causes must derive from " |
| 2594 | | "BaseException"); |
| 2595 | | goto bad; |
| 2596 | | } |
| 2597 | | if (!value) { |
| 2598 | | value = PyObject_CallObject(type, NULL); |
| 2599 | | } |
| 2600 | | PyException_SetCause(value, fixed_cause); |
| 2601 | | } |
| 2602 | | |
| 2603 | | PyErr_SetObject(type, value); |
| 2604 | | |
| 2605 | | if (tb) { |
| 2606 | | PyThreadState *tstate = PyThreadState_GET(); |
| 2607 | | PyObject* tmp_tb = tstate->curexc_traceback; |
| 2608 | | if (tb != tmp_tb) { |
| 2609 | | Py_INCREF(tb); |
| 2610 | | tstate->curexc_traceback = tb; |
| 2611 | | Py_XDECREF(tmp_tb); |
| 2612 | | } |
| 2613 | | } |
| 2614 | | |
| 2615 | | bad: |
| 2616 | | return; |
| 2617 | | } |
| 2618 | | #endif |
| 2619 | | |
| 2620 | | static void __Pyx_RaiseDoubleKeywordsError( |
| 2621 | | const char* func_name, |
| 2622 | | PyObject* kw_name) |
| 2623 | | { |
| 2624 | | PyErr_Format(PyExc_TypeError, |
| 2625 | | #if PY_MAJOR_VERSION >= 3 |
| 2626 | | "%s() got multiple values for keyword argument '%U'", func_name, kw_name); |
| 2627 | | #else |
| 2628 | | "%s() got multiple values for keyword argument '%s'", func_name, |
| 2629 | | PyString_AS_STRING(kw_name)); |
| 2630 | | #endif |
| 2631 | | } |
| 2632 | | |
| 2633 | | static int __Pyx_ParseOptionalKeywords( |
| 2634 | | PyObject *kwds, |
| 2635 | | PyObject **argnames[], |
| 2636 | | PyObject *kwds2, |
| 2637 | | PyObject *values[], |
| 2638 | | Py_ssize_t num_pos_args, |
| 2639 | | const char* function_name) |
| 2640 | | { |
| 2641 | | PyObject *key = 0, *value = 0; |
| 2642 | | Py_ssize_t pos = 0; |
| 2643 | | PyObject*** name; |
| 2644 | | PyObject*** first_kw_arg = argnames + num_pos_args; |
| 2645 | | |
| 2646 | | while (PyDict_Next(kwds, &pos, &key, &value)) { |
| 2647 | | name = first_kw_arg; |
| 2648 | | while (*name && (**name != key)) name++; |
| 2649 | | if (*name) { |
| 2650 | | values[name-argnames] = value; |
| 2651 | | } else { |
| 2652 | | #if PY_MAJOR_VERSION < 3 |
| 2653 | | if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) { |
| 2654 | | #else |
| 2655 | | if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) { |
| 2656 | | #endif |
| 2657 | | goto invalid_keyword_type; |
| 2658 | | } else { |
| 2659 | | for (name = first_kw_arg; *name; name++) { |
| 2660 | | #if PY_MAJOR_VERSION >= 3 |
| 2661 | | if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && |
| 2662 | | PyUnicode_Compare(**name, key) == 0) break; |
| 2663 | | #else |
| 2664 | | if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && |
| 2665 | | _PyString_Eq(**name, key)) break; |
| 2666 | | #endif |
| 2667 | | } |
| 2668 | | if (*name) { |
| 2669 | | values[name-argnames] = value; |
| 2670 | | } else { |
| 2671 | | /* unexpected keyword found */ |
| 2672 | | for (name=argnames; name != first_kw_arg; name++) { |
| 2673 | | if (**name == key) goto arg_passed_twice; |
| 2674 | | #if PY_MAJOR_VERSION >= 3 |
| 2675 | | if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && |
| 2676 | | PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice; |
| 2677 | | #else |
| 2678 | | if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && |
| 2679 | | _PyString_Eq(**name, key)) goto arg_passed_twice; |
| 2680 | | #endif |
| 2681 | | } |
| 2682 | | if (kwds2) { |
| 2683 | | if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; |
| 2684 | | } else { |
| 2685 | | goto invalid_keyword; |
| 2686 | | } |
| 2687 | | } |
| 2688 | | } |
| 2689 | | } |
| 2690 | | } |
| 2691 | | return 0; |
| 2692 | | arg_passed_twice: |
| 2693 | | __Pyx_RaiseDoubleKeywordsError(function_name, **name); |
| 2694 | | goto bad; |
| 2695 | | invalid_keyword_type: |
| 2696 | | PyErr_Format(PyExc_TypeError, |
| 2697 | | "%s() keywords must be strings", function_name); |
| 2698 | | goto bad; |
| 2699 | | invalid_keyword: |
| 2700 | | PyErr_Format(PyExc_TypeError, |
| 2701 | | #if PY_MAJOR_VERSION < 3 |
| 2702 | | "%s() got an unexpected keyword argument '%s'", |
| 2703 | | function_name, PyString_AsString(key)); |
| 2704 | | #else |
| 2705 | | "%s() got an unexpected keyword argument '%U'", |
| 2706 | | function_name, key); |
| 2707 | | #endif |
| 2708 | | bad: |
| 2709 | | return -1; |
| 2710 | | } |
| 2711 | | |
| 2712 | | static void __Pyx_RaiseArgtupleInvalid( |
| 2713 | | const char* func_name, |
| 2714 | | int exact, |
| 2715 | | Py_ssize_t num_min, |
| 2716 | | Py_ssize_t num_max, |
| 2717 | | Py_ssize_t num_found) |
| 2718 | | { |
| 2719 | | Py_ssize_t num_expected; |
| 2720 | | const char *more_or_less; |
| 2721 | | |
| 2722 | | if (num_found < num_min) { |
| 2723 | | num_expected = num_min; |
| 2724 | | more_or_less = "at least"; |
| 2725 | | } else { |
| 2726 | | num_expected = num_max; |
| 2727 | | more_or_less = "at most"; |
| 2728 | | } |
| 2729 | | if (exact) { |
| 2730 | | more_or_less = "exactly"; |
| 2731 | | } |
| 2732 | | PyErr_Format(PyExc_TypeError, |
| 2733 | | "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)", |
| 2734 | | func_name, more_or_less, num_expected, |
| 2735 | | (num_expected == 1) ? "" : "s", num_found); |
| 2736 | | } |
| 2737 | | |
| 2738 | | static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { |
| 2739 | | const unsigned char neg_one = (unsigned char)-1, const_zero = 0; |
| 2740 | | const int is_unsigned = neg_one > const_zero; |
| 2741 | | if (sizeof(unsigned char) < sizeof(long)) { |
| 2742 | | long val = __Pyx_PyInt_AsLong(x); |
| 2743 | | if (unlikely(val != (long)(unsigned char)val)) { |
| 2744 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2745 | | PyErr_SetString(PyExc_OverflowError, |
| 2746 | | (is_unsigned && unlikely(val < 0)) ? |
| 2747 | | "can't convert negative value to unsigned char" : |
| 2748 | | "value too large to convert to unsigned char"); |
| 2749 | | } |
| 2750 | | return (unsigned char)-1; |
| 2751 | | } |
| 2752 | | return (unsigned char)val; |
| 2753 | | } |
| 2754 | | return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); |
| 2755 | | } |
| 2756 | | |
| 2757 | | static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { |
| 2758 | | const unsigned short neg_one = (unsigned short)-1, const_zero = 0; |
| 2759 | | const int is_unsigned = neg_one > const_zero; |
| 2760 | | if (sizeof(unsigned short) < sizeof(long)) { |
| 2761 | | long val = __Pyx_PyInt_AsLong(x); |
| 2762 | | if (unlikely(val != (long)(unsigned short)val)) { |
| 2763 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2764 | | PyErr_SetString(PyExc_OverflowError, |
| 2765 | | (is_unsigned && unlikely(val < 0)) ? |
| 2766 | | "can't convert negative value to unsigned short" : |
| 2767 | | "value too large to convert to unsigned short"); |
| 2768 | | } |
| 2769 | | return (unsigned short)-1; |
| 2770 | | } |
| 2771 | | return (unsigned short)val; |
| 2772 | | } |
| 2773 | | return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); |
| 2774 | | } |
| 2775 | | |
| 2776 | | static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { |
| 2777 | | const unsigned int neg_one = (unsigned int)-1, const_zero = 0; |
| 2778 | | const int is_unsigned = neg_one > const_zero; |
| 2779 | | if (sizeof(unsigned int) < sizeof(long)) { |
| 2780 | | long val = __Pyx_PyInt_AsLong(x); |
| 2781 | | if (unlikely(val != (long)(unsigned int)val)) { |
| 2782 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2783 | | PyErr_SetString(PyExc_OverflowError, |
| 2784 | | (is_unsigned && unlikely(val < 0)) ? |
| 2785 | | "can't convert negative value to unsigned int" : |
| 2786 | | "value too large to convert to unsigned int"); |
| 2787 | | } |
| 2788 | | return (unsigned int)-1; |
| 2789 | | } |
| 2790 | | return (unsigned int)val; |
| 2791 | | } |
| 2792 | | return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); |
| 2793 | | } |
| 2794 | | |
| 2795 | | static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { |
| 2796 | | const char neg_one = (char)-1, const_zero = 0; |
| 2797 | | const int is_unsigned = neg_one > const_zero; |
| 2798 | | if (sizeof(char) < sizeof(long)) { |
| 2799 | | long val = __Pyx_PyInt_AsLong(x); |
| 2800 | | if (unlikely(val != (long)(char)val)) { |
| 2801 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2802 | | PyErr_SetString(PyExc_OverflowError, |
| 2803 | | (is_unsigned && unlikely(val < 0)) ? |
| 2804 | | "can't convert negative value to char" : |
| 2805 | | "value too large to convert to char"); |
| 2806 | | } |
| 2807 | | return (char)-1; |
| 2808 | | } |
| 2809 | | return (char)val; |
| 2810 | | } |
| 2811 | | return (char)__Pyx_PyInt_AsLong(x); |
| 2812 | | } |
| 2813 | | |
| 2814 | | static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { |
| 2815 | | const short neg_one = (short)-1, const_zero = 0; |
| 2816 | | const int is_unsigned = neg_one > const_zero; |
| 2817 | | if (sizeof(short) < sizeof(long)) { |
| 2818 | | long val = __Pyx_PyInt_AsLong(x); |
| 2819 | | if (unlikely(val != (long)(short)val)) { |
| 2820 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2821 | | PyErr_SetString(PyExc_OverflowError, |
| 2822 | | (is_unsigned && unlikely(val < 0)) ? |
| 2823 | | "can't convert negative value to short" : |
| 2824 | | "value too large to convert to short"); |
| 2825 | | } |
| 2826 | | return (short)-1; |
| 2827 | | } |
| 2828 | | return (short)val; |
| 2829 | | } |
| 2830 | | return (short)__Pyx_PyInt_AsLong(x); |
| 2831 | | } |
| 2832 | | |
| 2833 | | static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { |
| 2834 | | const int neg_one = (int)-1, const_zero = 0; |
| 2835 | | const int is_unsigned = neg_one > const_zero; |
| 2836 | | if (sizeof(int) < sizeof(long)) { |
| 2837 | | long val = __Pyx_PyInt_AsLong(x); |
| 2838 | | if (unlikely(val != (long)(int)val)) { |
| 2839 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2840 | | PyErr_SetString(PyExc_OverflowError, |
| 2841 | | (is_unsigned && unlikely(val < 0)) ? |
| 2842 | | "can't convert negative value to int" : |
| 2843 | | "value too large to convert to int"); |
| 2844 | | } |
| 2845 | | return (int)-1; |
| 2846 | | } |
| 2847 | | return (int)val; |
| 2848 | | } |
| 2849 | | return (int)__Pyx_PyInt_AsLong(x); |
| 2850 | | } |
| 2851 | | |
| 2852 | | static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { |
| 2853 | | const signed char neg_one = (signed char)-1, const_zero = 0; |
| 2854 | | const int is_unsigned = neg_one > const_zero; |
| 2855 | | if (sizeof(signed char) < sizeof(long)) { |
| 2856 | | long val = __Pyx_PyInt_AsLong(x); |
| 2857 | | if (unlikely(val != (long)(signed char)val)) { |
| 2858 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2859 | | PyErr_SetString(PyExc_OverflowError, |
| 2860 | | (is_unsigned && unlikely(val < 0)) ? |
| 2861 | | "can't convert negative value to signed char" : |
| 2862 | | "value too large to convert to signed char"); |
| 2863 | | } |
| 2864 | | return (signed char)-1; |
| 2865 | | } |
| 2866 | | return (signed char)val; |
| 2867 | | } |
| 2868 | | return (signed char)__Pyx_PyInt_AsSignedLong(x); |
| 2869 | | } |
| 2870 | | |
| 2871 | | static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { |
| 2872 | | const signed short neg_one = (signed short)-1, const_zero = 0; |
| 2873 | | const int is_unsigned = neg_one > const_zero; |
| 2874 | | if (sizeof(signed short) < sizeof(long)) { |
| 2875 | | long val = __Pyx_PyInt_AsLong(x); |
| 2876 | | if (unlikely(val != (long)(signed short)val)) { |
| 2877 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2878 | | PyErr_SetString(PyExc_OverflowError, |
| 2879 | | (is_unsigned && unlikely(val < 0)) ? |
| 2880 | | "can't convert negative value to signed short" : |
| 2881 | | "value too large to convert to signed short"); |
| 2882 | | } |
| 2883 | | return (signed short)-1; |
| 2884 | | } |
| 2885 | | return (signed short)val; |
| 2886 | | } |
| 2887 | | return (signed short)__Pyx_PyInt_AsSignedLong(x); |
| 2888 | | } |
| 2889 | | |
| 2890 | | static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { |
| 2891 | | const signed int neg_one = (signed int)-1, const_zero = 0; |
| 2892 | | const int is_unsigned = neg_one > const_zero; |
| 2893 | | if (sizeof(signed int) < sizeof(long)) { |
| 2894 | | long val = __Pyx_PyInt_AsLong(x); |
| 2895 | | if (unlikely(val != (long)(signed int)val)) { |
| 2896 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2897 | | PyErr_SetString(PyExc_OverflowError, |
| 2898 | | (is_unsigned && unlikely(val < 0)) ? |
| 2899 | | "can't convert negative value to signed int" : |
| 2900 | | "value too large to convert to signed int"); |
| 2901 | | } |
| 2902 | | return (signed int)-1; |
| 2903 | | } |
| 2904 | | return (signed int)val; |
| 2905 | | } |
| 2906 | | return (signed int)__Pyx_PyInt_AsSignedLong(x); |
| 2907 | | } |
| 2908 | | |
| 2909 | | static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { |
| 2910 | | const int neg_one = (int)-1, const_zero = 0; |
| 2911 | | const int is_unsigned = neg_one > const_zero; |
| 2912 | | if (sizeof(int) < sizeof(long)) { |
| 2913 | | long val = __Pyx_PyInt_AsLong(x); |
| 2914 | | if (unlikely(val != (long)(int)val)) { |
| 2915 | | if (!unlikely(val == -1 && PyErr_Occurred())) { |
| 2916 | | PyErr_SetString(PyExc_OverflowError, |
| 2917 | | (is_unsigned && unlikely(val < 0)) ? |
| 2918 | | "can't convert negative value to int" : |
| 2919 | | "value too large to convert to int"); |
| 2920 | | } |
| 2921 | | return (int)-1; |
| 2922 | | } |
| 2923 | | return (int)val; |
| 2924 | | } |
| 2925 | | return (int)__Pyx_PyInt_AsLong(x); |
| 2926 | | } |
| 2927 | | |
| 2928 | | static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { |
| 2929 | | const unsigned long neg_one = (unsigned long)-1, const_zero = 0; |
| 2930 | | const int is_unsigned = neg_one > const_zero; |
| 2931 | | #if PY_VERSION_HEX < 0x03000000 |
| 2932 | | if (likely(PyInt_Check(x))) { |
| 2933 | | long val = PyInt_AS_LONG(x); |
| 2934 | | if (is_unsigned && unlikely(val < 0)) { |
| 2935 | | PyErr_SetString(PyExc_OverflowError, |
| 2936 | | "can't convert negative value to unsigned long"); |
| 2937 | | return (unsigned long)-1; |
| 2938 | | } |
| 2939 | | return (unsigned long)val; |
| 2940 | | } else |
| 2941 | | #endif |
| 2942 | | if (likely(PyLong_Check(x))) { |
| 2943 | | if (is_unsigned) { |
| 2944 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 2945 | | PyErr_SetString(PyExc_OverflowError, |
| 2946 | | "can't convert negative value to unsigned long"); |
| 2947 | | return (unsigned long)-1; |
| 2948 | | } |
| 2949 | | return (unsigned long)PyLong_AsUnsignedLong(x); |
| 2950 | | } else { |
| 2951 | | return (unsigned long)PyLong_AsLong(x); |
| 2952 | | } |
| 2953 | | } else { |
| 2954 | | unsigned long val; |
| 2955 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 2956 | | if (!tmp) return (unsigned long)-1; |
| 2957 | | val = __Pyx_PyInt_AsUnsignedLong(tmp); |
| 2958 | | Py_DECREF(tmp); |
| 2959 | | return val; |
| 2960 | | } |
| 2961 | | } |
| 2962 | | |
| 2963 | | static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { |
| 2964 | | const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; |
| 2965 | | const int is_unsigned = neg_one > const_zero; |
| 2966 | | #if PY_VERSION_HEX < 0x03000000 |
| 2967 | | if (likely(PyInt_Check(x))) { |
| 2968 | | long val = PyInt_AS_LONG(x); |
| 2969 | | if (is_unsigned && unlikely(val < 0)) { |
| 2970 | | PyErr_SetString(PyExc_OverflowError, |
| 2971 | | "can't convert negative value to unsigned PY_LONG_LONG"); |
| 2972 | | return (unsigned PY_LONG_LONG)-1; |
| 2973 | | } |
| 2974 | | return (unsigned PY_LONG_LONG)val; |
| 2975 | | } else |
| 2976 | | #endif |
| 2977 | | if (likely(PyLong_Check(x))) { |
| 2978 | | if (is_unsigned) { |
| 2979 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 2980 | | PyErr_SetString(PyExc_OverflowError, |
| 2981 | | "can't convert negative value to unsigned PY_LONG_LONG"); |
| 2982 | | return (unsigned PY_LONG_LONG)-1; |
| 2983 | | } |
| 2984 | | return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
| 2985 | | } else { |
| 2986 | | return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); |
| 2987 | | } |
| 2988 | | } else { |
| 2989 | | unsigned PY_LONG_LONG val; |
| 2990 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 2991 | | if (!tmp) return (unsigned PY_LONG_LONG)-1; |
| 2992 | | val = __Pyx_PyInt_AsUnsignedLongLong(tmp); |
| 2993 | | Py_DECREF(tmp); |
| 2994 | | return val; |
| 2995 | | } |
| 2996 | | } |
| 2997 | | |
| 2998 | | static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { |
| 2999 | | const long neg_one = (long)-1, const_zero = 0; |
| 3000 | | const int is_unsigned = neg_one > const_zero; |
| 3001 | | #if PY_VERSION_HEX < 0x03000000 |
| 3002 | | if (likely(PyInt_Check(x))) { |
| 3003 | | long val = PyInt_AS_LONG(x); |
| 3004 | | if (is_unsigned && unlikely(val < 0)) { |
| 3005 | | PyErr_SetString(PyExc_OverflowError, |
| 3006 | | "can't convert negative value to long"); |
| 3007 | | return (long)-1; |
| 3008 | | } |
| 3009 | | return (long)val; |
| 3010 | | } else |
| 3011 | | #endif |
| 3012 | | if (likely(PyLong_Check(x))) { |
| 3013 | | if (is_unsigned) { |
| 3014 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 3015 | | PyErr_SetString(PyExc_OverflowError, |
| 3016 | | "can't convert negative value to long"); |
| 3017 | | return (long)-1; |
| 3018 | | } |
| 3019 | | return (long)PyLong_AsUnsignedLong(x); |
| 3020 | | } else { |
| 3021 | | return (long)PyLong_AsLong(x); |
| 3022 | | } |
| 3023 | | } else { |
| 3024 | | long val; |
| 3025 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 3026 | | if (!tmp) return (long)-1; |
| 3027 | | val = __Pyx_PyInt_AsLong(tmp); |
| 3028 | | Py_DECREF(tmp); |
| 3029 | | return val; |
| 3030 | | } |
| 3031 | | } |
| 3032 | | |
| 3033 | | static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { |
| 3034 | | const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; |
| 3035 | | const int is_unsigned = neg_one > const_zero; |
| 3036 | | #if PY_VERSION_HEX < 0x03000000 |
| 3037 | | if (likely(PyInt_Check(x))) { |
| 3038 | | long val = PyInt_AS_LONG(x); |
| 3039 | | if (is_unsigned && unlikely(val < 0)) { |
| 3040 | | PyErr_SetString(PyExc_OverflowError, |
| 3041 | | "can't convert negative value to PY_LONG_LONG"); |
| 3042 | | return (PY_LONG_LONG)-1; |
| 3043 | | } |
| 3044 | | return (PY_LONG_LONG)val; |
| 3045 | | } else |
| 3046 | | #endif |
| 3047 | | if (likely(PyLong_Check(x))) { |
| 3048 | | if (is_unsigned) { |
| 3049 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 3050 | | PyErr_SetString(PyExc_OverflowError, |
| 3051 | | "can't convert negative value to PY_LONG_LONG"); |
| 3052 | | return (PY_LONG_LONG)-1; |
| 3053 | | } |
| 3054 | | return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
| 3055 | | } else { |
| 3056 | | return (PY_LONG_LONG)PyLong_AsLongLong(x); |
| 3057 | | } |
| 3058 | | } else { |
| 3059 | | PY_LONG_LONG val; |
| 3060 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 3061 | | if (!tmp) return (PY_LONG_LONG)-1; |
| 3062 | | val = __Pyx_PyInt_AsLongLong(tmp); |
| 3063 | | Py_DECREF(tmp); |
| 3064 | | return val; |
| 3065 | | } |
| 3066 | | } |
| 3067 | | |
| 3068 | | static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { |
| 3069 | | const signed long neg_one = (signed long)-1, const_zero = 0; |
| 3070 | | const int is_unsigned = neg_one > const_zero; |
| 3071 | | #if PY_VERSION_HEX < 0x03000000 |
| 3072 | | if (likely(PyInt_Check(x))) { |
| 3073 | | long val = PyInt_AS_LONG(x); |
| 3074 | | if (is_unsigned && unlikely(val < 0)) { |
| 3075 | | PyErr_SetString(PyExc_OverflowError, |
| 3076 | | "can't convert negative value to signed long"); |
| 3077 | | return (signed long)-1; |
| 3078 | | } |
| 3079 | | return (signed long)val; |
| 3080 | | } else |
| 3081 | | #endif |
| 3082 | | if (likely(PyLong_Check(x))) { |
| 3083 | | if (is_unsigned) { |
| 3084 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 3085 | | PyErr_SetString(PyExc_OverflowError, |
| 3086 | | "can't convert negative value to signed long"); |
| 3087 | | return (signed long)-1; |
| 3088 | | } |
| 3089 | | return (signed long)PyLong_AsUnsignedLong(x); |
| 3090 | | } else { |
| 3091 | | return (signed long)PyLong_AsLong(x); |
| 3092 | | } |
| 3093 | | } else { |
| 3094 | | signed long val; |
| 3095 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 3096 | | if (!tmp) return (signed long)-1; |
| 3097 | | val = __Pyx_PyInt_AsSignedLong(tmp); |
| 3098 | | Py_DECREF(tmp); |
| 3099 | | return val; |
| 3100 | | } |
| 3101 | | } |
| 3102 | | |
| 3103 | | static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { |
| 3104 | | const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; |
| 3105 | | const int is_unsigned = neg_one > const_zero; |
| 3106 | | #if PY_VERSION_HEX < 0x03000000 |
| 3107 | | if (likely(PyInt_Check(x))) { |
| 3108 | | long val = PyInt_AS_LONG(x); |
| 3109 | | if (is_unsigned && unlikely(val < 0)) { |
| 3110 | | PyErr_SetString(PyExc_OverflowError, |
| 3111 | | "can't convert negative value to signed PY_LONG_LONG"); |
| 3112 | | return (signed PY_LONG_LONG)-1; |
| 3113 | | } |
| 3114 | | return (signed PY_LONG_LONG)val; |
| 3115 | | } else |
| 3116 | | #endif |
| 3117 | | if (likely(PyLong_Check(x))) { |
| 3118 | | if (is_unsigned) { |
| 3119 | | if (unlikely(Py_SIZE(x) < 0)) { |
| 3120 | | PyErr_SetString(PyExc_OverflowError, |
| 3121 | | "can't convert negative value to signed PY_LONG_LONG"); |
| 3122 | | return (signed PY_LONG_LONG)-1; |
| 3123 | | } |
| 3124 | | return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); |
| 3125 | | } else { |
| 3126 | | return (signed PY_LONG_LONG)PyLong_AsLongLong(x); |
| 3127 | | } |
| 3128 | | } else { |
| 3129 | | signed PY_LONG_LONG val; |
| 3130 | | PyObject *tmp = __Pyx_PyNumber_Int(x); |
| 3131 | | if (!tmp) return (signed PY_LONG_LONG)-1; |
| 3132 | | val = __Pyx_PyInt_AsSignedLongLong(tmp); |
| 3133 | | Py_DECREF(tmp); |
| 3134 | | return val; |
| 3135 | | } |
| 3136 | | } |
| 3137 | | |
| 3138 | | static int __Pyx_check_binary_version(void) { |
| 3139 | | char ctversion[4], rtversion[4]; |
| 3140 | | PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); |
| 3141 | | PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); |
| 3142 | | if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { |
| 3143 | | char message[200]; |
| 3144 | | PyOS_snprintf(message, sizeof(message), |
| 3145 | | "compiletime version %s of module '%.100s' " |
| 3146 | | "does not match runtime version %s", |
| 3147 | | ctversion, __Pyx_MODULE_NAME, rtversion); |
| 3148 | | #if PY_VERSION_HEX < 0x02050000 |
| 3149 | | return PyErr_Warn(NULL, message); |
| 3150 | | #else |
| 3151 | | return PyErr_WarnEx(NULL, message, 1); |
| 3152 | | #endif |
| 3153 | | } |
| 3154 | | return 0; |
| 3155 | | } |
| 3156 | | |
| 3157 | | #include "compile.h" |
| 3158 | | #include "frameobject.h" |
| 3159 | | #include "traceback.h" |
| 3160 | | |
| 3161 | | static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno, |
| 3162 | | int __pyx_lineno, const char *__pyx_filename) { |
| 3163 | | PyObject *py_srcfile = 0; |
| 3164 | | PyObject *py_funcname = 0; |
| 3165 | | PyObject *py_globals = 0; |
| 3166 | | PyCodeObject *py_code = 0; |
| 3167 | | PyFrameObject *py_frame = 0; |
| 3168 | | |
| 3169 | | #if PY_MAJOR_VERSION < 3 |
| 3170 | | py_srcfile = PyString_FromString(__pyx_filename); |
| 3171 | | #else |
| 3172 | | py_srcfile = PyUnicode_FromString(__pyx_filename); |
| 3173 | | #endif |
| 3174 | | if (!py_srcfile) goto bad; |
| 3175 | | if (__pyx_clineno) { |
| 3176 | | #if PY_MAJOR_VERSION < 3 |
| 3177 | | py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno); |
| 3178 | | #else |
| 3179 | | py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno); |
| 3180 | | #endif |
| 3181 | | } |
| 3182 | | else { |
| 3183 | | #if PY_MAJOR_VERSION < 3 |
| 3184 | | py_funcname = PyString_FromString(funcname); |
| 3185 | | #else |
| 3186 | | py_funcname = PyUnicode_FromString(funcname); |
| 3187 | | #endif |
| 3188 | | } |
| 3189 | | if (!py_funcname) goto bad; |
| 3190 | | py_globals = PyModule_GetDict(__pyx_m); |
| 3191 | | if (!py_globals) goto bad; |
| 3192 | | py_code = PyCode_New( |
| 3193 | | 0, /*int argcount,*/ |
| 3194 | | #if PY_MAJOR_VERSION >= 3 |
| 3195 | | 0, /*int kwonlyargcount,*/ |
| 3196 | | #endif |
| 3197 | | 0, /*int nlocals,*/ |
| 3198 | | 0, /*int stacksize,*/ |
| 3199 | | 0, /*int flags,*/ |
| 3200 | | __pyx_empty_bytes, /*PyObject *code,*/ |
| 3201 | | __pyx_empty_tuple, /*PyObject *consts,*/ |
| 3202 | | __pyx_empty_tuple, /*PyObject *names,*/ |
| 3203 | | __pyx_empty_tuple, /*PyObject *varnames,*/ |
| 3204 | | __pyx_empty_tuple, /*PyObject *freevars,*/ |
| 3205 | | __pyx_empty_tuple, /*PyObject *cellvars,*/ |
| 3206 | | py_srcfile, /*PyObject *filename,*/ |
| 3207 | | py_funcname, /*PyObject *name,*/ |
| 3208 | | __pyx_lineno, /*int firstlineno,*/ |
| 3209 | | __pyx_empty_bytes /*PyObject *lnotab*/ |
| 3210 | | ); |
| 3211 | | if (!py_code) goto bad; |
| 3212 | | py_frame = PyFrame_New( |
| 3213 | | PyThreadState_GET(), /*PyThreadState *tstate,*/ |
| 3214 | | py_code, /*PyCodeObject *code,*/ |
| 3215 | | py_globals, /*PyObject *globals,*/ |
| 3216 | | 0 /*PyObject *locals*/ |
| 3217 | | ); |
| 3218 | | if (!py_frame) goto bad; |
| 3219 | | py_frame->f_lineno = __pyx_lineno; |
| 3220 | | PyTraceBack_Here(py_frame); |
| 3221 | | bad: |
| 3222 | | Py_XDECREF(py_srcfile); |
| 3223 | | Py_XDECREF(py_funcname); |
| 3224 | | Py_XDECREF(py_code); |
| 3225 | | Py_XDECREF(py_frame); |
| 3226 | | } |
| 3227 | | |
| 3228 | | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { |
| 3229 | | while (t->p) { |
| 3230 | | #if PY_MAJOR_VERSION < 3 |
| 3231 | | if (t->is_unicode) { |
| 3232 | | *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); |
| 3233 | | } else if (t->intern) { |
| 3234 | | *t->p = PyString_InternFromString(t->s); |
| 3235 | | } else { |
| 3236 | | *t->p = PyString_FromStringAndSize(t->s, t->n - 1); |
| 3237 | | } |
| 3238 | | #else /* Python 3+ has unicode identifiers */ |
| 3239 | | if (t->is_unicode | t->is_str) { |
| 3240 | | if (t->intern) { |
| 3241 | | *t->p = PyUnicode_InternFromString(t->s); |
| 3242 | | } else if (t->encoding) { |
| 3243 | | *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); |
| 3244 | | } else { |
| 3245 | | *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); |
| 3246 | | } |
| 3247 | | } else { |
| 3248 | | *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); |
| 3249 | | } |
| 3250 | | #endif |
| 3251 | | if (!*t->p) |
| 3252 | | return -1; |
| 3253 | | ++t; |
| 3254 | | } |
| 3255 | | return 0; |
| 3256 | | } |
| 3257 | | |
| 3258 | | /* Type Conversion Functions */ |
| 3259 | | |
| 3260 | | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { |
| 3261 | | int is_true = x == Py_True; |
| 3262 | | if (is_true | (x == Py_False) | (x == Py_None)) return is_true; |
| 3263 | | else return PyObject_IsTrue(x); |
| 3264 | | } |
| 3265 | | |
| 3266 | | static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { |
| 3267 | | PyNumberMethods *m; |
| 3268 | | const char *name = NULL; |
| 3269 | | PyObject *res = NULL; |
| 3270 | | #if PY_VERSION_HEX < 0x03000000 |
| 3271 | | if (PyInt_Check(x) || PyLong_Check(x)) |
| 3272 | | #else |
| 3273 | | if (PyLong_Check(x)) |
| 3274 | | #endif |
| 3275 | | return Py_INCREF(x), x; |
| 3276 | | m = Py_TYPE(x)->tp_as_number; |
| 3277 | | #if PY_VERSION_HEX < 0x03000000 |
| 3278 | | if (m && m->nb_int) { |
| 3279 | | name = "int"; |
| 3280 | | res = PyNumber_Int(x); |
| 3281 | | } |
| 3282 | | else if (m && m->nb_long) { |
| 3283 | | name = "long"; |
| 3284 | | res = PyNumber_Long(x); |
| 3285 | | } |
| 3286 | | #else |
| 3287 | | if (m && m->nb_int) { |
| 3288 | | name = "int"; |
| 3289 | | res = PyNumber_Long(x); |
| 3290 | | } |
| 3291 | | #endif |
| 3292 | | if (res) { |
| 3293 | | #if PY_VERSION_HEX < 0x03000000 |
| 3294 | | if (!PyInt_Check(res) && !PyLong_Check(res)) { |
| 3295 | | #else |
| 3296 | | if (!PyLong_Check(res)) { |
| 3297 | | #endif |
| 3298 | | PyErr_Format(PyExc_TypeError, |
| 3299 | | "__%s__ returned non-%s (type %.200s)", |
| 3300 | | name, name, Py_TYPE(res)->tp_name); |
| 3301 | | Py_DECREF(res); |
| 3302 | | return NULL; |
| 3303 | | } |
| 3304 | | } |
| 3305 | | else if (!PyErr_Occurred()) { |
| 3306 | | PyErr_SetString(PyExc_TypeError, |
| 3307 | | "an integer is required"); |
| 3308 | | } |
| 3309 | | return res; |
| 3310 | | } |
| 3311 | | |
| 3312 | | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { |
| 3313 | | Py_ssize_t ival; |
| 3314 | | PyObject* x = PyNumber_Index(b); |
| 3315 | | if (!x) return -1; |
| 3316 | | ival = PyInt_AsSsize_t(x); |
| 3317 | | Py_DECREF(x); |
| 3318 | | return ival; |
| 3319 | | } |
| 3320 | | |
| 3321 | | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { |
| 3322 | | #if PY_VERSION_HEX < 0x02050000 |
| 3323 | | if (ival <= LONG_MAX) |
| 3324 | | return PyInt_FromLong((long)ival); |
| 3325 | | else { |
| 3326 | | unsigned char *bytes = (unsigned char *) &ival; |
| 3327 | | int one = 1; int little = (int)*(unsigned char*)&one; |
| 3328 | | return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); |
| 3329 | | } |
| 3330 | | #else |
| 3331 | | return PyInt_FromSize_t(ival); |
| 3332 | | #endif |
| 3333 | | } |
| 3334 | | |
| 3335 | | static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { |
| 3336 | | unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); |
| 3337 | | if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) { |
| 3338 | | return (size_t)-1; |
| 3339 | | } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { |
| 3340 | | PyErr_SetString(PyExc_OverflowError, |
| 3341 | | "value too large to convert to size_t"); |
| 3342 | | return (size_t)-1; |
| 3343 | | } |
| 3344 | | return (size_t)val; |
| 3345 | | } |
| 3346 | | |
| 3347 | | |
| 3348 | | #endif /* Py_PYTHON_H */ |