annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/python3.8/site-packages/pysam/libcsamtools.c @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
rev   line source
jpayne@68 1 /* Generated by Cython 3.0.11 */
jpayne@68 2
jpayne@68 3 /* BEGIN: Cython Metadata
jpayne@68 4 {
jpayne@68 5 "distutils": {
jpayne@68 6 "define_macros": [
jpayne@68 7 [
jpayne@68 8 "BUILDING_WHEEL",
jpayne@68 9 null
jpayne@68 10 ]
jpayne@68 11 ],
jpayne@68 12 "depends": [
jpayne@68 13 "/project/samtools/samtools.pysam.h"
jpayne@68 14 ],
jpayne@68 15 "extra_compile_args": [
jpayne@68 16 "-Wno-unused",
jpayne@68 17 "-Wno-strict-prototypes",
jpayne@68 18 "-Wno-sign-compare",
jpayne@68 19 "-Wno-error=declaration-after-statement"
jpayne@68 20 ],
jpayne@68 21 "extra_link_args": [
jpayne@68 22 "-Wl,-rpath,$ORIGIN"
jpayne@68 23 ],
jpayne@68 24 "include_dirs": [
jpayne@68 25 "/project/pysam",
jpayne@68 26 "/project/htslib",
jpayne@68 27 "/project/samtools",
jpayne@68 28 "/project/samtools/lz4",
jpayne@68 29 "/project/bcftools",
jpayne@68 30 "/project"
jpayne@68 31 ],
jpayne@68 32 "language": "c",
jpayne@68 33 "libraries": [
jpayne@68 34 "z",
jpayne@68 35 "lzma",
jpayne@68 36 "bz2",
jpayne@68 37 "z",
jpayne@68 38 "m",
jpayne@68 39 "curl",
jpayne@68 40 "crypto",
jpayne@68 41 "chtslib.cpython-36m-x86_64-linux-gnu"
jpayne@68 42 ],
jpayne@68 43 "library_dirs": [
jpayne@68 44 "/project/pysam",
jpayne@68 45 "/project",
jpayne@68 46 "build/lib.linux-x86_64-3.6/pysam",
jpayne@68 47 "build/lib.linux-x86_64-3.6/pysam"
jpayne@68 48 ],
jpayne@68 49 "name": "pysam.libcsamtools",
jpayne@68 50 "sources": [
jpayne@68 51 "pysam/libcsamtools.pyx",
jpayne@68 52 "samtools/bam_fastq.c.pysam.c",
jpayne@68 53 "samtools/bam.c.pysam.c",
jpayne@68 54 "samtools/bam_markdup.c.pysam.c",
jpayne@68 55 "samtools/dict.c.pysam.c",
jpayne@68 56 "samtools/bam_quickcheck.c.pysam.c",
jpayne@68 57 "samtools/stats.c.pysam.c",
jpayne@68 58 "samtools/sam_opts.c.pysam.c",
jpayne@68 59 "samtools/bam_sort.c.pysam.c",
jpayne@68 60 "samtools/bam_plcmd.c.pysam.c",
jpayne@68 61 "samtools/stats_isize.c.pysam.c",
jpayne@68 62 "samtools/bam_aux.c.pysam.c",
jpayne@68 63 "samtools/cut_target.c.pysam.c",
jpayne@68 64 "samtools/bam_cat.c.pysam.c",
jpayne@68 65 "samtools/bam_consensus.c.pysam.c",
jpayne@68 66 "samtools/bam2depth.c.pysam.c",
jpayne@68 67 "samtools/coverage.c.pysam.c",
jpayne@68 68 "samtools/padding.c.pysam.c",
jpayne@68 69 "samtools/bam_index.c.pysam.c",
jpayne@68 70 "samtools/cram_size.c.pysam.c",
jpayne@68 71 "samtools/bam_import.c.pysam.c",
jpayne@68 72 "samtools/bam_mate.c.pysam.c",
jpayne@68 73 "samtools/bam_md.c.pysam.c",
jpayne@68 74 "samtools/bam_ampliconclip.c.pysam.c",
jpayne@68 75 "samtools/consensus_pileup.c.pysam.c",
jpayne@68 76 "samtools/samtools.pysam.c",
jpayne@68 77 "samtools/sam_view.c.pysam.c",
jpayne@68 78 "samtools/bam_flags.c.pysam.c",
jpayne@68 79 "samtools/reset.c.pysam.c",
jpayne@68 80 "samtools/bam_lpileup.c.pysam.c",
jpayne@68 81 "samtools/phase.c.pysam.c",
jpayne@68 82 "samtools/bam_split.c.pysam.c",
jpayne@68 83 "samtools/sam_utils.c.pysam.c",
jpayne@68 84 "samtools/bam_samples.c.pysam.c",
jpayne@68 85 "samtools/faidx.c.pysam.c",
jpayne@68 86 "samtools/bam_reheader.c.pysam.c",
jpayne@68 87 "samtools/bam_rmdupse.c.pysam.c",
jpayne@68 88 "samtools/bamshuf.c.pysam.c",
jpayne@68 89 "samtools/reference.c.pysam.c",
jpayne@68 90 "samtools/bam_rmdup.c.pysam.c",
jpayne@68 91 "samtools/bam_addrprg.c.pysam.c",
jpayne@68 92 "samtools/bam_stat.c.pysam.c",
jpayne@68 93 "samtools/amplicon_stats.c.pysam.c",
jpayne@68 94 "samtools/sample.c.pysam.c",
jpayne@68 95 "samtools/bedidx.c.pysam.c",
jpayne@68 96 "samtools/bam_color.c.pysam.c",
jpayne@68 97 "samtools/bamtk.c.pysam.c",
jpayne@68 98 "samtools/bedcov.c.pysam.c",
jpayne@68 99 "samtools/tmp_file.c.pysam.c",
jpayne@68 100 "samtools/bam_plbuf.c.pysam.c",
jpayne@68 101 "samtools/lz4/lz4.c"
jpayne@68 102 ]
jpayne@68 103 },
jpayne@68 104 "module_name": "pysam.libcsamtools"
jpayne@68 105 }
jpayne@68 106 END: Cython Metadata */
jpayne@68 107
jpayne@68 108 #ifndef PY_SSIZE_T_CLEAN
jpayne@68 109 #define PY_SSIZE_T_CLEAN
jpayne@68 110 #endif /* PY_SSIZE_T_CLEAN */
jpayne@68 111 #if defined(CYTHON_LIMITED_API) && 0
jpayne@68 112 #ifndef Py_LIMITED_API
jpayne@68 113 #if CYTHON_LIMITED_API+0 > 0x03030000
jpayne@68 114 #define Py_LIMITED_API CYTHON_LIMITED_API
jpayne@68 115 #else
jpayne@68 116 #define Py_LIMITED_API 0x03030000
jpayne@68 117 #endif
jpayne@68 118 #endif
jpayne@68 119 #endif
jpayne@68 120
jpayne@68 121 #include "Python.h"
jpayne@68 122 #ifndef Py_PYTHON_H
jpayne@68 123 #error Python headers needed to compile C extensions, please install development version of Python.
jpayne@68 124 #elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
jpayne@68 125 #error Cython requires Python 2.7+ or Python 3.3+.
jpayne@68 126 #else
jpayne@68 127 #if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
jpayne@68 128 #define __PYX_EXTRA_ABI_MODULE_NAME "limited"
jpayne@68 129 #else
jpayne@68 130 #define __PYX_EXTRA_ABI_MODULE_NAME ""
jpayne@68 131 #endif
jpayne@68 132 #define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
jpayne@68 133 #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
jpayne@68 134 #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
jpayne@68 135 #define CYTHON_HEX_VERSION 0x03000BF0
jpayne@68 136 #define CYTHON_FUTURE_DIVISION 1
jpayne@68 137 #include <stddef.h>
jpayne@68 138 #ifndef offsetof
jpayne@68 139 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
jpayne@68 140 #endif
jpayne@68 141 #if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
jpayne@68 142 #ifndef __stdcall
jpayne@68 143 #define __stdcall
jpayne@68 144 #endif
jpayne@68 145 #ifndef __cdecl
jpayne@68 146 #define __cdecl
jpayne@68 147 #endif
jpayne@68 148 #ifndef __fastcall
jpayne@68 149 #define __fastcall
jpayne@68 150 #endif
jpayne@68 151 #endif
jpayne@68 152 #ifndef DL_IMPORT
jpayne@68 153 #define DL_IMPORT(t) t
jpayne@68 154 #endif
jpayne@68 155 #ifndef DL_EXPORT
jpayne@68 156 #define DL_EXPORT(t) t
jpayne@68 157 #endif
jpayne@68 158 #define __PYX_COMMA ,
jpayne@68 159 #ifndef HAVE_LONG_LONG
jpayne@68 160 #define HAVE_LONG_LONG
jpayne@68 161 #endif
jpayne@68 162 #ifndef PY_LONG_LONG
jpayne@68 163 #define PY_LONG_LONG LONG_LONG
jpayne@68 164 #endif
jpayne@68 165 #ifndef Py_HUGE_VAL
jpayne@68 166 #define Py_HUGE_VAL HUGE_VAL
jpayne@68 167 #endif
jpayne@68 168 #define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
jpayne@68 169 #if defined(GRAALVM_PYTHON)
jpayne@68 170 /* For very preliminary testing purposes. Most variables are set the same as PyPy.
jpayne@68 171 The existence of this section does not imply that anything works or is even tested */
jpayne@68 172 #define CYTHON_COMPILING_IN_PYPY 0
jpayne@68 173 #define CYTHON_COMPILING_IN_CPYTHON 0
jpayne@68 174 #define CYTHON_COMPILING_IN_LIMITED_API 0
jpayne@68 175 #define CYTHON_COMPILING_IN_GRAAL 1
jpayne@68 176 #define CYTHON_COMPILING_IN_NOGIL 0
jpayne@68 177 #undef CYTHON_USE_TYPE_SLOTS
jpayne@68 178 #define CYTHON_USE_TYPE_SLOTS 0
jpayne@68 179 #undef CYTHON_USE_TYPE_SPECS
jpayne@68 180 #define CYTHON_USE_TYPE_SPECS 0
jpayne@68 181 #undef CYTHON_USE_PYTYPE_LOOKUP
jpayne@68 182 #define CYTHON_USE_PYTYPE_LOOKUP 0
jpayne@68 183 #if PY_VERSION_HEX < 0x03050000
jpayne@68 184 #undef CYTHON_USE_ASYNC_SLOTS
jpayne@68 185 #define CYTHON_USE_ASYNC_SLOTS 0
jpayne@68 186 #elif !defined(CYTHON_USE_ASYNC_SLOTS)
jpayne@68 187 #define CYTHON_USE_ASYNC_SLOTS 1
jpayne@68 188 #endif
jpayne@68 189 #undef CYTHON_USE_PYLIST_INTERNALS
jpayne@68 190 #define CYTHON_USE_PYLIST_INTERNALS 0
jpayne@68 191 #undef CYTHON_USE_UNICODE_INTERNALS
jpayne@68 192 #define CYTHON_USE_UNICODE_INTERNALS 0
jpayne@68 193 #undef CYTHON_USE_UNICODE_WRITER
jpayne@68 194 #define CYTHON_USE_UNICODE_WRITER 0
jpayne@68 195 #undef CYTHON_USE_PYLONG_INTERNALS
jpayne@68 196 #define CYTHON_USE_PYLONG_INTERNALS 0
jpayne@68 197 #undef CYTHON_AVOID_BORROWED_REFS
jpayne@68 198 #define CYTHON_AVOID_BORROWED_REFS 1
jpayne@68 199 #undef CYTHON_ASSUME_SAFE_MACROS
jpayne@68 200 #define CYTHON_ASSUME_SAFE_MACROS 0
jpayne@68 201 #undef CYTHON_UNPACK_METHODS
jpayne@68 202 #define CYTHON_UNPACK_METHODS 0
jpayne@68 203 #undef CYTHON_FAST_THREAD_STATE
jpayne@68 204 #define CYTHON_FAST_THREAD_STATE 0
jpayne@68 205 #undef CYTHON_FAST_GIL
jpayne@68 206 #define CYTHON_FAST_GIL 0
jpayne@68 207 #undef CYTHON_METH_FASTCALL
jpayne@68 208 #define CYTHON_METH_FASTCALL 0
jpayne@68 209 #undef CYTHON_FAST_PYCALL
jpayne@68 210 #define CYTHON_FAST_PYCALL 0
jpayne@68 211 #ifndef CYTHON_PEP487_INIT_SUBCLASS
jpayne@68 212 #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
jpayne@68 213 #endif
jpayne@68 214 #undef CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 215 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
jpayne@68 216 #undef CYTHON_USE_MODULE_STATE
jpayne@68 217 #define CYTHON_USE_MODULE_STATE 0
jpayne@68 218 #undef CYTHON_USE_TP_FINALIZE
jpayne@68 219 #define CYTHON_USE_TP_FINALIZE 0
jpayne@68 220 #undef CYTHON_USE_DICT_VERSIONS
jpayne@68 221 #define CYTHON_USE_DICT_VERSIONS 0
jpayne@68 222 #undef CYTHON_USE_EXC_INFO_STACK
jpayne@68 223 #define CYTHON_USE_EXC_INFO_STACK 0
jpayne@68 224 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
jpayne@68 225 #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
jpayne@68 226 #endif
jpayne@68 227 #undef CYTHON_USE_FREELISTS
jpayne@68 228 #define CYTHON_USE_FREELISTS 0
jpayne@68 229 #elif defined(PYPY_VERSION)
jpayne@68 230 #define CYTHON_COMPILING_IN_PYPY 1
jpayne@68 231 #define CYTHON_COMPILING_IN_CPYTHON 0
jpayne@68 232 #define CYTHON_COMPILING_IN_LIMITED_API 0
jpayne@68 233 #define CYTHON_COMPILING_IN_GRAAL 0
jpayne@68 234 #define CYTHON_COMPILING_IN_NOGIL 0
jpayne@68 235 #undef CYTHON_USE_TYPE_SLOTS
jpayne@68 236 #define CYTHON_USE_TYPE_SLOTS 0
jpayne@68 237 #ifndef CYTHON_USE_TYPE_SPECS
jpayne@68 238 #define CYTHON_USE_TYPE_SPECS 0
jpayne@68 239 #endif
jpayne@68 240 #undef CYTHON_USE_PYTYPE_LOOKUP
jpayne@68 241 #define CYTHON_USE_PYTYPE_LOOKUP 0
jpayne@68 242 #if PY_VERSION_HEX < 0x03050000
jpayne@68 243 #undef CYTHON_USE_ASYNC_SLOTS
jpayne@68 244 #define CYTHON_USE_ASYNC_SLOTS 0
jpayne@68 245 #elif !defined(CYTHON_USE_ASYNC_SLOTS)
jpayne@68 246 #define CYTHON_USE_ASYNC_SLOTS 1
jpayne@68 247 #endif
jpayne@68 248 #undef CYTHON_USE_PYLIST_INTERNALS
jpayne@68 249 #define CYTHON_USE_PYLIST_INTERNALS 0
jpayne@68 250 #undef CYTHON_USE_UNICODE_INTERNALS
jpayne@68 251 #define CYTHON_USE_UNICODE_INTERNALS 0
jpayne@68 252 #undef CYTHON_USE_UNICODE_WRITER
jpayne@68 253 #define CYTHON_USE_UNICODE_WRITER 0
jpayne@68 254 #undef CYTHON_USE_PYLONG_INTERNALS
jpayne@68 255 #define CYTHON_USE_PYLONG_INTERNALS 0
jpayne@68 256 #undef CYTHON_AVOID_BORROWED_REFS
jpayne@68 257 #define CYTHON_AVOID_BORROWED_REFS 1
jpayne@68 258 #undef CYTHON_ASSUME_SAFE_MACROS
jpayne@68 259 #define CYTHON_ASSUME_SAFE_MACROS 0
jpayne@68 260 #undef CYTHON_UNPACK_METHODS
jpayne@68 261 #define CYTHON_UNPACK_METHODS 0
jpayne@68 262 #undef CYTHON_FAST_THREAD_STATE
jpayne@68 263 #define CYTHON_FAST_THREAD_STATE 0
jpayne@68 264 #undef CYTHON_FAST_GIL
jpayne@68 265 #define CYTHON_FAST_GIL 0
jpayne@68 266 #undef CYTHON_METH_FASTCALL
jpayne@68 267 #define CYTHON_METH_FASTCALL 0
jpayne@68 268 #undef CYTHON_FAST_PYCALL
jpayne@68 269 #define CYTHON_FAST_PYCALL 0
jpayne@68 270 #ifndef CYTHON_PEP487_INIT_SUBCLASS
jpayne@68 271 #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
jpayne@68 272 #endif
jpayne@68 273 #if PY_VERSION_HEX < 0x03090000
jpayne@68 274 #undef CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 275 #define CYTHON_PEP489_MULTI_PHASE_INIT 0
jpayne@68 276 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
jpayne@68 277 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
jpayne@68 278 #endif
jpayne@68 279 #undef CYTHON_USE_MODULE_STATE
jpayne@68 280 #define CYTHON_USE_MODULE_STATE 0
jpayne@68 281 #undef CYTHON_USE_TP_FINALIZE
jpayne@68 282 #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
jpayne@68 283 #undef CYTHON_USE_DICT_VERSIONS
jpayne@68 284 #define CYTHON_USE_DICT_VERSIONS 0
jpayne@68 285 #undef CYTHON_USE_EXC_INFO_STACK
jpayne@68 286 #define CYTHON_USE_EXC_INFO_STACK 0
jpayne@68 287 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
jpayne@68 288 #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
jpayne@68 289 #endif
jpayne@68 290 #undef CYTHON_USE_FREELISTS
jpayne@68 291 #define CYTHON_USE_FREELISTS 0
jpayne@68 292 #elif defined(CYTHON_LIMITED_API)
jpayne@68 293 #ifdef Py_LIMITED_API
jpayne@68 294 #undef __PYX_LIMITED_VERSION_HEX
jpayne@68 295 #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
jpayne@68 296 #endif
jpayne@68 297 #define CYTHON_COMPILING_IN_PYPY 0
jpayne@68 298 #define CYTHON_COMPILING_IN_CPYTHON 0
jpayne@68 299 #define CYTHON_COMPILING_IN_LIMITED_API 1
jpayne@68 300 #define CYTHON_COMPILING_IN_GRAAL 0
jpayne@68 301 #define CYTHON_COMPILING_IN_NOGIL 0
jpayne@68 302 #undef CYTHON_CLINE_IN_TRACEBACK
jpayne@68 303 #define CYTHON_CLINE_IN_TRACEBACK 0
jpayne@68 304 #undef CYTHON_USE_TYPE_SLOTS
jpayne@68 305 #define CYTHON_USE_TYPE_SLOTS 0
jpayne@68 306 #undef CYTHON_USE_TYPE_SPECS
jpayne@68 307 #define CYTHON_USE_TYPE_SPECS 1
jpayne@68 308 #undef CYTHON_USE_PYTYPE_LOOKUP
jpayne@68 309 #define CYTHON_USE_PYTYPE_LOOKUP 0
jpayne@68 310 #undef CYTHON_USE_ASYNC_SLOTS
jpayne@68 311 #define CYTHON_USE_ASYNC_SLOTS 0
jpayne@68 312 #undef CYTHON_USE_PYLIST_INTERNALS
jpayne@68 313 #define CYTHON_USE_PYLIST_INTERNALS 0
jpayne@68 314 #undef CYTHON_USE_UNICODE_INTERNALS
jpayne@68 315 #define CYTHON_USE_UNICODE_INTERNALS 0
jpayne@68 316 #ifndef CYTHON_USE_UNICODE_WRITER
jpayne@68 317 #define CYTHON_USE_UNICODE_WRITER 0
jpayne@68 318 #endif
jpayne@68 319 #undef CYTHON_USE_PYLONG_INTERNALS
jpayne@68 320 #define CYTHON_USE_PYLONG_INTERNALS 0
jpayne@68 321 #ifndef CYTHON_AVOID_BORROWED_REFS
jpayne@68 322 #define CYTHON_AVOID_BORROWED_REFS 0
jpayne@68 323 #endif
jpayne@68 324 #undef CYTHON_ASSUME_SAFE_MACROS
jpayne@68 325 #define CYTHON_ASSUME_SAFE_MACROS 0
jpayne@68 326 #undef CYTHON_UNPACK_METHODS
jpayne@68 327 #define CYTHON_UNPACK_METHODS 0
jpayne@68 328 #undef CYTHON_FAST_THREAD_STATE
jpayne@68 329 #define CYTHON_FAST_THREAD_STATE 0
jpayne@68 330 #undef CYTHON_FAST_GIL
jpayne@68 331 #define CYTHON_FAST_GIL 0
jpayne@68 332 #undef CYTHON_METH_FASTCALL
jpayne@68 333 #define CYTHON_METH_FASTCALL 0
jpayne@68 334 #undef CYTHON_FAST_PYCALL
jpayne@68 335 #define CYTHON_FAST_PYCALL 0
jpayne@68 336 #ifndef CYTHON_PEP487_INIT_SUBCLASS
jpayne@68 337 #define CYTHON_PEP487_INIT_SUBCLASS 1
jpayne@68 338 #endif
jpayne@68 339 #undef CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 340 #define CYTHON_PEP489_MULTI_PHASE_INIT 0
jpayne@68 341 #undef CYTHON_USE_MODULE_STATE
jpayne@68 342 #define CYTHON_USE_MODULE_STATE 1
jpayne@68 343 #ifndef CYTHON_USE_TP_FINALIZE
jpayne@68 344 #define CYTHON_USE_TP_FINALIZE 0
jpayne@68 345 #endif
jpayne@68 346 #undef CYTHON_USE_DICT_VERSIONS
jpayne@68 347 #define CYTHON_USE_DICT_VERSIONS 0
jpayne@68 348 #undef CYTHON_USE_EXC_INFO_STACK
jpayne@68 349 #define CYTHON_USE_EXC_INFO_STACK 0
jpayne@68 350 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
jpayne@68 351 #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
jpayne@68 352 #endif
jpayne@68 353 #undef CYTHON_USE_FREELISTS
jpayne@68 354 #define CYTHON_USE_FREELISTS 0
jpayne@68 355 #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
jpayne@68 356 #define CYTHON_COMPILING_IN_PYPY 0
jpayne@68 357 #define CYTHON_COMPILING_IN_CPYTHON 0
jpayne@68 358 #define CYTHON_COMPILING_IN_LIMITED_API 0
jpayne@68 359 #define CYTHON_COMPILING_IN_GRAAL 0
jpayne@68 360 #define CYTHON_COMPILING_IN_NOGIL 1
jpayne@68 361 #ifndef CYTHON_USE_TYPE_SLOTS
jpayne@68 362 #define CYTHON_USE_TYPE_SLOTS 1
jpayne@68 363 #endif
jpayne@68 364 #ifndef CYTHON_USE_TYPE_SPECS
jpayne@68 365 #define CYTHON_USE_TYPE_SPECS 0
jpayne@68 366 #endif
jpayne@68 367 #undef CYTHON_USE_PYTYPE_LOOKUP
jpayne@68 368 #define CYTHON_USE_PYTYPE_LOOKUP 0
jpayne@68 369 #ifndef CYTHON_USE_ASYNC_SLOTS
jpayne@68 370 #define CYTHON_USE_ASYNC_SLOTS 1
jpayne@68 371 #endif
jpayne@68 372 #ifndef CYTHON_USE_PYLONG_INTERNALS
jpayne@68 373 #define CYTHON_USE_PYLONG_INTERNALS 0
jpayne@68 374 #endif
jpayne@68 375 #undef CYTHON_USE_PYLIST_INTERNALS
jpayne@68 376 #define CYTHON_USE_PYLIST_INTERNALS 0
jpayne@68 377 #ifndef CYTHON_USE_UNICODE_INTERNALS
jpayne@68 378 #define CYTHON_USE_UNICODE_INTERNALS 1
jpayne@68 379 #endif
jpayne@68 380 #undef CYTHON_USE_UNICODE_WRITER
jpayne@68 381 #define CYTHON_USE_UNICODE_WRITER 0
jpayne@68 382 #ifndef CYTHON_AVOID_BORROWED_REFS
jpayne@68 383 #define CYTHON_AVOID_BORROWED_REFS 0
jpayne@68 384 #endif
jpayne@68 385 #ifndef CYTHON_ASSUME_SAFE_MACROS
jpayne@68 386 #define CYTHON_ASSUME_SAFE_MACROS 1
jpayne@68 387 #endif
jpayne@68 388 #ifndef CYTHON_UNPACK_METHODS
jpayne@68 389 #define CYTHON_UNPACK_METHODS 1
jpayne@68 390 #endif
jpayne@68 391 #undef CYTHON_FAST_THREAD_STATE
jpayne@68 392 #define CYTHON_FAST_THREAD_STATE 0
jpayne@68 393 #undef CYTHON_FAST_GIL
jpayne@68 394 #define CYTHON_FAST_GIL 0
jpayne@68 395 #ifndef CYTHON_METH_FASTCALL
jpayne@68 396 #define CYTHON_METH_FASTCALL 1
jpayne@68 397 #endif
jpayne@68 398 #undef CYTHON_FAST_PYCALL
jpayne@68 399 #define CYTHON_FAST_PYCALL 0
jpayne@68 400 #ifndef CYTHON_PEP487_INIT_SUBCLASS
jpayne@68 401 #define CYTHON_PEP487_INIT_SUBCLASS 1
jpayne@68 402 #endif
jpayne@68 403 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 404 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
jpayne@68 405 #endif
jpayne@68 406 #ifndef CYTHON_USE_MODULE_STATE
jpayne@68 407 #define CYTHON_USE_MODULE_STATE 0
jpayne@68 408 #endif
jpayne@68 409 #ifndef CYTHON_USE_TP_FINALIZE
jpayne@68 410 #define CYTHON_USE_TP_FINALIZE 1
jpayne@68 411 #endif
jpayne@68 412 #undef CYTHON_USE_DICT_VERSIONS
jpayne@68 413 #define CYTHON_USE_DICT_VERSIONS 0
jpayne@68 414 #undef CYTHON_USE_EXC_INFO_STACK
jpayne@68 415 #define CYTHON_USE_EXC_INFO_STACK 0
jpayne@68 416 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
jpayne@68 417 #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
jpayne@68 418 #endif
jpayne@68 419 #ifndef CYTHON_USE_FREELISTS
jpayne@68 420 #define CYTHON_USE_FREELISTS 0
jpayne@68 421 #endif
jpayne@68 422 #else
jpayne@68 423 #define CYTHON_COMPILING_IN_PYPY 0
jpayne@68 424 #define CYTHON_COMPILING_IN_CPYTHON 1
jpayne@68 425 #define CYTHON_COMPILING_IN_LIMITED_API 0
jpayne@68 426 #define CYTHON_COMPILING_IN_GRAAL 0
jpayne@68 427 #define CYTHON_COMPILING_IN_NOGIL 0
jpayne@68 428 #ifndef CYTHON_USE_TYPE_SLOTS
jpayne@68 429 #define CYTHON_USE_TYPE_SLOTS 1
jpayne@68 430 #endif
jpayne@68 431 #ifndef CYTHON_USE_TYPE_SPECS
jpayne@68 432 #define CYTHON_USE_TYPE_SPECS 0
jpayne@68 433 #endif
jpayne@68 434 #ifndef CYTHON_USE_PYTYPE_LOOKUP
jpayne@68 435 #define CYTHON_USE_PYTYPE_LOOKUP 1
jpayne@68 436 #endif
jpayne@68 437 #if PY_MAJOR_VERSION < 3
jpayne@68 438 #undef CYTHON_USE_ASYNC_SLOTS
jpayne@68 439 #define CYTHON_USE_ASYNC_SLOTS 0
jpayne@68 440 #elif !defined(CYTHON_USE_ASYNC_SLOTS)
jpayne@68 441 #define CYTHON_USE_ASYNC_SLOTS 1
jpayne@68 442 #endif
jpayne@68 443 #ifndef CYTHON_USE_PYLONG_INTERNALS
jpayne@68 444 #define CYTHON_USE_PYLONG_INTERNALS 1
jpayne@68 445 #endif
jpayne@68 446 #ifndef CYTHON_USE_PYLIST_INTERNALS
jpayne@68 447 #define CYTHON_USE_PYLIST_INTERNALS 1
jpayne@68 448 #endif
jpayne@68 449 #ifndef CYTHON_USE_UNICODE_INTERNALS
jpayne@68 450 #define CYTHON_USE_UNICODE_INTERNALS 1
jpayne@68 451 #endif
jpayne@68 452 #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
jpayne@68 453 #undef CYTHON_USE_UNICODE_WRITER
jpayne@68 454 #define CYTHON_USE_UNICODE_WRITER 0
jpayne@68 455 #elif !defined(CYTHON_USE_UNICODE_WRITER)
jpayne@68 456 #define CYTHON_USE_UNICODE_WRITER 1
jpayne@68 457 #endif
jpayne@68 458 #ifndef CYTHON_AVOID_BORROWED_REFS
jpayne@68 459 #define CYTHON_AVOID_BORROWED_REFS 0
jpayne@68 460 #endif
jpayne@68 461 #ifndef CYTHON_ASSUME_SAFE_MACROS
jpayne@68 462 #define CYTHON_ASSUME_SAFE_MACROS 1
jpayne@68 463 #endif
jpayne@68 464 #ifndef CYTHON_UNPACK_METHODS
jpayne@68 465 #define CYTHON_UNPACK_METHODS 1
jpayne@68 466 #endif
jpayne@68 467 #ifndef CYTHON_FAST_THREAD_STATE
jpayne@68 468 #define CYTHON_FAST_THREAD_STATE 1
jpayne@68 469 #endif
jpayne@68 470 #ifndef CYTHON_FAST_GIL
jpayne@68 471 #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
jpayne@68 472 #endif
jpayne@68 473 #ifndef CYTHON_METH_FASTCALL
jpayne@68 474 #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
jpayne@68 475 #endif
jpayne@68 476 #ifndef CYTHON_FAST_PYCALL
jpayne@68 477 #define CYTHON_FAST_PYCALL 1
jpayne@68 478 #endif
jpayne@68 479 #ifndef CYTHON_PEP487_INIT_SUBCLASS
jpayne@68 480 #define CYTHON_PEP487_INIT_SUBCLASS 1
jpayne@68 481 #endif
jpayne@68 482 #if PY_VERSION_HEX < 0x03050000
jpayne@68 483 #undef CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 484 #define CYTHON_PEP489_MULTI_PHASE_INIT 0
jpayne@68 485 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
jpayne@68 486 #define CYTHON_PEP489_MULTI_PHASE_INIT 1
jpayne@68 487 #endif
jpayne@68 488 #ifndef CYTHON_USE_MODULE_STATE
jpayne@68 489 #define CYTHON_USE_MODULE_STATE 0
jpayne@68 490 #endif
jpayne@68 491 #if PY_VERSION_HEX < 0x030400a1
jpayne@68 492 #undef CYTHON_USE_TP_FINALIZE
jpayne@68 493 #define CYTHON_USE_TP_FINALIZE 0
jpayne@68 494 #elif !defined(CYTHON_USE_TP_FINALIZE)
jpayne@68 495 #define CYTHON_USE_TP_FINALIZE 1
jpayne@68 496 #endif
jpayne@68 497 #if PY_VERSION_HEX < 0x030600B1
jpayne@68 498 #undef CYTHON_USE_DICT_VERSIONS
jpayne@68 499 #define CYTHON_USE_DICT_VERSIONS 0
jpayne@68 500 #elif !defined(CYTHON_USE_DICT_VERSIONS)
jpayne@68 501 #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5)
jpayne@68 502 #endif
jpayne@68 503 #if PY_VERSION_HEX < 0x030700A3
jpayne@68 504 #undef CYTHON_USE_EXC_INFO_STACK
jpayne@68 505 #define CYTHON_USE_EXC_INFO_STACK 0
jpayne@68 506 #elif !defined(CYTHON_USE_EXC_INFO_STACK)
jpayne@68 507 #define CYTHON_USE_EXC_INFO_STACK 1
jpayne@68 508 #endif
jpayne@68 509 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
jpayne@68 510 #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
jpayne@68 511 #endif
jpayne@68 512 #ifndef CYTHON_USE_FREELISTS
jpayne@68 513 #define CYTHON_USE_FREELISTS 1
jpayne@68 514 #endif
jpayne@68 515 #endif
jpayne@68 516 #if !defined(CYTHON_FAST_PYCCALL)
jpayne@68 517 #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
jpayne@68 518 #endif
jpayne@68 519 #if !defined(CYTHON_VECTORCALL)
jpayne@68 520 #define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
jpayne@68 521 #endif
jpayne@68 522 #define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
jpayne@68 523 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 524 #if PY_MAJOR_VERSION < 3
jpayne@68 525 #include "longintrepr.h"
jpayne@68 526 #endif
jpayne@68 527 #undef SHIFT
jpayne@68 528 #undef BASE
jpayne@68 529 #undef MASK
jpayne@68 530 #ifdef SIZEOF_VOID_P
jpayne@68 531 enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
jpayne@68 532 #endif
jpayne@68 533 #endif
jpayne@68 534 #ifndef __has_attribute
jpayne@68 535 #define __has_attribute(x) 0
jpayne@68 536 #endif
jpayne@68 537 #ifndef __has_cpp_attribute
jpayne@68 538 #define __has_cpp_attribute(x) 0
jpayne@68 539 #endif
jpayne@68 540 #ifndef CYTHON_RESTRICT
jpayne@68 541 #if defined(__GNUC__)
jpayne@68 542 #define CYTHON_RESTRICT __restrict__
jpayne@68 543 #elif defined(_MSC_VER) && _MSC_VER >= 1400
jpayne@68 544 #define CYTHON_RESTRICT __restrict
jpayne@68 545 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
jpayne@68 546 #define CYTHON_RESTRICT restrict
jpayne@68 547 #else
jpayne@68 548 #define CYTHON_RESTRICT
jpayne@68 549 #endif
jpayne@68 550 #endif
jpayne@68 551 #ifndef CYTHON_UNUSED
jpayne@68 552 #if defined(__cplusplus)
jpayne@68 553 /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
jpayne@68 554 * but leads to warnings with -pedantic, since it is a C++17 feature */
jpayne@68 555 #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
jpayne@68 556 #if __has_cpp_attribute(maybe_unused)
jpayne@68 557 #define CYTHON_UNUSED [[maybe_unused]]
jpayne@68 558 #endif
jpayne@68 559 #endif
jpayne@68 560 #endif
jpayne@68 561 #endif
jpayne@68 562 #ifndef CYTHON_UNUSED
jpayne@68 563 # if defined(__GNUC__)
jpayne@68 564 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
jpayne@68 565 # define CYTHON_UNUSED __attribute__ ((__unused__))
jpayne@68 566 # else
jpayne@68 567 # define CYTHON_UNUSED
jpayne@68 568 # endif
jpayne@68 569 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
jpayne@68 570 # define CYTHON_UNUSED __attribute__ ((__unused__))
jpayne@68 571 # else
jpayne@68 572 # define CYTHON_UNUSED
jpayne@68 573 # endif
jpayne@68 574 #endif
jpayne@68 575 #ifndef CYTHON_UNUSED_VAR
jpayne@68 576 # if defined(__cplusplus)
jpayne@68 577 template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
jpayne@68 578 # else
jpayne@68 579 # define CYTHON_UNUSED_VAR(x) (void)(x)
jpayne@68 580 # endif
jpayne@68 581 #endif
jpayne@68 582 #ifndef CYTHON_MAYBE_UNUSED_VAR
jpayne@68 583 #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
jpayne@68 584 #endif
jpayne@68 585 #ifndef CYTHON_NCP_UNUSED
jpayne@68 586 # if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 587 # define CYTHON_NCP_UNUSED
jpayne@68 588 # else
jpayne@68 589 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
jpayne@68 590 # endif
jpayne@68 591 #endif
jpayne@68 592 #ifndef CYTHON_USE_CPP_STD_MOVE
jpayne@68 593 #if defined(__cplusplus) && (\
jpayne@68 594 __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
jpayne@68 595 #define CYTHON_USE_CPP_STD_MOVE 1
jpayne@68 596 #else
jpayne@68 597 #define CYTHON_USE_CPP_STD_MOVE 0
jpayne@68 598 #endif
jpayne@68 599 #endif
jpayne@68 600 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
jpayne@68 601 #ifdef _MSC_VER
jpayne@68 602 #ifndef _MSC_STDINT_H_
jpayne@68 603 #if _MSC_VER < 1300
jpayne@68 604 typedef unsigned char uint8_t;
jpayne@68 605 typedef unsigned short uint16_t;
jpayne@68 606 typedef unsigned int uint32_t;
jpayne@68 607 #else
jpayne@68 608 typedef unsigned __int8 uint8_t;
jpayne@68 609 typedef unsigned __int16 uint16_t;
jpayne@68 610 typedef unsigned __int32 uint32_t;
jpayne@68 611 #endif
jpayne@68 612 #endif
jpayne@68 613 #if _MSC_VER < 1300
jpayne@68 614 #ifdef _WIN64
jpayne@68 615 typedef unsigned long long __pyx_uintptr_t;
jpayne@68 616 #else
jpayne@68 617 typedef unsigned int __pyx_uintptr_t;
jpayne@68 618 #endif
jpayne@68 619 #else
jpayne@68 620 #ifdef _WIN64
jpayne@68 621 typedef unsigned __int64 __pyx_uintptr_t;
jpayne@68 622 #else
jpayne@68 623 typedef unsigned __int32 __pyx_uintptr_t;
jpayne@68 624 #endif
jpayne@68 625 #endif
jpayne@68 626 #else
jpayne@68 627 #include <stdint.h>
jpayne@68 628 typedef uintptr_t __pyx_uintptr_t;
jpayne@68 629 #endif
jpayne@68 630 #ifndef CYTHON_FALLTHROUGH
jpayne@68 631 #if defined(__cplusplus)
jpayne@68 632 /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
jpayne@68 633 * but leads to warnings with -pedantic, since it is a C++17 feature */
jpayne@68 634 #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
jpayne@68 635 #if __has_cpp_attribute(fallthrough)
jpayne@68 636 #define CYTHON_FALLTHROUGH [[fallthrough]]
jpayne@68 637 #endif
jpayne@68 638 #endif
jpayne@68 639 #ifndef CYTHON_FALLTHROUGH
jpayne@68 640 #if __has_cpp_attribute(clang::fallthrough)
jpayne@68 641 #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
jpayne@68 642 #elif __has_cpp_attribute(gnu::fallthrough)
jpayne@68 643 #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
jpayne@68 644 #endif
jpayne@68 645 #endif
jpayne@68 646 #endif
jpayne@68 647 #ifndef CYTHON_FALLTHROUGH
jpayne@68 648 #if __has_attribute(fallthrough)
jpayne@68 649 #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
jpayne@68 650 #else
jpayne@68 651 #define CYTHON_FALLTHROUGH
jpayne@68 652 #endif
jpayne@68 653 #endif
jpayne@68 654 #if defined(__clang__) && defined(__apple_build_version__)
jpayne@68 655 #if __apple_build_version__ < 7000000
jpayne@68 656 #undef CYTHON_FALLTHROUGH
jpayne@68 657 #define CYTHON_FALLTHROUGH
jpayne@68 658 #endif
jpayne@68 659 #endif
jpayne@68 660 #endif
jpayne@68 661 #ifdef __cplusplus
jpayne@68 662 template <typename T>
jpayne@68 663 struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
jpayne@68 664 #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
jpayne@68 665 #else
jpayne@68 666 #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
jpayne@68 667 #endif
jpayne@68 668 #if CYTHON_COMPILING_IN_PYPY == 1
jpayne@68 669 #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
jpayne@68 670 #else
jpayne@68 671 #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
jpayne@68 672 #endif
jpayne@68 673 #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
jpayne@68 674
jpayne@68 675 #ifndef CYTHON_INLINE
jpayne@68 676 #if defined(__clang__)
jpayne@68 677 #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
jpayne@68 678 #elif defined(__GNUC__)
jpayne@68 679 #define CYTHON_INLINE __inline__
jpayne@68 680 #elif defined(_MSC_VER)
jpayne@68 681 #define CYTHON_INLINE __inline
jpayne@68 682 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
jpayne@68 683 #define CYTHON_INLINE inline
jpayne@68 684 #else
jpayne@68 685 #define CYTHON_INLINE
jpayne@68 686 #endif
jpayne@68 687 #endif
jpayne@68 688
jpayne@68 689 #define __PYX_BUILD_PY_SSIZE_T "n"
jpayne@68 690 #define CYTHON_FORMAT_SSIZE_T "z"
jpayne@68 691 #if PY_MAJOR_VERSION < 3
jpayne@68 692 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
jpayne@68 693 #define __Pyx_DefaultClassType PyClass_Type
jpayne@68 694 #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
jpayne@68 695 PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
jpayne@68 696 #else
jpayne@68 697 #define __Pyx_BUILTIN_MODULE_NAME "builtins"
jpayne@68 698 #define __Pyx_DefaultClassType PyType_Type
jpayne@68 699 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 700 static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
jpayne@68 701 PyObject *code, PyObject *c, PyObject* n, PyObject *v,
jpayne@68 702 PyObject *fv, PyObject *cell, PyObject* fn,
jpayne@68 703 PyObject *name, int fline, PyObject *lnos) {
jpayne@68 704 PyObject *exception_table = NULL;
jpayne@68 705 PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
jpayne@68 706 #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
jpayne@68 707 PyObject *version_info;
jpayne@68 708 PyObject *py_minor_version = NULL;
jpayne@68 709 #endif
jpayne@68 710 long minor_version = 0;
jpayne@68 711 PyObject *type, *value, *traceback;
jpayne@68 712 PyErr_Fetch(&type, &value, &traceback);
jpayne@68 713 #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
jpayne@68 714 minor_version = 11;
jpayne@68 715 #else
jpayne@68 716 if (!(version_info = PySys_GetObject("version_info"))) goto end;
jpayne@68 717 if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
jpayne@68 718 minor_version = PyLong_AsLong(py_minor_version);
jpayne@68 719 Py_DECREF(py_minor_version);
jpayne@68 720 if (minor_version == -1 && PyErr_Occurred()) goto end;
jpayne@68 721 #endif
jpayne@68 722 if (!(types_module = PyImport_ImportModule("types"))) goto end;
jpayne@68 723 if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
jpayne@68 724 if (minor_version <= 7) {
jpayne@68 725 (void)p;
jpayne@68 726 result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
jpayne@68 727 c, n, v, fn, name, fline, lnos, fv, cell);
jpayne@68 728 } else if (minor_version <= 10) {
jpayne@68 729 result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
jpayne@68 730 c, n, v, fn, name, fline, lnos, fv, cell);
jpayne@68 731 } else {
jpayne@68 732 if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
jpayne@68 733 result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
jpayne@68 734 c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
jpayne@68 735 }
jpayne@68 736 end:
jpayne@68 737 Py_XDECREF(code_type);
jpayne@68 738 Py_XDECREF(exception_table);
jpayne@68 739 Py_XDECREF(types_module);
jpayne@68 740 if (type) {
jpayne@68 741 PyErr_Restore(type, value, traceback);
jpayne@68 742 }
jpayne@68 743 return result;
jpayne@68 744 }
jpayne@68 745 #ifndef CO_OPTIMIZED
jpayne@68 746 #define CO_OPTIMIZED 0x0001
jpayne@68 747 #endif
jpayne@68 748 #ifndef CO_NEWLOCALS
jpayne@68 749 #define CO_NEWLOCALS 0x0002
jpayne@68 750 #endif
jpayne@68 751 #ifndef CO_VARARGS
jpayne@68 752 #define CO_VARARGS 0x0004
jpayne@68 753 #endif
jpayne@68 754 #ifndef CO_VARKEYWORDS
jpayne@68 755 #define CO_VARKEYWORDS 0x0008
jpayne@68 756 #endif
jpayne@68 757 #ifndef CO_ASYNC_GENERATOR
jpayne@68 758 #define CO_ASYNC_GENERATOR 0x0200
jpayne@68 759 #endif
jpayne@68 760 #ifndef CO_GENERATOR
jpayne@68 761 #define CO_GENERATOR 0x0020
jpayne@68 762 #endif
jpayne@68 763 #ifndef CO_COROUTINE
jpayne@68 764 #define CO_COROUTINE 0x0080
jpayne@68 765 #endif
jpayne@68 766 #elif PY_VERSION_HEX >= 0x030B0000
jpayne@68 767 static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
jpayne@68 768 PyObject *code, PyObject *c, PyObject* n, PyObject *v,
jpayne@68 769 PyObject *fv, PyObject *cell, PyObject* fn,
jpayne@68 770 PyObject *name, int fline, PyObject *lnos) {
jpayne@68 771 PyCodeObject *result;
jpayne@68 772 PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
jpayne@68 773 if (!empty_bytes) return NULL;
jpayne@68 774 result =
jpayne@68 775 #if PY_VERSION_HEX >= 0x030C0000
jpayne@68 776 PyUnstable_Code_NewWithPosOnlyArgs
jpayne@68 777 #else
jpayne@68 778 PyCode_NewWithPosOnlyArgs
jpayne@68 779 #endif
jpayne@68 780 (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
jpayne@68 781 Py_DECREF(empty_bytes);
jpayne@68 782 return result;
jpayne@68 783 }
jpayne@68 784 #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
jpayne@68 785 #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
jpayne@68 786 PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
jpayne@68 787 #else
jpayne@68 788 #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
jpayne@68 789 PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
jpayne@68 790 #endif
jpayne@68 791 #endif
jpayne@68 792 #if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
jpayne@68 793 #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
jpayne@68 794 #else
jpayne@68 795 #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
jpayne@68 796 #endif
jpayne@68 797 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
jpayne@68 798 #define __Pyx_Py_Is(x, y) Py_Is(x, y)
jpayne@68 799 #else
jpayne@68 800 #define __Pyx_Py_Is(x, y) ((x) == (y))
jpayne@68 801 #endif
jpayne@68 802 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
jpayne@68 803 #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
jpayne@68 804 #else
jpayne@68 805 #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
jpayne@68 806 #endif
jpayne@68 807 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
jpayne@68 808 #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
jpayne@68 809 #else
jpayne@68 810 #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
jpayne@68 811 #endif
jpayne@68 812 #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
jpayne@68 813 #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
jpayne@68 814 #else
jpayne@68 815 #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
jpayne@68 816 #endif
jpayne@68 817 #define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj))
jpayne@68 818 #if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
jpayne@68 819 #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
jpayne@68 820 #else
jpayne@68 821 #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
jpayne@68 822 #endif
jpayne@68 823 #ifndef CO_COROUTINE
jpayne@68 824 #define CO_COROUTINE 0x80
jpayne@68 825 #endif
jpayne@68 826 #ifndef CO_ASYNC_GENERATOR
jpayne@68 827 #define CO_ASYNC_GENERATOR 0x200
jpayne@68 828 #endif
jpayne@68 829 #ifndef Py_TPFLAGS_CHECKTYPES
jpayne@68 830 #define Py_TPFLAGS_CHECKTYPES 0
jpayne@68 831 #endif
jpayne@68 832 #ifndef Py_TPFLAGS_HAVE_INDEX
jpayne@68 833 #define Py_TPFLAGS_HAVE_INDEX 0
jpayne@68 834 #endif
jpayne@68 835 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
jpayne@68 836 #define Py_TPFLAGS_HAVE_NEWBUFFER 0
jpayne@68 837 #endif
jpayne@68 838 #ifndef Py_TPFLAGS_HAVE_FINALIZE
jpayne@68 839 #define Py_TPFLAGS_HAVE_FINALIZE 0
jpayne@68 840 #endif
jpayne@68 841 #ifndef Py_TPFLAGS_SEQUENCE
jpayne@68 842 #define Py_TPFLAGS_SEQUENCE 0
jpayne@68 843 #endif
jpayne@68 844 #ifndef Py_TPFLAGS_MAPPING
jpayne@68 845 #define Py_TPFLAGS_MAPPING 0
jpayne@68 846 #endif
jpayne@68 847 #ifndef METH_STACKLESS
jpayne@68 848 #define METH_STACKLESS 0
jpayne@68 849 #endif
jpayne@68 850 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
jpayne@68 851 #ifndef METH_FASTCALL
jpayne@68 852 #define METH_FASTCALL 0x80
jpayne@68 853 #endif
jpayne@68 854 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
jpayne@68 855 typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
jpayne@68 856 Py_ssize_t nargs, PyObject *kwnames);
jpayne@68 857 #else
jpayne@68 858 #if PY_VERSION_HEX >= 0x030d00A4
jpayne@68 859 # define __Pyx_PyCFunctionFast PyCFunctionFast
jpayne@68 860 # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
jpayne@68 861 #else
jpayne@68 862 # define __Pyx_PyCFunctionFast _PyCFunctionFast
jpayne@68 863 # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
jpayne@68 864 #endif
jpayne@68 865 #endif
jpayne@68 866 #if CYTHON_METH_FASTCALL
jpayne@68 867 #define __Pyx_METH_FASTCALL METH_FASTCALL
jpayne@68 868 #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
jpayne@68 869 #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
jpayne@68 870 #else
jpayne@68 871 #define __Pyx_METH_FASTCALL METH_VARARGS
jpayne@68 872 #define __Pyx_PyCFunction_FastCall PyCFunction
jpayne@68 873 #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
jpayne@68 874 #endif
jpayne@68 875 #if CYTHON_VECTORCALL
jpayne@68 876 #define __pyx_vectorcallfunc vectorcallfunc
jpayne@68 877 #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET
jpayne@68 878 #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n))
jpayne@68 879 #elif CYTHON_BACKPORT_VECTORCALL
jpayne@68 880 typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
jpayne@68 881 size_t nargsf, PyObject *kwnames);
jpayne@68 882 #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
jpayne@68 883 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
jpayne@68 884 #else
jpayne@68 885 #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0
jpayne@68 886 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n))
jpayne@68 887 #endif
jpayne@68 888 #if PY_MAJOR_VERSION >= 0x030900B1
jpayne@68 889 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func)
jpayne@68 890 #else
jpayne@68 891 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func)
jpayne@68 892 #endif
jpayne@68 893 #define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func)
jpayne@68 894 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 895 #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth)
jpayne@68 896 #elif !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 897 #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func)
jpayne@68 898 #endif
jpayne@68 899 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 900 #define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags)
jpayne@68 901 static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
jpayne@68 902 return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
jpayne@68 903 }
jpayne@68 904 #endif
jpayne@68 905 static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
jpayne@68 906 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 907 return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
jpayne@68 908 #else
jpayne@68 909 return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
jpayne@68 910 #endif
jpayne@68 911 }
jpayne@68 912 #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc)
jpayne@68 913 #if __PYX_LIMITED_VERSION_HEX < 0x030900B1
jpayne@68 914 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b))
jpayne@68 915 typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
jpayne@68 916 #else
jpayne@68 917 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b)
jpayne@68 918 #define __Pyx_PyCMethod PyCMethod
jpayne@68 919 #endif
jpayne@68 920 #ifndef METH_METHOD
jpayne@68 921 #define METH_METHOD 0x200
jpayne@68 922 #endif
jpayne@68 923 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
jpayne@68 924 #define PyObject_Malloc(s) PyMem_Malloc(s)
jpayne@68 925 #define PyObject_Free(p) PyMem_Free(p)
jpayne@68 926 #define PyObject_Realloc(p) PyMem_Realloc(p)
jpayne@68 927 #endif
jpayne@68 928 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 929 #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
jpayne@68 930 #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
jpayne@68 931 #else
jpayne@68 932 #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
jpayne@68 933 #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
jpayne@68 934 #endif
jpayne@68 935 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 936 #define __Pyx_PyThreadState_Current PyThreadState_Get()
jpayne@68 937 #elif !CYTHON_FAST_THREAD_STATE
jpayne@68 938 #define __Pyx_PyThreadState_Current PyThreadState_GET()
jpayne@68 939 #elif PY_VERSION_HEX >= 0x030d00A1
jpayne@68 940 #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
jpayne@68 941 #elif PY_VERSION_HEX >= 0x03060000
jpayne@68 942 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
jpayne@68 943 #elif PY_VERSION_HEX >= 0x03000000
jpayne@68 944 #define __Pyx_PyThreadState_Current PyThreadState_GET()
jpayne@68 945 #else
jpayne@68 946 #define __Pyx_PyThreadState_Current _PyThreadState_Current
jpayne@68 947 #endif
jpayne@68 948 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 949 static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
jpayne@68 950 {
jpayne@68 951 void *result;
jpayne@68 952 result = PyModule_GetState(op);
jpayne@68 953 if (!result)
jpayne@68 954 Py_FatalError("Couldn't find the module state");
jpayne@68 955 return result;
jpayne@68 956 }
jpayne@68 957 #endif
jpayne@68 958 #define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
jpayne@68 959 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 960 #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name))
jpayne@68 961 #else
jpayne@68 962 #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name)
jpayne@68 963 #endif
jpayne@68 964 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
jpayne@68 965 #include "pythread.h"
jpayne@68 966 #define Py_tss_NEEDS_INIT 0
jpayne@68 967 typedef int Py_tss_t;
jpayne@68 968 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
jpayne@68 969 *key = PyThread_create_key();
jpayne@68 970 return 0;
jpayne@68 971 }
jpayne@68 972 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
jpayne@68 973 Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
jpayne@68 974 *key = Py_tss_NEEDS_INIT;
jpayne@68 975 return key;
jpayne@68 976 }
jpayne@68 977 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
jpayne@68 978 PyObject_Free(key);
jpayne@68 979 }
jpayne@68 980 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
jpayne@68 981 return *key != Py_tss_NEEDS_INIT;
jpayne@68 982 }
jpayne@68 983 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
jpayne@68 984 PyThread_delete_key(*key);
jpayne@68 985 *key = Py_tss_NEEDS_INIT;
jpayne@68 986 }
jpayne@68 987 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
jpayne@68 988 return PyThread_set_key_value(*key, value);
jpayne@68 989 }
jpayne@68 990 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
jpayne@68 991 return PyThread_get_key_value(*key);
jpayne@68 992 }
jpayne@68 993 #endif
jpayne@68 994 #if PY_MAJOR_VERSION < 3
jpayne@68 995 #if CYTHON_COMPILING_IN_PYPY
jpayne@68 996 #if PYPY_VERSION_NUM < 0x07030600
jpayne@68 997 #if defined(__cplusplus) && __cplusplus >= 201402L
jpayne@68 998 [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
jpayne@68 999 #elif defined(__GNUC__) || defined(__clang__)
jpayne@68 1000 __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
jpayne@68 1001 #elif defined(_MSC_VER)
jpayne@68 1002 __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
jpayne@68 1003 #endif
jpayne@68 1004 static CYTHON_INLINE int PyGILState_Check(void) {
jpayne@68 1005 return 0;
jpayne@68 1006 }
jpayne@68 1007 #else // PYPY_VERSION_NUM < 0x07030600
jpayne@68 1008 #endif // PYPY_VERSION_NUM < 0x07030600
jpayne@68 1009 #else
jpayne@68 1010 static CYTHON_INLINE int PyGILState_Check(void) {
jpayne@68 1011 PyThreadState * tstate = _PyThreadState_Current;
jpayne@68 1012 return tstate && (tstate == PyGILState_GetThisThreadState());
jpayne@68 1013 }
jpayne@68 1014 #endif
jpayne@68 1015 #endif
jpayne@68 1016 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
jpayne@68 1017 #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
jpayne@68 1018 #else
jpayne@68 1019 #define __Pyx_PyDict_NewPresized(n) PyDict_New()
jpayne@68 1020 #endif
jpayne@68 1021 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
jpayne@68 1022 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
jpayne@68 1023 #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
jpayne@68 1024 #else
jpayne@68 1025 #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
jpayne@68 1026 #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
jpayne@68 1027 #endif
jpayne@68 1028 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
jpayne@68 1029 #define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
jpayne@68 1030 static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
jpayne@68 1031 PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
jpayne@68 1032 if (res == NULL) PyErr_Clear();
jpayne@68 1033 return res;
jpayne@68 1034 }
jpayne@68 1035 #elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
jpayne@68 1036 #define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError
jpayne@68 1037 #define __Pyx_PyDict_GetItemStr PyDict_GetItem
jpayne@68 1038 #else
jpayne@68 1039 static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
jpayne@68 1040 #if CYTHON_COMPILING_IN_PYPY
jpayne@68 1041 return PyDict_GetItem(dict, name);
jpayne@68 1042 #else
jpayne@68 1043 PyDictEntry *ep;
jpayne@68 1044 PyDictObject *mp = (PyDictObject*) dict;
jpayne@68 1045 long hash = ((PyStringObject *) name)->ob_shash;
jpayne@68 1046 assert(hash != -1);
jpayne@68 1047 ep = (mp->ma_lookup)(mp, name, hash);
jpayne@68 1048 if (ep == NULL) {
jpayne@68 1049 return NULL;
jpayne@68 1050 }
jpayne@68 1051 return ep->me_value;
jpayne@68 1052 #endif
jpayne@68 1053 }
jpayne@68 1054 #define __Pyx_PyDict_GetItemStr PyDict_GetItem
jpayne@68 1055 #endif
jpayne@68 1056 #if CYTHON_USE_TYPE_SLOTS
jpayne@68 1057 #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags)
jpayne@68 1058 #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
jpayne@68 1059 #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext)
jpayne@68 1060 #else
jpayne@68 1061 #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp))
jpayne@68 1062 #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature)
jpayne@68 1063 #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next
jpayne@68 1064 #endif
jpayne@68 1065 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1066 #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
jpayne@68 1067 #else
jpayne@68 1068 #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
jpayne@68 1069 #endif
jpayne@68 1070 #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
jpayne@68 1071 #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\
jpayne@68 1072 PyTypeObject *type = Py_TYPE((PyObject*)obj);\
jpayne@68 1073 assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
jpayne@68 1074 PyObject_GC_Del(obj);\
jpayne@68 1075 Py_DECREF(type);\
jpayne@68 1076 }
jpayne@68 1077 #else
jpayne@68 1078 #define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj)
jpayne@68 1079 #endif
jpayne@68 1080 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1081 #define CYTHON_PEP393_ENABLED 1
jpayne@68 1082 #define __Pyx_PyUnicode_READY(op) (0)
jpayne@68 1083 #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u)
jpayne@68 1084 #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
jpayne@68 1085 #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U)
jpayne@68 1086 #define __Pyx_PyUnicode_KIND(u) ((void)u, (0))
jpayne@68 1087 #define __Pyx_PyUnicode_DATA(u) ((void*)u)
jpayne@68 1088 #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
jpayne@68 1089 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u))
jpayne@68 1090 #elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
jpayne@68 1091 #define CYTHON_PEP393_ENABLED 1
jpayne@68 1092 #if PY_VERSION_HEX >= 0x030C0000
jpayne@68 1093 #define __Pyx_PyUnicode_READY(op) (0)
jpayne@68 1094 #else
jpayne@68 1095 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
jpayne@68 1096 0 : _PyUnicode_Ready((PyObject *)(op)))
jpayne@68 1097 #endif
jpayne@68 1098 #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
jpayne@68 1099 #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
jpayne@68 1100 #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
jpayne@68 1101 #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u))
jpayne@68 1102 #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
jpayne@68 1103 #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
jpayne@68 1104 #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
jpayne@68 1105 #if PY_VERSION_HEX >= 0x030C0000
jpayne@68 1106 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
jpayne@68 1107 #else
jpayne@68 1108 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
jpayne@68 1109 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
jpayne@68 1110 #else
jpayne@68 1111 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
jpayne@68 1112 #endif
jpayne@68 1113 #endif
jpayne@68 1114 #else
jpayne@68 1115 #define CYTHON_PEP393_ENABLED 0
jpayne@68 1116 #define PyUnicode_1BYTE_KIND 1
jpayne@68 1117 #define PyUnicode_2BYTE_KIND 2
jpayne@68 1118 #define PyUnicode_4BYTE_KIND 4
jpayne@68 1119 #define __Pyx_PyUnicode_READY(op) (0)
jpayne@68 1120 #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
jpayne@68 1121 #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
jpayne@68 1122 #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
jpayne@68 1123 #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE))
jpayne@68 1124 #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
jpayne@68 1125 #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
jpayne@68 1126 #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
jpayne@68 1127 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
jpayne@68 1128 #endif
jpayne@68 1129 #if CYTHON_COMPILING_IN_PYPY
jpayne@68 1130 #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
jpayne@68 1131 #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
jpayne@68 1132 #else
jpayne@68 1133 #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
jpayne@68 1134 #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
jpayne@68 1135 PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
jpayne@68 1136 #endif
jpayne@68 1137 #if CYTHON_COMPILING_IN_PYPY
jpayne@68 1138 #if !defined(PyUnicode_DecodeUnicodeEscape)
jpayne@68 1139 #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors)
jpayne@68 1140 #endif
jpayne@68 1141 #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
jpayne@68 1142 #undef PyUnicode_Contains
jpayne@68 1143 #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
jpayne@68 1144 #endif
jpayne@68 1145 #if !defined(PyByteArray_Check)
jpayne@68 1146 #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
jpayne@68 1147 #endif
jpayne@68 1148 #if !defined(PyObject_Format)
jpayne@68 1149 #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
jpayne@68 1150 #endif
jpayne@68 1151 #endif
jpayne@68 1152 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
jpayne@68 1153 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
jpayne@68 1154 #if PY_MAJOR_VERSION >= 3
jpayne@68 1155 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
jpayne@68 1156 #else
jpayne@68 1157 #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
jpayne@68 1158 #endif
jpayne@68 1159 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
jpayne@68 1160 #define PyObject_ASCII(o) PyObject_Repr(o)
jpayne@68 1161 #endif
jpayne@68 1162 #if PY_MAJOR_VERSION >= 3
jpayne@68 1163 #define PyBaseString_Type PyUnicode_Type
jpayne@68 1164 #define PyStringObject PyUnicodeObject
jpayne@68 1165 #define PyString_Type PyUnicode_Type
jpayne@68 1166 #define PyString_Check PyUnicode_Check
jpayne@68 1167 #define PyString_CheckExact PyUnicode_CheckExact
jpayne@68 1168 #ifndef PyObject_Unicode
jpayne@68 1169 #define PyObject_Unicode PyObject_Str
jpayne@68 1170 #endif
jpayne@68 1171 #endif
jpayne@68 1172 #if PY_MAJOR_VERSION >= 3
jpayne@68 1173 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
jpayne@68 1174 #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
jpayne@68 1175 #else
jpayne@68 1176 #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
jpayne@68 1177 #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
jpayne@68 1178 #endif
jpayne@68 1179 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 1180 #define __Pyx_PySequence_ListKeepNew(obj)\
jpayne@68 1181 (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
jpayne@68 1182 #else
jpayne@68 1183 #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj)
jpayne@68 1184 #endif
jpayne@68 1185 #ifndef PySet_CheckExact
jpayne@68 1186 #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
jpayne@68 1187 #endif
jpayne@68 1188 #if PY_VERSION_HEX >= 0x030900A4
jpayne@68 1189 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
jpayne@68 1190 #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
jpayne@68 1191 #else
jpayne@68 1192 #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
jpayne@68 1193 #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
jpayne@68 1194 #endif
jpayne@68 1195 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 1196 #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
jpayne@68 1197 #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
jpayne@68 1198 #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
jpayne@68 1199 #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
jpayne@68 1200 #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
jpayne@68 1201 #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
jpayne@68 1202 #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
jpayne@68 1203 #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
jpayne@68 1204 #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
jpayne@68 1205 #else
jpayne@68 1206 #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
jpayne@68 1207 #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
jpayne@68 1208 #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
jpayne@68 1209 #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
jpayne@68 1210 #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
jpayne@68 1211 #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
jpayne@68 1212 #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
jpayne@68 1213 #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
jpayne@68 1214 #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
jpayne@68 1215 #endif
jpayne@68 1216 #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
jpayne@68 1217 #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
jpayne@68 1218 #else
jpayne@68 1219 static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
jpayne@68 1220 PyObject *module = PyImport_AddModule(name);
jpayne@68 1221 Py_XINCREF(module);
jpayne@68 1222 return module;
jpayne@68 1223 }
jpayne@68 1224 #endif
jpayne@68 1225 #if PY_MAJOR_VERSION >= 3
jpayne@68 1226 #define PyIntObject PyLongObject
jpayne@68 1227 #define PyInt_Type PyLong_Type
jpayne@68 1228 #define PyInt_Check(op) PyLong_Check(op)
jpayne@68 1229 #define PyInt_CheckExact(op) PyLong_CheckExact(op)
jpayne@68 1230 #define __Pyx_Py3Int_Check(op) PyLong_Check(op)
jpayne@68 1231 #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op)
jpayne@68 1232 #define PyInt_FromString PyLong_FromString
jpayne@68 1233 #define PyInt_FromUnicode PyLong_FromUnicode
jpayne@68 1234 #define PyInt_FromLong PyLong_FromLong
jpayne@68 1235 #define PyInt_FromSize_t PyLong_FromSize_t
jpayne@68 1236 #define PyInt_FromSsize_t PyLong_FromSsize_t
jpayne@68 1237 #define PyInt_AsLong PyLong_AsLong
jpayne@68 1238 #define PyInt_AS_LONG PyLong_AS_LONG
jpayne@68 1239 #define PyInt_AsSsize_t PyLong_AsSsize_t
jpayne@68 1240 #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
jpayne@68 1241 #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
jpayne@68 1242 #define PyNumber_Int PyNumber_Long
jpayne@68 1243 #else
jpayne@68 1244 #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op))
jpayne@68 1245 #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op))
jpayne@68 1246 #endif
jpayne@68 1247 #if PY_MAJOR_VERSION >= 3
jpayne@68 1248 #define PyBoolObject PyLongObject
jpayne@68 1249 #endif
jpayne@68 1250 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
jpayne@68 1251 #ifndef PyUnicode_InternFromString
jpayne@68 1252 #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
jpayne@68 1253 #endif
jpayne@68 1254 #endif
jpayne@68 1255 #if PY_VERSION_HEX < 0x030200A4
jpayne@68 1256 typedef long Py_hash_t;
jpayne@68 1257 #define __Pyx_PyInt_FromHash_t PyInt_FromLong
jpayne@68 1258 #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
jpayne@68 1259 #else
jpayne@68 1260 #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
jpayne@68 1261 #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
jpayne@68 1262 #endif
jpayne@68 1263 #if CYTHON_USE_ASYNC_SLOTS
jpayne@68 1264 #if PY_VERSION_HEX >= 0x030500B1
jpayne@68 1265 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
jpayne@68 1266 #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
jpayne@68 1267 #else
jpayne@68 1268 #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
jpayne@68 1269 #endif
jpayne@68 1270 #else
jpayne@68 1271 #define __Pyx_PyType_AsAsync(obj) NULL
jpayne@68 1272 #endif
jpayne@68 1273 #ifndef __Pyx_PyAsyncMethodsStruct
jpayne@68 1274 typedef struct {
jpayne@68 1275 unaryfunc am_await;
jpayne@68 1276 unaryfunc am_aiter;
jpayne@68 1277 unaryfunc am_anext;
jpayne@68 1278 } __Pyx_PyAsyncMethodsStruct;
jpayne@68 1279 #endif
jpayne@68 1280
jpayne@68 1281 #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
jpayne@68 1282 #if !defined(_USE_MATH_DEFINES)
jpayne@68 1283 #define _USE_MATH_DEFINES
jpayne@68 1284 #endif
jpayne@68 1285 #endif
jpayne@68 1286 #include <math.h>
jpayne@68 1287 #ifdef NAN
jpayne@68 1288 #define __PYX_NAN() ((float) NAN)
jpayne@68 1289 #else
jpayne@68 1290 static CYTHON_INLINE float __PYX_NAN() {
jpayne@68 1291 float value;
jpayne@68 1292 memset(&value, 0xFF, sizeof(value));
jpayne@68 1293 return value;
jpayne@68 1294 }
jpayne@68 1295 #endif
jpayne@68 1296 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
jpayne@68 1297 #define __Pyx_truncl trunc
jpayne@68 1298 #else
jpayne@68 1299 #define __Pyx_truncl truncl
jpayne@68 1300 #endif
jpayne@68 1301
jpayne@68 1302 #define __PYX_MARK_ERR_POS(f_index, lineno) \
jpayne@68 1303 { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
jpayne@68 1304 #define __PYX_ERR(f_index, lineno, Ln_error) \
jpayne@68 1305 { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
jpayne@68 1306
jpayne@68 1307 #ifdef CYTHON_EXTERN_C
jpayne@68 1308 #undef __PYX_EXTERN_C
jpayne@68 1309 #define __PYX_EXTERN_C CYTHON_EXTERN_C
jpayne@68 1310 #elif defined(__PYX_EXTERN_C)
jpayne@68 1311 #ifdef _MSC_VER
jpayne@68 1312 #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
jpayne@68 1313 #else
jpayne@68 1314 #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
jpayne@68 1315 #endif
jpayne@68 1316 #else
jpayne@68 1317 #ifdef __cplusplus
jpayne@68 1318 #define __PYX_EXTERN_C extern "C"
jpayne@68 1319 #else
jpayne@68 1320 #define __PYX_EXTERN_C extern
jpayne@68 1321 #endif
jpayne@68 1322 #endif
jpayne@68 1323
jpayne@68 1324 #define __PYX_HAVE__pysam__libcsamtools
jpayne@68 1325 #define __PYX_HAVE_API__pysam__libcsamtools
jpayne@68 1326 /* Early includes */
jpayne@68 1327 #include "samtools.pysam.h"
jpayne@68 1328 #ifdef _OPENMP
jpayne@68 1329 #include <omp.h>
jpayne@68 1330 #endif /* _OPENMP */
jpayne@68 1331
jpayne@68 1332 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
jpayne@68 1333 #define CYTHON_WITHOUT_ASSERTIONS
jpayne@68 1334 #endif
jpayne@68 1335
jpayne@68 1336 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
jpayne@68 1337 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
jpayne@68 1338
jpayne@68 1339 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
jpayne@68 1340 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
jpayne@68 1341 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
jpayne@68 1342 #define __PYX_DEFAULT_STRING_ENCODING ""
jpayne@68 1343 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
jpayne@68 1344 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
jpayne@68 1345 #define __Pyx_uchar_cast(c) ((unsigned char)c)
jpayne@68 1346 #define __Pyx_long_cast(x) ((long)x)
jpayne@68 1347 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
jpayne@68 1348 (sizeof(type) < sizeof(Py_ssize_t)) ||\
jpayne@68 1349 (sizeof(type) > sizeof(Py_ssize_t) &&\
jpayne@68 1350 likely(v < (type)PY_SSIZE_T_MAX ||\
jpayne@68 1351 v == (type)PY_SSIZE_T_MAX) &&\
jpayne@68 1352 (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
jpayne@68 1353 v == (type)PY_SSIZE_T_MIN))) ||\
jpayne@68 1354 (sizeof(type) == sizeof(Py_ssize_t) &&\
jpayne@68 1355 (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
jpayne@68 1356 v == (type)PY_SSIZE_T_MAX))) )
jpayne@68 1357 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
jpayne@68 1358 return (size_t) i < (size_t) limit;
jpayne@68 1359 }
jpayne@68 1360 #if defined (__cplusplus) && __cplusplus >= 201103L
jpayne@68 1361 #include <cstdlib>
jpayne@68 1362 #define __Pyx_sst_abs(value) std::abs(value)
jpayne@68 1363 #elif SIZEOF_INT >= SIZEOF_SIZE_T
jpayne@68 1364 #define __Pyx_sst_abs(value) abs(value)
jpayne@68 1365 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
jpayne@68 1366 #define __Pyx_sst_abs(value) labs(value)
jpayne@68 1367 #elif defined (_MSC_VER)
jpayne@68 1368 #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
jpayne@68 1369 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
jpayne@68 1370 #define __Pyx_sst_abs(value) llabs(value)
jpayne@68 1371 #elif defined (__GNUC__)
jpayne@68 1372 #define __Pyx_sst_abs(value) __builtin_llabs(value)
jpayne@68 1373 #else
jpayne@68 1374 #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
jpayne@68 1375 #endif
jpayne@68 1376 static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
jpayne@68 1377 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
jpayne@68 1378 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
jpayne@68 1379 static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
jpayne@68 1380 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
jpayne@68 1381 #define __Pyx_PyBytes_FromString PyBytes_FromString
jpayne@68 1382 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
jpayne@68 1383 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
jpayne@68 1384 #if PY_MAJOR_VERSION < 3
jpayne@68 1385 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
jpayne@68 1386 #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
jpayne@68 1387 #else
jpayne@68 1388 #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
jpayne@68 1389 #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
jpayne@68 1390 #endif
jpayne@68 1391 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
jpayne@68 1392 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
jpayne@68 1393 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
jpayne@68 1394 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
jpayne@68 1395 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
jpayne@68 1396 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
jpayne@68 1397 #define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
jpayne@68 1398 #define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
jpayne@68 1399 #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
jpayne@68 1400 #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
jpayne@68 1401 #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
jpayne@68 1402 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
jpayne@68 1403 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
jpayne@68 1404 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
jpayne@68 1405 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
jpayne@68 1406 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
jpayne@68 1407 #define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o)
jpayne@68 1408 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
jpayne@68 1409 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
jpayne@68 1410 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
jpayne@68 1411 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
jpayne@68 1412 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
jpayne@68 1413 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
jpayne@68 1414 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
jpayne@68 1415 #define __Pyx_PySequence_Tuple(obj)\
jpayne@68 1416 (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
jpayne@68 1417 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
jpayne@68 1418 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
jpayne@68 1419 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
jpayne@68 1420 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 1421 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
jpayne@68 1422 #else
jpayne@68 1423 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
jpayne@68 1424 #endif
jpayne@68 1425 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
jpayne@68 1426 #if PY_MAJOR_VERSION >= 3
jpayne@68 1427 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
jpayne@68 1428 #else
jpayne@68 1429 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
jpayne@68 1430 #endif
jpayne@68 1431 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 1432 #if PY_VERSION_HEX >= 0x030C00A7
jpayne@68 1433 #ifndef _PyLong_SIGN_MASK
jpayne@68 1434 #define _PyLong_SIGN_MASK 3
jpayne@68 1435 #endif
jpayne@68 1436 #ifndef _PyLong_NON_SIZE_BITS
jpayne@68 1437 #define _PyLong_NON_SIZE_BITS 3
jpayne@68 1438 #endif
jpayne@68 1439 #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
jpayne@68 1440 #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0)
jpayne@68 1441 #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x))
jpayne@68 1442 #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1)
jpayne@68 1443 #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0)
jpayne@68 1444 #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0])
jpayne@68 1445 #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
jpayne@68 1446 #define __Pyx_PyLong_SignedDigitCount(x)\
jpayne@68 1447 ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
jpayne@68 1448 #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
jpayne@68 1449 #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x)
jpayne@68 1450 #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x)
jpayne@68 1451 #else
jpayne@68 1452 #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
jpayne@68 1453 #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
jpayne@68 1454 #endif
jpayne@68 1455 typedef Py_ssize_t __Pyx_compact_pylong;
jpayne@68 1456 typedef size_t __Pyx_compact_upylong;
jpayne@68 1457 #else
jpayne@68 1458 #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0)
jpayne@68 1459 #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0)
jpayne@68 1460 #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0)
jpayne@68 1461 #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0)
jpayne@68 1462 #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
jpayne@68 1463 #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x))
jpayne@68 1464 #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x)
jpayne@68 1465 #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
jpayne@68 1466 #define __Pyx_PyLong_CompactValue(x)\
jpayne@68 1467 ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
jpayne@68 1468 typedef sdigit __Pyx_compact_pylong;
jpayne@68 1469 typedef digit __Pyx_compact_upylong;
jpayne@68 1470 #endif
jpayne@68 1471 #if PY_VERSION_HEX >= 0x030C00A5
jpayne@68 1472 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit)
jpayne@68 1473 #else
jpayne@68 1474 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit)
jpayne@68 1475 #endif
jpayne@68 1476 #endif
jpayne@68 1477 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
jpayne@68 1478 #include <string.h>
jpayne@68 1479 static int __Pyx_sys_getdefaultencoding_not_ascii;
jpayne@68 1480 static int __Pyx_init_sys_getdefaultencoding_params(void) {
jpayne@68 1481 PyObject* sys;
jpayne@68 1482 PyObject* default_encoding = NULL;
jpayne@68 1483 PyObject* ascii_chars_u = NULL;
jpayne@68 1484 PyObject* ascii_chars_b = NULL;
jpayne@68 1485 const char* default_encoding_c;
jpayne@68 1486 sys = PyImport_ImportModule("sys");
jpayne@68 1487 if (!sys) goto bad;
jpayne@68 1488 default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
jpayne@68 1489 Py_DECREF(sys);
jpayne@68 1490 if (!default_encoding) goto bad;
jpayne@68 1491 default_encoding_c = PyBytes_AsString(default_encoding);
jpayne@68 1492 if (!default_encoding_c) goto bad;
jpayne@68 1493 if (strcmp(default_encoding_c, "ascii") == 0) {
jpayne@68 1494 __Pyx_sys_getdefaultencoding_not_ascii = 0;
jpayne@68 1495 } else {
jpayne@68 1496 char ascii_chars[128];
jpayne@68 1497 int c;
jpayne@68 1498 for (c = 0; c < 128; c++) {
jpayne@68 1499 ascii_chars[c] = (char) c;
jpayne@68 1500 }
jpayne@68 1501 __Pyx_sys_getdefaultencoding_not_ascii = 1;
jpayne@68 1502 ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
jpayne@68 1503 if (!ascii_chars_u) goto bad;
jpayne@68 1504 ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
jpayne@68 1505 if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
jpayne@68 1506 PyErr_Format(
jpayne@68 1507 PyExc_ValueError,
jpayne@68 1508 "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
jpayne@68 1509 default_encoding_c);
jpayne@68 1510 goto bad;
jpayne@68 1511 }
jpayne@68 1512 Py_DECREF(ascii_chars_u);
jpayne@68 1513 Py_DECREF(ascii_chars_b);
jpayne@68 1514 }
jpayne@68 1515 Py_DECREF(default_encoding);
jpayne@68 1516 return 0;
jpayne@68 1517 bad:
jpayne@68 1518 Py_XDECREF(default_encoding);
jpayne@68 1519 Py_XDECREF(ascii_chars_u);
jpayne@68 1520 Py_XDECREF(ascii_chars_b);
jpayne@68 1521 return -1;
jpayne@68 1522 }
jpayne@68 1523 #endif
jpayne@68 1524 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
jpayne@68 1525 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
jpayne@68 1526 #else
jpayne@68 1527 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
jpayne@68 1528 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
jpayne@68 1529 #include <string.h>
jpayne@68 1530 static char* __PYX_DEFAULT_STRING_ENCODING;
jpayne@68 1531 static int __Pyx_init_sys_getdefaultencoding_params(void) {
jpayne@68 1532 PyObject* sys;
jpayne@68 1533 PyObject* default_encoding = NULL;
jpayne@68 1534 char* default_encoding_c;
jpayne@68 1535 sys = PyImport_ImportModule("sys");
jpayne@68 1536 if (!sys) goto bad;
jpayne@68 1537 default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
jpayne@68 1538 Py_DECREF(sys);
jpayne@68 1539 if (!default_encoding) goto bad;
jpayne@68 1540 default_encoding_c = PyBytes_AsString(default_encoding);
jpayne@68 1541 if (!default_encoding_c) goto bad;
jpayne@68 1542 __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
jpayne@68 1543 if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
jpayne@68 1544 strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
jpayne@68 1545 Py_DECREF(default_encoding);
jpayne@68 1546 return 0;
jpayne@68 1547 bad:
jpayne@68 1548 Py_XDECREF(default_encoding);
jpayne@68 1549 return -1;
jpayne@68 1550 }
jpayne@68 1551 #endif
jpayne@68 1552 #endif
jpayne@68 1553
jpayne@68 1554
jpayne@68 1555 /* Test for GCC > 2.95 */
jpayne@68 1556 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
jpayne@68 1557 #define likely(x) __builtin_expect(!!(x), 1)
jpayne@68 1558 #define unlikely(x) __builtin_expect(!!(x), 0)
jpayne@68 1559 #else /* !__GNUC__ or GCC < 2.95 */
jpayne@68 1560 #define likely(x) (x)
jpayne@68 1561 #define unlikely(x) (x)
jpayne@68 1562 #endif /* __GNUC__ */
jpayne@68 1563 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
jpayne@68 1564
jpayne@68 1565 #if !CYTHON_USE_MODULE_STATE
jpayne@68 1566 static PyObject *__pyx_m = NULL;
jpayne@68 1567 #endif
jpayne@68 1568 static int __pyx_lineno;
jpayne@68 1569 static int __pyx_clineno = 0;
jpayne@68 1570 static const char * __pyx_cfilenm = __FILE__;
jpayne@68 1571 static const char *__pyx_filename;
jpayne@68 1572
jpayne@68 1573 /* #### Code section: filename_table ### */
jpayne@68 1574
jpayne@68 1575 static const char *__pyx_f[] = {
jpayne@68 1576 "pysam/libcsamtools.pyx",
jpayne@68 1577 };
jpayne@68 1578 /* #### Code section: utility_code_proto_before_types ### */
jpayne@68 1579 /* ForceInitThreads.proto */
jpayne@68 1580 #ifndef __PYX_FORCE_INIT_THREADS
jpayne@68 1581 #define __PYX_FORCE_INIT_THREADS 0
jpayne@68 1582 #endif
jpayne@68 1583
jpayne@68 1584 /* #### Code section: numeric_typedefs ### */
jpayne@68 1585 /* #### Code section: complex_type_declarations ### */
jpayne@68 1586 /* #### Code section: type_declarations ### */
jpayne@68 1587
jpayne@68 1588 /*--- Type declarations ---*/
jpayne@68 1589 /* #### Code section: utility_code_proto ### */
jpayne@68 1590
jpayne@68 1591 /* --- Runtime support code (head) --- */
jpayne@68 1592 /* Refnanny.proto */
jpayne@68 1593 #ifndef CYTHON_REFNANNY
jpayne@68 1594 #define CYTHON_REFNANNY 0
jpayne@68 1595 #endif
jpayne@68 1596 #if CYTHON_REFNANNY
jpayne@68 1597 typedef struct {
jpayne@68 1598 void (*INCREF)(void*, PyObject*, Py_ssize_t);
jpayne@68 1599 void (*DECREF)(void*, PyObject*, Py_ssize_t);
jpayne@68 1600 void (*GOTREF)(void*, PyObject*, Py_ssize_t);
jpayne@68 1601 void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
jpayne@68 1602 void* (*SetupContext)(const char*, Py_ssize_t, const char*);
jpayne@68 1603 void (*FinishContext)(void**);
jpayne@68 1604 } __Pyx_RefNannyAPIStruct;
jpayne@68 1605 static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
jpayne@68 1606 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
jpayne@68 1607 #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
jpayne@68 1608 #ifdef WITH_THREAD
jpayne@68 1609 #define __Pyx_RefNannySetupContext(name, acquire_gil)\
jpayne@68 1610 if (acquire_gil) {\
jpayne@68 1611 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
jpayne@68 1612 __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
jpayne@68 1613 PyGILState_Release(__pyx_gilstate_save);\
jpayne@68 1614 } else {\
jpayne@68 1615 __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
jpayne@68 1616 }
jpayne@68 1617 #define __Pyx_RefNannyFinishContextNogil() {\
jpayne@68 1618 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
jpayne@68 1619 __Pyx_RefNannyFinishContext();\
jpayne@68 1620 PyGILState_Release(__pyx_gilstate_save);\
jpayne@68 1621 }
jpayne@68 1622 #else
jpayne@68 1623 #define __Pyx_RefNannySetupContext(name, acquire_gil)\
jpayne@68 1624 __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
jpayne@68 1625 #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
jpayne@68 1626 #endif
jpayne@68 1627 #define __Pyx_RefNannyFinishContextNogil() {\
jpayne@68 1628 PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
jpayne@68 1629 __Pyx_RefNannyFinishContext();\
jpayne@68 1630 PyGILState_Release(__pyx_gilstate_save);\
jpayne@68 1631 }
jpayne@68 1632 #define __Pyx_RefNannyFinishContext()\
jpayne@68 1633 __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
jpayne@68 1634 #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
jpayne@68 1635 #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
jpayne@68 1636 #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
jpayne@68 1637 #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
jpayne@68 1638 #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
jpayne@68 1639 #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
jpayne@68 1640 #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
jpayne@68 1641 #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
jpayne@68 1642 #else
jpayne@68 1643 #define __Pyx_RefNannyDeclarations
jpayne@68 1644 #define __Pyx_RefNannySetupContext(name, acquire_gil)
jpayne@68 1645 #define __Pyx_RefNannyFinishContextNogil()
jpayne@68 1646 #define __Pyx_RefNannyFinishContext()
jpayne@68 1647 #define __Pyx_INCREF(r) Py_INCREF(r)
jpayne@68 1648 #define __Pyx_DECREF(r) Py_DECREF(r)
jpayne@68 1649 #define __Pyx_GOTREF(r)
jpayne@68 1650 #define __Pyx_GIVEREF(r)
jpayne@68 1651 #define __Pyx_XINCREF(r) Py_XINCREF(r)
jpayne@68 1652 #define __Pyx_XDECREF(r) Py_XDECREF(r)
jpayne@68 1653 #define __Pyx_XGOTREF(r)
jpayne@68 1654 #define __Pyx_XGIVEREF(r)
jpayne@68 1655 #endif
jpayne@68 1656 #define __Pyx_Py_XDECREF_SET(r, v) do {\
jpayne@68 1657 PyObject *tmp = (PyObject *) r;\
jpayne@68 1658 r = v; Py_XDECREF(tmp);\
jpayne@68 1659 } while (0)
jpayne@68 1660 #define __Pyx_XDECREF_SET(r, v) do {\
jpayne@68 1661 PyObject *tmp = (PyObject *) r;\
jpayne@68 1662 r = v; __Pyx_XDECREF(tmp);\
jpayne@68 1663 } while (0)
jpayne@68 1664 #define __Pyx_DECREF_SET(r, v) do {\
jpayne@68 1665 PyObject *tmp = (PyObject *) r;\
jpayne@68 1666 r = v; __Pyx_DECREF(tmp);\
jpayne@68 1667 } while (0)
jpayne@68 1668 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
jpayne@68 1669 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
jpayne@68 1670
jpayne@68 1671 /* TupleAndListFromArray.proto */
jpayne@68 1672 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 1673 static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
jpayne@68 1674 static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
jpayne@68 1675 #endif
jpayne@68 1676
jpayne@68 1677 /* IncludeStringH.proto */
jpayne@68 1678 #include <string.h>
jpayne@68 1679
jpayne@68 1680 /* BytesEquals.proto */
jpayne@68 1681 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
jpayne@68 1682
jpayne@68 1683 /* UnicodeEquals.proto */
jpayne@68 1684 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
jpayne@68 1685
jpayne@68 1686 /* fastcall.proto */
jpayne@68 1687 #if CYTHON_AVOID_BORROWED_REFS
jpayne@68 1688 #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
jpayne@68 1689 #elif CYTHON_ASSUME_SAFE_MACROS
jpayne@68 1690 #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
jpayne@68 1691 #else
jpayne@68 1692 #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
jpayne@68 1693 #endif
jpayne@68 1694 #if CYTHON_AVOID_BORROWED_REFS
jpayne@68 1695 #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
jpayne@68 1696 #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
jpayne@68 1697 #else
jpayne@68 1698 #define __Pyx_Arg_NewRef_VARARGS(arg) arg
jpayne@68 1699 #define __Pyx_Arg_XDECREF_VARARGS(arg)
jpayne@68 1700 #endif
jpayne@68 1701 #define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
jpayne@68 1702 #define __Pyx_KwValues_VARARGS(args, nargs) NULL
jpayne@68 1703 #define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
jpayne@68 1704 #define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
jpayne@68 1705 #if CYTHON_METH_FASTCALL
jpayne@68 1706 #define __Pyx_Arg_FASTCALL(args, i) args[i]
jpayne@68 1707 #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
jpayne@68 1708 #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
jpayne@68 1709 static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
jpayne@68 1710 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
jpayne@68 1711 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
jpayne@68 1712 #else
jpayne@68 1713 #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
jpayne@68 1714 #endif
jpayne@68 1715 #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
jpayne@68 1716 to have the same reference counting */
jpayne@68 1717 #define __Pyx_Arg_XDECREF_FASTCALL(arg)
jpayne@68 1718 #else
jpayne@68 1719 #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
jpayne@68 1720 #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
jpayne@68 1721 #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
jpayne@68 1722 #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
jpayne@68 1723 #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
jpayne@68 1724 #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
jpayne@68 1725 #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
jpayne@68 1726 #endif
jpayne@68 1727 #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
jpayne@68 1728 #define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
jpayne@68 1729 #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
jpayne@68 1730 #else
jpayne@68 1731 #define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
jpayne@68 1732 #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
jpayne@68 1733 #endif
jpayne@68 1734
jpayne@68 1735 /* IncludeStructmemberH.proto */
jpayne@68 1736 #include <structmember.h>
jpayne@68 1737
jpayne@68 1738 /* FixUpExtensionType.proto */
jpayne@68 1739 #if CYTHON_USE_TYPE_SPECS
jpayne@68 1740 static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
jpayne@68 1741 #endif
jpayne@68 1742
jpayne@68 1743 /* FetchSharedCythonModule.proto */
jpayne@68 1744 static PyObject *__Pyx_FetchSharedCythonABIModule(void);
jpayne@68 1745
jpayne@68 1746 /* FetchCommonType.proto */
jpayne@68 1747 #if !CYTHON_USE_TYPE_SPECS
jpayne@68 1748 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
jpayne@68 1749 #else
jpayne@68 1750 static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
jpayne@68 1751 #endif
jpayne@68 1752
jpayne@68 1753 /* PyMethodNew.proto */
jpayne@68 1754 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1755 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
jpayne@68 1756 PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
jpayne@68 1757 CYTHON_UNUSED_VAR(typ);
jpayne@68 1758 if (!self)
jpayne@68 1759 return __Pyx_NewRef(func);
jpayne@68 1760 typesModule = PyImport_ImportModule("types");
jpayne@68 1761 if (!typesModule) return NULL;
jpayne@68 1762 methodType = PyObject_GetAttrString(typesModule, "MethodType");
jpayne@68 1763 Py_DECREF(typesModule);
jpayne@68 1764 if (!methodType) return NULL;
jpayne@68 1765 result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
jpayne@68 1766 Py_DECREF(methodType);
jpayne@68 1767 return result;
jpayne@68 1768 }
jpayne@68 1769 #elif PY_MAJOR_VERSION >= 3
jpayne@68 1770 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
jpayne@68 1771 CYTHON_UNUSED_VAR(typ);
jpayne@68 1772 if (!self)
jpayne@68 1773 return __Pyx_NewRef(func);
jpayne@68 1774 return PyMethod_New(func, self);
jpayne@68 1775 }
jpayne@68 1776 #else
jpayne@68 1777 #define __Pyx_PyMethod_New PyMethod_New
jpayne@68 1778 #endif
jpayne@68 1779
jpayne@68 1780 /* PyObjectGetAttrStr.proto */
jpayne@68 1781 #if CYTHON_USE_TYPE_SLOTS
jpayne@68 1782 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
jpayne@68 1783 #else
jpayne@68 1784 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
jpayne@68 1785 #endif
jpayne@68 1786
jpayne@68 1787 /* PyVectorcallFastCallDict.proto */
jpayne@68 1788 #if CYTHON_METH_FASTCALL
jpayne@68 1789 static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
jpayne@68 1790 #endif
jpayne@68 1791
jpayne@68 1792 /* CythonFunctionShared.proto */
jpayne@68 1793 #define __Pyx_CyFunction_USED
jpayne@68 1794 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01
jpayne@68 1795 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
jpayne@68 1796 #define __Pyx_CYFUNCTION_CCLASS 0x04
jpayne@68 1797 #define __Pyx_CYFUNCTION_COROUTINE 0x08
jpayne@68 1798 #define __Pyx_CyFunction_GetClosure(f)\
jpayne@68 1799 (((__pyx_CyFunctionObject *) (f))->func_closure)
jpayne@68 1800 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1801 #define __Pyx_CyFunction_GetClassObj(f)\
jpayne@68 1802 (((__pyx_CyFunctionObject *) (f))->func_classobj)
jpayne@68 1803 #else
jpayne@68 1804 #define __Pyx_CyFunction_GetClassObj(f)\
jpayne@68 1805 ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
jpayne@68 1806 #endif
jpayne@68 1807 #define __Pyx_CyFunction_SetClassObj(f, classobj)\
jpayne@68 1808 __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
jpayne@68 1809 #define __Pyx_CyFunction_Defaults(type, f)\
jpayne@68 1810 ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
jpayne@68 1811 #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
jpayne@68 1812 ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
jpayne@68 1813 typedef struct {
jpayne@68 1814 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1815 PyObject_HEAD
jpayne@68 1816 PyObject *func;
jpayne@68 1817 #elif PY_VERSION_HEX < 0x030900B1
jpayne@68 1818 PyCFunctionObject func;
jpayne@68 1819 #else
jpayne@68 1820 PyCMethodObject func;
jpayne@68 1821 #endif
jpayne@68 1822 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 1823 __pyx_vectorcallfunc func_vectorcall;
jpayne@68 1824 #endif
jpayne@68 1825 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1826 PyObject *func_weakreflist;
jpayne@68 1827 #endif
jpayne@68 1828 PyObject *func_dict;
jpayne@68 1829 PyObject *func_name;
jpayne@68 1830 PyObject *func_qualname;
jpayne@68 1831 PyObject *func_doc;
jpayne@68 1832 PyObject *func_globals;
jpayne@68 1833 PyObject *func_code;
jpayne@68 1834 PyObject *func_closure;
jpayne@68 1835 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1836 PyObject *func_classobj;
jpayne@68 1837 #endif
jpayne@68 1838 void *defaults;
jpayne@68 1839 int defaults_pyobjects;
jpayne@68 1840 size_t defaults_size;
jpayne@68 1841 int flags;
jpayne@68 1842 PyObject *defaults_tuple;
jpayne@68 1843 PyObject *defaults_kwdict;
jpayne@68 1844 PyObject *(*defaults_getter)(PyObject *);
jpayne@68 1845 PyObject *func_annotations;
jpayne@68 1846 PyObject *func_is_coroutine;
jpayne@68 1847 } __pyx_CyFunctionObject;
jpayne@68 1848 #undef __Pyx_CyOrPyCFunction_Check
jpayne@68 1849 #define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
jpayne@68 1850 #define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
jpayne@68 1851 #define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
jpayne@68 1852 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
jpayne@68 1853 #undef __Pyx_IsSameCFunction
jpayne@68 1854 #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc)
jpayne@68 1855 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
jpayne@68 1856 int flags, PyObject* qualname,
jpayne@68 1857 PyObject *closure,
jpayne@68 1858 PyObject *module, PyObject *globals,
jpayne@68 1859 PyObject* code);
jpayne@68 1860 static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
jpayne@68 1861 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
jpayne@68 1862 size_t size,
jpayne@68 1863 int pyobjects);
jpayne@68 1864 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
jpayne@68 1865 PyObject *tuple);
jpayne@68 1866 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
jpayne@68 1867 PyObject *dict);
jpayne@68 1868 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
jpayne@68 1869 PyObject *dict);
jpayne@68 1870 static int __pyx_CyFunction_init(PyObject *module);
jpayne@68 1871 #if CYTHON_METH_FASTCALL
jpayne@68 1872 static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
jpayne@68 1873 static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
jpayne@68 1874 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
jpayne@68 1875 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
jpayne@68 1876 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 1877 #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
jpayne@68 1878 #else
jpayne@68 1879 #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
jpayne@68 1880 #endif
jpayne@68 1881 #endif
jpayne@68 1882
jpayne@68 1883 /* CythonFunction.proto */
jpayne@68 1884 static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
jpayne@68 1885 int flags, PyObject* qualname,
jpayne@68 1886 PyObject *closure,
jpayne@68 1887 PyObject *module, PyObject *globals,
jpayne@68 1888 PyObject* code);
jpayne@68 1889
jpayne@68 1890 /* PyDictVersioning.proto */
jpayne@68 1891 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
jpayne@68 1892 #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
jpayne@68 1893 #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
jpayne@68 1894 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
jpayne@68 1895 (version_var) = __PYX_GET_DICT_VERSION(dict);\
jpayne@68 1896 (cache_var) = (value);
jpayne@68 1897 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
jpayne@68 1898 static PY_UINT64_T __pyx_dict_version = 0;\
jpayne@68 1899 static PyObject *__pyx_dict_cached_value = NULL;\
jpayne@68 1900 if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
jpayne@68 1901 (VAR) = __pyx_dict_cached_value;\
jpayne@68 1902 } else {\
jpayne@68 1903 (VAR) = __pyx_dict_cached_value = (LOOKUP);\
jpayne@68 1904 __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
jpayne@68 1905 }\
jpayne@68 1906 }
jpayne@68 1907 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
jpayne@68 1908 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
jpayne@68 1909 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
jpayne@68 1910 #else
jpayne@68 1911 #define __PYX_GET_DICT_VERSION(dict) (0)
jpayne@68 1912 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
jpayne@68 1913 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
jpayne@68 1914 #endif
jpayne@68 1915
jpayne@68 1916 /* PyErrExceptionMatches.proto */
jpayne@68 1917 #if CYTHON_FAST_THREAD_STATE
jpayne@68 1918 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
jpayne@68 1919 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
jpayne@68 1920 #else
jpayne@68 1921 #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
jpayne@68 1922 #endif
jpayne@68 1923
jpayne@68 1924 /* PyThreadStateGet.proto */
jpayne@68 1925 #if CYTHON_FAST_THREAD_STATE
jpayne@68 1926 #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
jpayne@68 1927 #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
jpayne@68 1928 #if PY_VERSION_HEX >= 0x030C00A6
jpayne@68 1929 #define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL)
jpayne@68 1930 #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
jpayne@68 1931 #else
jpayne@68 1932 #define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL)
jpayne@68 1933 #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type)
jpayne@68 1934 #endif
jpayne@68 1935 #else
jpayne@68 1936 #define __Pyx_PyThreadState_declare
jpayne@68 1937 #define __Pyx_PyThreadState_assign
jpayne@68 1938 #define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL)
jpayne@68 1939 #define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred()
jpayne@68 1940 #endif
jpayne@68 1941
jpayne@68 1942 /* PyErrFetchRestore.proto */
jpayne@68 1943 #if CYTHON_FAST_THREAD_STATE
jpayne@68 1944 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
jpayne@68 1945 #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
jpayne@68 1946 #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
jpayne@68 1947 #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
jpayne@68 1948 #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
jpayne@68 1949 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
jpayne@68 1950 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
jpayne@68 1951 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
jpayne@68 1952 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
jpayne@68 1953 #else
jpayne@68 1954 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
jpayne@68 1955 #endif
jpayne@68 1956 #else
jpayne@68 1957 #define __Pyx_PyErr_Clear() PyErr_Clear()
jpayne@68 1958 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
jpayne@68 1959 #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
jpayne@68 1960 #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
jpayne@68 1961 #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
jpayne@68 1962 #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
jpayne@68 1963 #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
jpayne@68 1964 #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
jpayne@68 1965 #endif
jpayne@68 1966
jpayne@68 1967 /* PyObjectGetAttrStrNoError.proto */
jpayne@68 1968 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
jpayne@68 1969
jpayne@68 1970 /* CLineInTraceback.proto */
jpayne@68 1971 #ifdef CYTHON_CLINE_IN_TRACEBACK
jpayne@68 1972 #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
jpayne@68 1973 #else
jpayne@68 1974 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
jpayne@68 1975 #endif
jpayne@68 1976
jpayne@68 1977 /* CodeObjectCache.proto */
jpayne@68 1978 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 1979 typedef struct {
jpayne@68 1980 PyCodeObject* code_object;
jpayne@68 1981 int code_line;
jpayne@68 1982 } __Pyx_CodeObjectCacheEntry;
jpayne@68 1983 struct __Pyx_CodeObjectCache {
jpayne@68 1984 int count;
jpayne@68 1985 int max_count;
jpayne@68 1986 __Pyx_CodeObjectCacheEntry* entries;
jpayne@68 1987 };
jpayne@68 1988 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
jpayne@68 1989 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
jpayne@68 1990 static PyCodeObject *__pyx_find_code_object(int code_line);
jpayne@68 1991 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
jpayne@68 1992 #endif
jpayne@68 1993
jpayne@68 1994 /* AddTraceback.proto */
jpayne@68 1995 static void __Pyx_AddTraceback(const char *funcname, int c_line,
jpayne@68 1996 int py_line, const char *filename);
jpayne@68 1997
jpayne@68 1998 /* FormatTypeName.proto */
jpayne@68 1999 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2000 typedef PyObject *__Pyx_TypeName;
jpayne@68 2001 #define __Pyx_FMT_TYPENAME "%U"
jpayne@68 2002 static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
jpayne@68 2003 #define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
jpayne@68 2004 #else
jpayne@68 2005 typedef const char *__Pyx_TypeName;
jpayne@68 2006 #define __Pyx_FMT_TYPENAME "%.200s"
jpayne@68 2007 #define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
jpayne@68 2008 #define __Pyx_DECREF_TypeName(obj)
jpayne@68 2009 #endif
jpayne@68 2010
jpayne@68 2011 /* GCCDiagnostics.proto */
jpayne@68 2012 #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
jpayne@68 2013 #define __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 2014 #endif
jpayne@68 2015
jpayne@68 2016 /* CIntToPy.proto */
jpayne@68 2017 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
jpayne@68 2018
jpayne@68 2019 /* CIntFromPy.proto */
jpayne@68 2020 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
jpayne@68 2021
jpayne@68 2022 /* CIntFromPy.proto */
jpayne@68 2023 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
jpayne@68 2024
jpayne@68 2025 /* FastTypeChecks.proto */
jpayne@68 2026 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 2027 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
jpayne@68 2028 #define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
jpayne@68 2029 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
jpayne@68 2030 static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
jpayne@68 2031 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
jpayne@68 2032 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
jpayne@68 2033 #else
jpayne@68 2034 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
jpayne@68 2035 #define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
jpayne@68 2036 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
jpayne@68 2037 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
jpayne@68 2038 #endif
jpayne@68 2039 #define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
jpayne@68 2040 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
jpayne@68 2041
jpayne@68 2042 /* CheckBinaryVersion.proto */
jpayne@68 2043 static unsigned long __Pyx_get_runtime_version(void);
jpayne@68 2044 static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
jpayne@68 2045
jpayne@68 2046 /* InitStrings.proto */
jpayne@68 2047 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
jpayne@68 2048
jpayne@68 2049 /* #### Code section: module_declarations ### */
jpayne@68 2050
jpayne@68 2051 /* Module declarations from "pysam.libcsamtools" */
jpayne@68 2052 /* #### Code section: typeinfo ### */
jpayne@68 2053 /* #### Code section: before_global_var ### */
jpayne@68 2054 #define __Pyx_MODULE_NAME "pysam.libcsamtools"
jpayne@68 2055 extern int __pyx_module_is_main_pysam__libcsamtools;
jpayne@68 2056 int __pyx_module_is_main_pysam__libcsamtools = 0;
jpayne@68 2057
jpayne@68 2058 /* Implementation of "pysam.libcsamtools" */
jpayne@68 2059 /* #### Code section: global_var ### */
jpayne@68 2060 /* #### Code section: string_decls ### */
jpayne@68 2061 static const char __pyx_k__2[] = "?";
jpayne@68 2062 static const char __pyx_k_main[] = "__main__";
jpayne@68 2063 static const char __pyx_k_name[] = "__name__";
jpayne@68 2064 static const char __pyx_k_test[] = "__test__";
jpayne@68 2065 static const char __pyx_k_py_samtools[] = "py_samtools";
jpayne@68 2066 static const char __pyx_k_is_coroutine[] = "_is_coroutine";
jpayne@68 2067 static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
jpayne@68 2068 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
jpayne@68 2069 static const char __pyx_k_pysam_libcsamtools[] = "pysam.libcsamtools";
jpayne@68 2070 static const char __pyx_k_pysam_libcsamtools_pyx[] = "pysam/libcsamtools.pyx";
jpayne@68 2071 /* #### Code section: decls ### */
jpayne@68 2072 static PyObject *__pyx_pf_5pysam_12libcsamtools_py_samtools(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
jpayne@68 2073 /* #### Code section: late_includes ### */
jpayne@68 2074 /* #### Code section: module_state ### */
jpayne@68 2075 typedef struct {
jpayne@68 2076 PyObject *__pyx_d;
jpayne@68 2077 PyObject *__pyx_b;
jpayne@68 2078 PyObject *__pyx_cython_runtime;
jpayne@68 2079 PyObject *__pyx_empty_tuple;
jpayne@68 2080 PyObject *__pyx_empty_bytes;
jpayne@68 2081 PyObject *__pyx_empty_unicode;
jpayne@68 2082 #ifdef __Pyx_CyFunction_USED
jpayne@68 2083 PyTypeObject *__pyx_CyFunctionType;
jpayne@68 2084 #endif
jpayne@68 2085 #ifdef __Pyx_FusedFunction_USED
jpayne@68 2086 PyTypeObject *__pyx_FusedFunctionType;
jpayne@68 2087 #endif
jpayne@68 2088 #ifdef __Pyx_Generator_USED
jpayne@68 2089 PyTypeObject *__pyx_GeneratorType;
jpayne@68 2090 #endif
jpayne@68 2091 #ifdef __Pyx_IterableCoroutine_USED
jpayne@68 2092 PyTypeObject *__pyx_IterableCoroutineType;
jpayne@68 2093 #endif
jpayne@68 2094 #ifdef __Pyx_Coroutine_USED
jpayne@68 2095 PyTypeObject *__pyx_CoroutineAwaitType;
jpayne@68 2096 #endif
jpayne@68 2097 #ifdef __Pyx_Coroutine_USED
jpayne@68 2098 PyTypeObject *__pyx_CoroutineType;
jpayne@68 2099 #endif
jpayne@68 2100 #if CYTHON_USE_MODULE_STATE
jpayne@68 2101 #endif
jpayne@68 2102 PyObject *__pyx_n_s__2;
jpayne@68 2103 PyObject *__pyx_n_s_asyncio_coroutines;
jpayne@68 2104 PyObject *__pyx_n_s_cline_in_traceback;
jpayne@68 2105 PyObject *__pyx_n_s_is_coroutine;
jpayne@68 2106 PyObject *__pyx_n_s_main;
jpayne@68 2107 PyObject *__pyx_n_s_name;
jpayne@68 2108 PyObject *__pyx_n_s_py_samtools;
jpayne@68 2109 PyObject *__pyx_n_s_pysam_libcsamtools;
jpayne@68 2110 PyObject *__pyx_kp_s_pysam_libcsamtools_pyx;
jpayne@68 2111 PyObject *__pyx_n_s_test;
jpayne@68 2112 PyObject *__pyx_codeobj_;
jpayne@68 2113 } __pyx_mstate;
jpayne@68 2114
jpayne@68 2115 #if CYTHON_USE_MODULE_STATE
jpayne@68 2116 #ifdef __cplusplus
jpayne@68 2117 namespace {
jpayne@68 2118 extern struct PyModuleDef __pyx_moduledef;
jpayne@68 2119 } /* anonymous namespace */
jpayne@68 2120 #else
jpayne@68 2121 static struct PyModuleDef __pyx_moduledef;
jpayne@68 2122 #endif
jpayne@68 2123
jpayne@68 2124 #define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
jpayne@68 2125
jpayne@68 2126 #define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
jpayne@68 2127
jpayne@68 2128 #define __pyx_m (PyState_FindModule(&__pyx_moduledef))
jpayne@68 2129 #else
jpayne@68 2130 static __pyx_mstate __pyx_mstate_global_static =
jpayne@68 2131 #ifdef __cplusplus
jpayne@68 2132 {};
jpayne@68 2133 #else
jpayne@68 2134 {0};
jpayne@68 2135 #endif
jpayne@68 2136 static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
jpayne@68 2137 #endif
jpayne@68 2138 /* #### Code section: module_state_clear ### */
jpayne@68 2139 #if CYTHON_USE_MODULE_STATE
jpayne@68 2140 static int __pyx_m_clear(PyObject *m) {
jpayne@68 2141 __pyx_mstate *clear_module_state = __pyx_mstate(m);
jpayne@68 2142 if (!clear_module_state) return 0;
jpayne@68 2143 Py_CLEAR(clear_module_state->__pyx_d);
jpayne@68 2144 Py_CLEAR(clear_module_state->__pyx_b);
jpayne@68 2145 Py_CLEAR(clear_module_state->__pyx_cython_runtime);
jpayne@68 2146 Py_CLEAR(clear_module_state->__pyx_empty_tuple);
jpayne@68 2147 Py_CLEAR(clear_module_state->__pyx_empty_bytes);
jpayne@68 2148 Py_CLEAR(clear_module_state->__pyx_empty_unicode);
jpayne@68 2149 #ifdef __Pyx_CyFunction_USED
jpayne@68 2150 Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
jpayne@68 2151 #endif
jpayne@68 2152 #ifdef __Pyx_FusedFunction_USED
jpayne@68 2153 Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
jpayne@68 2154 #endif
jpayne@68 2155 Py_CLEAR(clear_module_state->__pyx_n_s__2);
jpayne@68 2156 Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
jpayne@68 2157 Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
jpayne@68 2158 Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
jpayne@68 2159 Py_CLEAR(clear_module_state->__pyx_n_s_main);
jpayne@68 2160 Py_CLEAR(clear_module_state->__pyx_n_s_name);
jpayne@68 2161 Py_CLEAR(clear_module_state->__pyx_n_s_py_samtools);
jpayne@68 2162 Py_CLEAR(clear_module_state->__pyx_n_s_pysam_libcsamtools);
jpayne@68 2163 Py_CLEAR(clear_module_state->__pyx_kp_s_pysam_libcsamtools_pyx);
jpayne@68 2164 Py_CLEAR(clear_module_state->__pyx_n_s_test);
jpayne@68 2165 Py_CLEAR(clear_module_state->__pyx_codeobj_);
jpayne@68 2166 return 0;
jpayne@68 2167 }
jpayne@68 2168 #endif
jpayne@68 2169 /* #### Code section: module_state_traverse ### */
jpayne@68 2170 #if CYTHON_USE_MODULE_STATE
jpayne@68 2171 static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
jpayne@68 2172 __pyx_mstate *traverse_module_state = __pyx_mstate(m);
jpayne@68 2173 if (!traverse_module_state) return 0;
jpayne@68 2174 Py_VISIT(traverse_module_state->__pyx_d);
jpayne@68 2175 Py_VISIT(traverse_module_state->__pyx_b);
jpayne@68 2176 Py_VISIT(traverse_module_state->__pyx_cython_runtime);
jpayne@68 2177 Py_VISIT(traverse_module_state->__pyx_empty_tuple);
jpayne@68 2178 Py_VISIT(traverse_module_state->__pyx_empty_bytes);
jpayne@68 2179 Py_VISIT(traverse_module_state->__pyx_empty_unicode);
jpayne@68 2180 #ifdef __Pyx_CyFunction_USED
jpayne@68 2181 Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
jpayne@68 2182 #endif
jpayne@68 2183 #ifdef __Pyx_FusedFunction_USED
jpayne@68 2184 Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
jpayne@68 2185 #endif
jpayne@68 2186 Py_VISIT(traverse_module_state->__pyx_n_s__2);
jpayne@68 2187 Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
jpayne@68 2188 Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
jpayne@68 2189 Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
jpayne@68 2190 Py_VISIT(traverse_module_state->__pyx_n_s_main);
jpayne@68 2191 Py_VISIT(traverse_module_state->__pyx_n_s_name);
jpayne@68 2192 Py_VISIT(traverse_module_state->__pyx_n_s_py_samtools);
jpayne@68 2193 Py_VISIT(traverse_module_state->__pyx_n_s_pysam_libcsamtools);
jpayne@68 2194 Py_VISIT(traverse_module_state->__pyx_kp_s_pysam_libcsamtools_pyx);
jpayne@68 2195 Py_VISIT(traverse_module_state->__pyx_n_s_test);
jpayne@68 2196 Py_VISIT(traverse_module_state->__pyx_codeobj_);
jpayne@68 2197 return 0;
jpayne@68 2198 }
jpayne@68 2199 #endif
jpayne@68 2200 /* #### Code section: module_state_defines ### */
jpayne@68 2201 #define __pyx_d __pyx_mstate_global->__pyx_d
jpayne@68 2202 #define __pyx_b __pyx_mstate_global->__pyx_b
jpayne@68 2203 #define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
jpayne@68 2204 #define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
jpayne@68 2205 #define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
jpayne@68 2206 #define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
jpayne@68 2207 #ifdef __Pyx_CyFunction_USED
jpayne@68 2208 #define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
jpayne@68 2209 #endif
jpayne@68 2210 #ifdef __Pyx_FusedFunction_USED
jpayne@68 2211 #define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
jpayne@68 2212 #endif
jpayne@68 2213 #ifdef __Pyx_Generator_USED
jpayne@68 2214 #define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
jpayne@68 2215 #endif
jpayne@68 2216 #ifdef __Pyx_IterableCoroutine_USED
jpayne@68 2217 #define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
jpayne@68 2218 #endif
jpayne@68 2219 #ifdef __Pyx_Coroutine_USED
jpayne@68 2220 #define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
jpayne@68 2221 #endif
jpayne@68 2222 #ifdef __Pyx_Coroutine_USED
jpayne@68 2223 #define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
jpayne@68 2224 #endif
jpayne@68 2225 #if CYTHON_USE_MODULE_STATE
jpayne@68 2226 #endif
jpayne@68 2227 #define __pyx_n_s__2 __pyx_mstate_global->__pyx_n_s__2
jpayne@68 2228 #define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
jpayne@68 2229 #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
jpayne@68 2230 #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
jpayne@68 2231 #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
jpayne@68 2232 #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
jpayne@68 2233 #define __pyx_n_s_py_samtools __pyx_mstate_global->__pyx_n_s_py_samtools
jpayne@68 2234 #define __pyx_n_s_pysam_libcsamtools __pyx_mstate_global->__pyx_n_s_pysam_libcsamtools
jpayne@68 2235 #define __pyx_kp_s_pysam_libcsamtools_pyx __pyx_mstate_global->__pyx_kp_s_pysam_libcsamtools_pyx
jpayne@68 2236 #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
jpayne@68 2237 #define __pyx_codeobj_ __pyx_mstate_global->__pyx_codeobj_
jpayne@68 2238 /* #### Code section: module_code ### */
jpayne@68 2239
jpayne@68 2240 /* "pysam/libcsamtools.pyx":1
jpayne@68 2241 * def py_samtools(): # <<<<<<<<<<<<<<
jpayne@68 2242 * pass
jpayne@68 2243 */
jpayne@68 2244
jpayne@68 2245 /* Python wrapper */
jpayne@68 2246 static PyObject *__pyx_pw_5pysam_12libcsamtools_1py_samtools(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
jpayne@68 2247 static PyMethodDef __pyx_mdef_5pysam_12libcsamtools_1py_samtools = {"py_samtools", (PyCFunction)__pyx_pw_5pysam_12libcsamtools_1py_samtools, METH_NOARGS, 0};
jpayne@68 2248 static PyObject *__pyx_pw_5pysam_12libcsamtools_1py_samtools(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
jpayne@68 2249 CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
jpayne@68 2250 PyObject *__pyx_r = 0;
jpayne@68 2251 __Pyx_RefNannyDeclarations
jpayne@68 2252 __Pyx_RefNannySetupContext("py_samtools (wrapper)", 0);
jpayne@68 2253 __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
jpayne@68 2254 __pyx_r = __pyx_pf_5pysam_12libcsamtools_py_samtools(__pyx_self);
jpayne@68 2255
jpayne@68 2256 /* function exit code */
jpayne@68 2257 __Pyx_RefNannyFinishContext();
jpayne@68 2258 return __pyx_r;
jpayne@68 2259 }
jpayne@68 2260
jpayne@68 2261 static PyObject *__pyx_pf_5pysam_12libcsamtools_py_samtools(CYTHON_UNUSED PyObject *__pyx_self) {
jpayne@68 2262 PyObject *__pyx_r = NULL;
jpayne@68 2263 __Pyx_RefNannyDeclarations
jpayne@68 2264 __Pyx_RefNannySetupContext("py_samtools", 1);
jpayne@68 2265
jpayne@68 2266 /* function exit code */
jpayne@68 2267 __pyx_r = Py_None; __Pyx_INCREF(Py_None);
jpayne@68 2268 __Pyx_XGIVEREF(__pyx_r);
jpayne@68 2269 __Pyx_RefNannyFinishContext();
jpayne@68 2270 return __pyx_r;
jpayne@68 2271 }
jpayne@68 2272
jpayne@68 2273 static PyMethodDef __pyx_methods[] = {
jpayne@68 2274 {0, 0, 0, 0}
jpayne@68 2275 };
jpayne@68 2276 #ifndef CYTHON_SMALL_CODE
jpayne@68 2277 #if defined(__clang__)
jpayne@68 2278 #define CYTHON_SMALL_CODE
jpayne@68 2279 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
jpayne@68 2280 #define CYTHON_SMALL_CODE __attribute__((cold))
jpayne@68 2281 #else
jpayne@68 2282 #define CYTHON_SMALL_CODE
jpayne@68 2283 #endif
jpayne@68 2284 #endif
jpayne@68 2285 /* #### Code section: pystring_table ### */
jpayne@68 2286
jpayne@68 2287 static int __Pyx_CreateStringTabAndInitStrings(void) {
jpayne@68 2288 __Pyx_StringTabEntry __pyx_string_tab[] = {
jpayne@68 2289 {&__pyx_n_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 1},
jpayne@68 2290 {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
jpayne@68 2291 {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
jpayne@68 2292 {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
jpayne@68 2293 {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
jpayne@68 2294 {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
jpayne@68 2295 {&__pyx_n_s_py_samtools, __pyx_k_py_samtools, sizeof(__pyx_k_py_samtools), 0, 0, 1, 1},
jpayne@68 2296 {&__pyx_n_s_pysam_libcsamtools, __pyx_k_pysam_libcsamtools, sizeof(__pyx_k_pysam_libcsamtools), 0, 0, 1, 1},
jpayne@68 2297 {&__pyx_kp_s_pysam_libcsamtools_pyx, __pyx_k_pysam_libcsamtools_pyx, sizeof(__pyx_k_pysam_libcsamtools_pyx), 0, 0, 1, 0},
jpayne@68 2298 {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
jpayne@68 2299 {0, 0, 0, 0, 0, 0, 0}
jpayne@68 2300 };
jpayne@68 2301 return __Pyx_InitStrings(__pyx_string_tab);
jpayne@68 2302 }
jpayne@68 2303 /* #### Code section: cached_builtins ### */
jpayne@68 2304 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
jpayne@68 2305 return 0;
jpayne@68 2306 }
jpayne@68 2307 /* #### Code section: cached_constants ### */
jpayne@68 2308
jpayne@68 2309 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
jpayne@68 2310 __Pyx_RefNannyDeclarations
jpayne@68 2311 __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
jpayne@68 2312
jpayne@68 2313 /* "pysam/libcsamtools.pyx":1
jpayne@68 2314 * def py_samtools(): # <<<<<<<<<<<<<<
jpayne@68 2315 * pass
jpayne@68 2316 */
jpayne@68 2317 __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pysam_libcsamtools_pyx, __pyx_n_s_py_samtools, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2318 __Pyx_RefNannyFinishContext();
jpayne@68 2319 return 0;
jpayne@68 2320 __pyx_L1_error:;
jpayne@68 2321 __Pyx_RefNannyFinishContext();
jpayne@68 2322 return -1;
jpayne@68 2323 }
jpayne@68 2324 /* #### Code section: init_constants ### */
jpayne@68 2325
jpayne@68 2326 static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
jpayne@68 2327 if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
jpayne@68 2328 return 0;
jpayne@68 2329 __pyx_L1_error:;
jpayne@68 2330 return -1;
jpayne@68 2331 }
jpayne@68 2332 /* #### Code section: init_globals ### */
jpayne@68 2333
jpayne@68 2334 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
jpayne@68 2335 return 0;
jpayne@68 2336 }
jpayne@68 2337 /* #### Code section: init_module ### */
jpayne@68 2338
jpayne@68 2339 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
jpayne@68 2340 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
jpayne@68 2341 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
jpayne@68 2342 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
jpayne@68 2343 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
jpayne@68 2344 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
jpayne@68 2345 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
jpayne@68 2346
jpayne@68 2347 static int __Pyx_modinit_global_init_code(void) {
jpayne@68 2348 __Pyx_RefNannyDeclarations
jpayne@68 2349 __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
jpayne@68 2350 /*--- Global init code ---*/
jpayne@68 2351 __Pyx_RefNannyFinishContext();
jpayne@68 2352 return 0;
jpayne@68 2353 }
jpayne@68 2354
jpayne@68 2355 static int __Pyx_modinit_variable_export_code(void) {
jpayne@68 2356 __Pyx_RefNannyDeclarations
jpayne@68 2357 __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
jpayne@68 2358 /*--- Variable export code ---*/
jpayne@68 2359 __Pyx_RefNannyFinishContext();
jpayne@68 2360 return 0;
jpayne@68 2361 }
jpayne@68 2362
jpayne@68 2363 static int __Pyx_modinit_function_export_code(void) {
jpayne@68 2364 __Pyx_RefNannyDeclarations
jpayne@68 2365 __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
jpayne@68 2366 /*--- Function export code ---*/
jpayne@68 2367 __Pyx_RefNannyFinishContext();
jpayne@68 2368 return 0;
jpayne@68 2369 }
jpayne@68 2370
jpayne@68 2371 static int __Pyx_modinit_type_init_code(void) {
jpayne@68 2372 __Pyx_RefNannyDeclarations
jpayne@68 2373 __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
jpayne@68 2374 /*--- Type init code ---*/
jpayne@68 2375 __Pyx_RefNannyFinishContext();
jpayne@68 2376 return 0;
jpayne@68 2377 }
jpayne@68 2378
jpayne@68 2379 static int __Pyx_modinit_type_import_code(void) {
jpayne@68 2380 __Pyx_RefNannyDeclarations
jpayne@68 2381 __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
jpayne@68 2382 /*--- Type import code ---*/
jpayne@68 2383 __Pyx_RefNannyFinishContext();
jpayne@68 2384 return 0;
jpayne@68 2385 }
jpayne@68 2386
jpayne@68 2387 static int __Pyx_modinit_variable_import_code(void) {
jpayne@68 2388 __Pyx_RefNannyDeclarations
jpayne@68 2389 __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
jpayne@68 2390 /*--- Variable import code ---*/
jpayne@68 2391 __Pyx_RefNannyFinishContext();
jpayne@68 2392 return 0;
jpayne@68 2393 }
jpayne@68 2394
jpayne@68 2395 static int __Pyx_modinit_function_import_code(void) {
jpayne@68 2396 __Pyx_RefNannyDeclarations
jpayne@68 2397 __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
jpayne@68 2398 /*--- Function import code ---*/
jpayne@68 2399 __Pyx_RefNannyFinishContext();
jpayne@68 2400 return 0;
jpayne@68 2401 }
jpayne@68 2402
jpayne@68 2403
jpayne@68 2404 #if PY_MAJOR_VERSION >= 3
jpayne@68 2405 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2406 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
jpayne@68 2407 static int __pyx_pymod_exec_libcsamtools(PyObject* module); /*proto*/
jpayne@68 2408 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
jpayne@68 2409 {Py_mod_create, (void*)__pyx_pymod_create},
jpayne@68 2410 {Py_mod_exec, (void*)__pyx_pymod_exec_libcsamtools},
jpayne@68 2411 {0, NULL}
jpayne@68 2412 };
jpayne@68 2413 #endif
jpayne@68 2414
jpayne@68 2415 #ifdef __cplusplus
jpayne@68 2416 namespace {
jpayne@68 2417 struct PyModuleDef __pyx_moduledef =
jpayne@68 2418 #else
jpayne@68 2419 static struct PyModuleDef __pyx_moduledef =
jpayne@68 2420 #endif
jpayne@68 2421 {
jpayne@68 2422 PyModuleDef_HEAD_INIT,
jpayne@68 2423 "libcsamtools",
jpayne@68 2424 0, /* m_doc */
jpayne@68 2425 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2426 0, /* m_size */
jpayne@68 2427 #elif CYTHON_USE_MODULE_STATE
jpayne@68 2428 sizeof(__pyx_mstate), /* m_size */
jpayne@68 2429 #else
jpayne@68 2430 -1, /* m_size */
jpayne@68 2431 #endif
jpayne@68 2432 __pyx_methods /* m_methods */,
jpayne@68 2433 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2434 __pyx_moduledef_slots, /* m_slots */
jpayne@68 2435 #else
jpayne@68 2436 NULL, /* m_reload */
jpayne@68 2437 #endif
jpayne@68 2438 #if CYTHON_USE_MODULE_STATE
jpayne@68 2439 __pyx_m_traverse, /* m_traverse */
jpayne@68 2440 __pyx_m_clear, /* m_clear */
jpayne@68 2441 NULL /* m_free */
jpayne@68 2442 #else
jpayne@68 2443 NULL, /* m_traverse */
jpayne@68 2444 NULL, /* m_clear */
jpayne@68 2445 NULL /* m_free */
jpayne@68 2446 #endif
jpayne@68 2447 };
jpayne@68 2448 #ifdef __cplusplus
jpayne@68 2449 } /* anonymous namespace */
jpayne@68 2450 #endif
jpayne@68 2451 #endif
jpayne@68 2452
jpayne@68 2453 #ifndef CYTHON_NO_PYINIT_EXPORT
jpayne@68 2454 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
jpayne@68 2455 #elif PY_MAJOR_VERSION < 3
jpayne@68 2456 #ifdef __cplusplus
jpayne@68 2457 #define __Pyx_PyMODINIT_FUNC extern "C" void
jpayne@68 2458 #else
jpayne@68 2459 #define __Pyx_PyMODINIT_FUNC void
jpayne@68 2460 #endif
jpayne@68 2461 #else
jpayne@68 2462 #ifdef __cplusplus
jpayne@68 2463 #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
jpayne@68 2464 #else
jpayne@68 2465 #define __Pyx_PyMODINIT_FUNC PyObject *
jpayne@68 2466 #endif
jpayne@68 2467 #endif
jpayne@68 2468
jpayne@68 2469
jpayne@68 2470 #if PY_MAJOR_VERSION < 3
jpayne@68 2471 __Pyx_PyMODINIT_FUNC initlibcsamtools(void) CYTHON_SMALL_CODE; /*proto*/
jpayne@68 2472 __Pyx_PyMODINIT_FUNC initlibcsamtools(void)
jpayne@68 2473 #else
jpayne@68 2474 __Pyx_PyMODINIT_FUNC PyInit_libcsamtools(void) CYTHON_SMALL_CODE; /*proto*/
jpayne@68 2475 __Pyx_PyMODINIT_FUNC PyInit_libcsamtools(void)
jpayne@68 2476 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2477 {
jpayne@68 2478 return PyModuleDef_Init(&__pyx_moduledef);
jpayne@68 2479 }
jpayne@68 2480 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
jpayne@68 2481 #if PY_VERSION_HEX >= 0x030700A1
jpayne@68 2482 static PY_INT64_T main_interpreter_id = -1;
jpayne@68 2483 PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
jpayne@68 2484 if (main_interpreter_id == -1) {
jpayne@68 2485 main_interpreter_id = current_id;
jpayne@68 2486 return (unlikely(current_id == -1)) ? -1 : 0;
jpayne@68 2487 } else if (unlikely(main_interpreter_id != current_id))
jpayne@68 2488 #else
jpayne@68 2489 static PyInterpreterState *main_interpreter = NULL;
jpayne@68 2490 PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
jpayne@68 2491 if (!main_interpreter) {
jpayne@68 2492 main_interpreter = current_interpreter;
jpayne@68 2493 } else if (unlikely(main_interpreter != current_interpreter))
jpayne@68 2494 #endif
jpayne@68 2495 {
jpayne@68 2496 PyErr_SetString(
jpayne@68 2497 PyExc_ImportError,
jpayne@68 2498 "Interpreter change detected - this module can only be loaded into one interpreter per process.");
jpayne@68 2499 return -1;
jpayne@68 2500 }
jpayne@68 2501 return 0;
jpayne@68 2502 }
jpayne@68 2503 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2504 static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
jpayne@68 2505 #else
jpayne@68 2506 static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
jpayne@68 2507 #endif
jpayne@68 2508 {
jpayne@68 2509 PyObject *value = PyObject_GetAttrString(spec, from_name);
jpayne@68 2510 int result = 0;
jpayne@68 2511 if (likely(value)) {
jpayne@68 2512 if (allow_none || value != Py_None) {
jpayne@68 2513 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2514 result = PyModule_AddObject(module, to_name, value);
jpayne@68 2515 #else
jpayne@68 2516 result = PyDict_SetItemString(moddict, to_name, value);
jpayne@68 2517 #endif
jpayne@68 2518 }
jpayne@68 2519 Py_DECREF(value);
jpayne@68 2520 } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
jpayne@68 2521 PyErr_Clear();
jpayne@68 2522 } else {
jpayne@68 2523 result = -1;
jpayne@68 2524 }
jpayne@68 2525 return result;
jpayne@68 2526 }
jpayne@68 2527 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
jpayne@68 2528 PyObject *module = NULL, *moddict, *modname;
jpayne@68 2529 CYTHON_UNUSED_VAR(def);
jpayne@68 2530 if (__Pyx_check_single_interpreter())
jpayne@68 2531 return NULL;
jpayne@68 2532 if (__pyx_m)
jpayne@68 2533 return __Pyx_NewRef(__pyx_m);
jpayne@68 2534 modname = PyObject_GetAttrString(spec, "name");
jpayne@68 2535 if (unlikely(!modname)) goto bad;
jpayne@68 2536 module = PyModule_NewObject(modname);
jpayne@68 2537 Py_DECREF(modname);
jpayne@68 2538 if (unlikely(!module)) goto bad;
jpayne@68 2539 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2540 moddict = module;
jpayne@68 2541 #else
jpayne@68 2542 moddict = PyModule_GetDict(module);
jpayne@68 2543 if (unlikely(!moddict)) goto bad;
jpayne@68 2544 #endif
jpayne@68 2545 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
jpayne@68 2546 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
jpayne@68 2547 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
jpayne@68 2548 if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
jpayne@68 2549 return module;
jpayne@68 2550 bad:
jpayne@68 2551 Py_XDECREF(module);
jpayne@68 2552 return NULL;
jpayne@68 2553 }
jpayne@68 2554
jpayne@68 2555
jpayne@68 2556 static CYTHON_SMALL_CODE int __pyx_pymod_exec_libcsamtools(PyObject *__pyx_pyinit_module)
jpayne@68 2557 #endif
jpayne@68 2558 #endif
jpayne@68 2559 {
jpayne@68 2560 int stringtab_initialized = 0;
jpayne@68 2561 #if CYTHON_USE_MODULE_STATE
jpayne@68 2562 int pystate_addmodule_run = 0;
jpayne@68 2563 #endif
jpayne@68 2564 PyObject *__pyx_t_1 = NULL;
jpayne@68 2565 PyObject *__pyx_t_2 = NULL;
jpayne@68 2566 int __pyx_lineno = 0;
jpayne@68 2567 const char *__pyx_filename = NULL;
jpayne@68 2568 int __pyx_clineno = 0;
jpayne@68 2569 __Pyx_RefNannyDeclarations
jpayne@68 2570 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2571 if (__pyx_m) {
jpayne@68 2572 if (__pyx_m == __pyx_pyinit_module) return 0;
jpayne@68 2573 PyErr_SetString(PyExc_RuntimeError, "Module 'libcsamtools' has already been imported. Re-initialisation is not supported.");
jpayne@68 2574 return -1;
jpayne@68 2575 }
jpayne@68 2576 #elif PY_MAJOR_VERSION >= 3
jpayne@68 2577 if (__pyx_m) return __Pyx_NewRef(__pyx_m);
jpayne@68 2578 #endif
jpayne@68 2579 /*--- Module creation code ---*/
jpayne@68 2580 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2581 __pyx_m = __pyx_pyinit_module;
jpayne@68 2582 Py_INCREF(__pyx_m);
jpayne@68 2583 #else
jpayne@68 2584 #if PY_MAJOR_VERSION < 3
jpayne@68 2585 __pyx_m = Py_InitModule4("libcsamtools", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
jpayne@68 2586 if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2587 #elif CYTHON_USE_MODULE_STATE
jpayne@68 2588 __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2589 {
jpayne@68 2590 int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
jpayne@68 2591 __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "libcsamtools" pseudovariable */
jpayne@68 2592 if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2593 pystate_addmodule_run = 1;
jpayne@68 2594 }
jpayne@68 2595 #else
jpayne@68 2596 __pyx_m = PyModule_Create(&__pyx_moduledef);
jpayne@68 2597 if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2598 #endif
jpayne@68 2599 #endif
jpayne@68 2600 CYTHON_UNUSED_VAR(__pyx_t_1);
jpayne@68 2601 __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2602 Py_INCREF(__pyx_d);
jpayne@68 2603 __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2604 __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2605 if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2606 #if CYTHON_REFNANNY
jpayne@68 2607 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
jpayne@68 2608 if (!__Pyx_RefNanny) {
jpayne@68 2609 PyErr_Clear();
jpayne@68 2610 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
jpayne@68 2611 if (!__Pyx_RefNanny)
jpayne@68 2612 Py_FatalError("failed to import 'refnanny' module");
jpayne@68 2613 }
jpayne@68 2614 #endif
jpayne@68 2615 __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_libcsamtools(void)", 0);
jpayne@68 2616 if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2617 #ifdef __Pxy_PyFrame_Initialize_Offsets
jpayne@68 2618 __Pxy_PyFrame_Initialize_Offsets();
jpayne@68 2619 #endif
jpayne@68 2620 __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2621 __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2622 __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2623 #ifdef __Pyx_CyFunction_USED
jpayne@68 2624 if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2625 #endif
jpayne@68 2626 #ifdef __Pyx_FusedFunction_USED
jpayne@68 2627 if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2628 #endif
jpayne@68 2629 #ifdef __Pyx_Coroutine_USED
jpayne@68 2630 if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2631 #endif
jpayne@68 2632 #ifdef __Pyx_Generator_USED
jpayne@68 2633 if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2634 #endif
jpayne@68 2635 #ifdef __Pyx_AsyncGen_USED
jpayne@68 2636 if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2637 #endif
jpayne@68 2638 #ifdef __Pyx_StopAsyncIteration_USED
jpayne@68 2639 if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2640 #endif
jpayne@68 2641 /*--- Library function declarations ---*/
jpayne@68 2642 /*--- Threads initialization code ---*/
jpayne@68 2643 #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
jpayne@68 2644 PyEval_InitThreads();
jpayne@68 2645 #endif
jpayne@68 2646 /*--- Initialize various global constants etc. ---*/
jpayne@68 2647 if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2648 stringtab_initialized = 1;
jpayne@68 2649 if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2650 #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
jpayne@68 2651 if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2652 #endif
jpayne@68 2653 if (__pyx_module_is_main_pysam__libcsamtools) {
jpayne@68 2654 if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2655 }
jpayne@68 2656 #if PY_MAJOR_VERSION >= 3
jpayne@68 2657 {
jpayne@68 2658 PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2659 if (!PyDict_GetItemString(modules, "pysam.libcsamtools")) {
jpayne@68 2660 if (unlikely((PyDict_SetItemString(modules, "pysam.libcsamtools", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2661 }
jpayne@68 2662 }
jpayne@68 2663 #endif
jpayne@68 2664 /*--- Builtin init code ---*/
jpayne@68 2665 if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2666 /*--- Constants init code ---*/
jpayne@68 2667 if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2668 /*--- Global type/function init code ---*/
jpayne@68 2669 (void)__Pyx_modinit_global_init_code();
jpayne@68 2670 (void)__Pyx_modinit_variable_export_code();
jpayne@68 2671 (void)__Pyx_modinit_function_export_code();
jpayne@68 2672 (void)__Pyx_modinit_type_init_code();
jpayne@68 2673 (void)__Pyx_modinit_type_import_code();
jpayne@68 2674 (void)__Pyx_modinit_variable_import_code();
jpayne@68 2675 (void)__Pyx_modinit_function_import_code();
jpayne@68 2676 /*--- Execution code ---*/
jpayne@68 2677 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
jpayne@68 2678 if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2679 #endif
jpayne@68 2680
jpayne@68 2681 /* "pysam/libcsamtools.pyx":1
jpayne@68 2682 * def py_samtools(): # <<<<<<<<<<<<<<
jpayne@68 2683 * pass
jpayne@68 2684 */
jpayne@68 2685 __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_5pysam_12libcsamtools_1py_samtools, 0, __pyx_n_s_py_samtools, NULL, __pyx_n_s_pysam_libcsamtools, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2686 __Pyx_GOTREF(__pyx_t_2);
jpayne@68 2687 if (PyDict_SetItem(__pyx_d, __pyx_n_s_py_samtools, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2688 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
jpayne@68 2689 __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2690 __Pyx_GOTREF(__pyx_t_2);
jpayne@68 2691 if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
jpayne@68 2692 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
jpayne@68 2693
jpayne@68 2694 /*--- Wrapped vars code ---*/
jpayne@68 2695
jpayne@68 2696 goto __pyx_L0;
jpayne@68 2697 __pyx_L1_error:;
jpayne@68 2698 __Pyx_XDECREF(__pyx_t_2);
jpayne@68 2699 if (__pyx_m) {
jpayne@68 2700 if (__pyx_d && stringtab_initialized) {
jpayne@68 2701 __Pyx_AddTraceback("init pysam.libcsamtools", __pyx_clineno, __pyx_lineno, __pyx_filename);
jpayne@68 2702 }
jpayne@68 2703 #if !CYTHON_USE_MODULE_STATE
jpayne@68 2704 Py_CLEAR(__pyx_m);
jpayne@68 2705 #else
jpayne@68 2706 Py_DECREF(__pyx_m);
jpayne@68 2707 if (pystate_addmodule_run) {
jpayne@68 2708 PyObject *tp, *value, *tb;
jpayne@68 2709 PyErr_Fetch(&tp, &value, &tb);
jpayne@68 2710 PyState_RemoveModule(&__pyx_moduledef);
jpayne@68 2711 PyErr_Restore(tp, value, tb);
jpayne@68 2712 }
jpayne@68 2713 #endif
jpayne@68 2714 } else if (!PyErr_Occurred()) {
jpayne@68 2715 PyErr_SetString(PyExc_ImportError, "init pysam.libcsamtools");
jpayne@68 2716 }
jpayne@68 2717 __pyx_L0:;
jpayne@68 2718 __Pyx_RefNannyFinishContext();
jpayne@68 2719 #if CYTHON_PEP489_MULTI_PHASE_INIT
jpayne@68 2720 return (__pyx_m != NULL) ? 0 : -1;
jpayne@68 2721 #elif PY_MAJOR_VERSION >= 3
jpayne@68 2722 return __pyx_m;
jpayne@68 2723 #else
jpayne@68 2724 return;
jpayne@68 2725 #endif
jpayne@68 2726 }
jpayne@68 2727 /* #### Code section: cleanup_globals ### */
jpayne@68 2728 /* #### Code section: cleanup_module ### */
jpayne@68 2729 /* #### Code section: main_method ### */
jpayne@68 2730 /* #### Code section: utility_code_pragmas ### */
jpayne@68 2731 #ifdef _MSC_VER
jpayne@68 2732 #pragma warning( push )
jpayne@68 2733 /* Warning 4127: conditional expression is constant
jpayne@68 2734 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
jpayne@68 2735 * compile-time, so this warning is not useful
jpayne@68 2736 */
jpayne@68 2737 #pragma warning( disable : 4127 )
jpayne@68 2738 #endif
jpayne@68 2739
jpayne@68 2740
jpayne@68 2741
jpayne@68 2742 /* #### Code section: utility_code_def ### */
jpayne@68 2743
jpayne@68 2744 /* --- Runtime support code --- */
jpayne@68 2745 /* Refnanny */
jpayne@68 2746 #if CYTHON_REFNANNY
jpayne@68 2747 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
jpayne@68 2748 PyObject *m = NULL, *p = NULL;
jpayne@68 2749 void *r = NULL;
jpayne@68 2750 m = PyImport_ImportModule(modname);
jpayne@68 2751 if (!m) goto end;
jpayne@68 2752 p = PyObject_GetAttrString(m, "RefNannyAPI");
jpayne@68 2753 if (!p) goto end;
jpayne@68 2754 r = PyLong_AsVoidPtr(p);
jpayne@68 2755 end:
jpayne@68 2756 Py_XDECREF(p);
jpayne@68 2757 Py_XDECREF(m);
jpayne@68 2758 return (__Pyx_RefNannyAPIStruct *)r;
jpayne@68 2759 }
jpayne@68 2760 #endif
jpayne@68 2761
jpayne@68 2762 /* TupleAndListFromArray */
jpayne@68 2763 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 2764 static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
jpayne@68 2765 PyObject *v;
jpayne@68 2766 Py_ssize_t i;
jpayne@68 2767 for (i = 0; i < length; i++) {
jpayne@68 2768 v = dest[i] = src[i];
jpayne@68 2769 Py_INCREF(v);
jpayne@68 2770 }
jpayne@68 2771 }
jpayne@68 2772 static CYTHON_INLINE PyObject *
jpayne@68 2773 __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
jpayne@68 2774 {
jpayne@68 2775 PyObject *res;
jpayne@68 2776 if (n <= 0) {
jpayne@68 2777 Py_INCREF(__pyx_empty_tuple);
jpayne@68 2778 return __pyx_empty_tuple;
jpayne@68 2779 }
jpayne@68 2780 res = PyTuple_New(n);
jpayne@68 2781 if (unlikely(res == NULL)) return NULL;
jpayne@68 2782 __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
jpayne@68 2783 return res;
jpayne@68 2784 }
jpayne@68 2785 static CYTHON_INLINE PyObject *
jpayne@68 2786 __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
jpayne@68 2787 {
jpayne@68 2788 PyObject *res;
jpayne@68 2789 if (n <= 0) {
jpayne@68 2790 return PyList_New(0);
jpayne@68 2791 }
jpayne@68 2792 res = PyList_New(n);
jpayne@68 2793 if (unlikely(res == NULL)) return NULL;
jpayne@68 2794 __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
jpayne@68 2795 return res;
jpayne@68 2796 }
jpayne@68 2797 #endif
jpayne@68 2798
jpayne@68 2799 /* BytesEquals */
jpayne@68 2800 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
jpayne@68 2801 #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2802 return PyObject_RichCompareBool(s1, s2, equals);
jpayne@68 2803 #else
jpayne@68 2804 if (s1 == s2) {
jpayne@68 2805 return (equals == Py_EQ);
jpayne@68 2806 } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
jpayne@68 2807 const char *ps1, *ps2;
jpayne@68 2808 Py_ssize_t length = PyBytes_GET_SIZE(s1);
jpayne@68 2809 if (length != PyBytes_GET_SIZE(s2))
jpayne@68 2810 return (equals == Py_NE);
jpayne@68 2811 ps1 = PyBytes_AS_STRING(s1);
jpayne@68 2812 ps2 = PyBytes_AS_STRING(s2);
jpayne@68 2813 if (ps1[0] != ps2[0]) {
jpayne@68 2814 return (equals == Py_NE);
jpayne@68 2815 } else if (length == 1) {
jpayne@68 2816 return (equals == Py_EQ);
jpayne@68 2817 } else {
jpayne@68 2818 int result;
jpayne@68 2819 #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
jpayne@68 2820 Py_hash_t hash1, hash2;
jpayne@68 2821 hash1 = ((PyBytesObject*)s1)->ob_shash;
jpayne@68 2822 hash2 = ((PyBytesObject*)s2)->ob_shash;
jpayne@68 2823 if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
jpayne@68 2824 return (equals == Py_NE);
jpayne@68 2825 }
jpayne@68 2826 #endif
jpayne@68 2827 result = memcmp(ps1, ps2, (size_t)length);
jpayne@68 2828 return (equals == Py_EQ) ? (result == 0) : (result != 0);
jpayne@68 2829 }
jpayne@68 2830 } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
jpayne@68 2831 return (equals == Py_NE);
jpayne@68 2832 } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
jpayne@68 2833 return (equals == Py_NE);
jpayne@68 2834 } else {
jpayne@68 2835 int result;
jpayne@68 2836 PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
jpayne@68 2837 if (!py_result)
jpayne@68 2838 return -1;
jpayne@68 2839 result = __Pyx_PyObject_IsTrue(py_result);
jpayne@68 2840 Py_DECREF(py_result);
jpayne@68 2841 return result;
jpayne@68 2842 }
jpayne@68 2843 #endif
jpayne@68 2844 }
jpayne@68 2845
jpayne@68 2846 /* UnicodeEquals */
jpayne@68 2847 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
jpayne@68 2848 #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2849 return PyObject_RichCompareBool(s1, s2, equals);
jpayne@68 2850 #else
jpayne@68 2851 #if PY_MAJOR_VERSION < 3
jpayne@68 2852 PyObject* owned_ref = NULL;
jpayne@68 2853 #endif
jpayne@68 2854 int s1_is_unicode, s2_is_unicode;
jpayne@68 2855 if (s1 == s2) {
jpayne@68 2856 goto return_eq;
jpayne@68 2857 }
jpayne@68 2858 s1_is_unicode = PyUnicode_CheckExact(s1);
jpayne@68 2859 s2_is_unicode = PyUnicode_CheckExact(s2);
jpayne@68 2860 #if PY_MAJOR_VERSION < 3
jpayne@68 2861 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
jpayne@68 2862 owned_ref = PyUnicode_FromObject(s2);
jpayne@68 2863 if (unlikely(!owned_ref))
jpayne@68 2864 return -1;
jpayne@68 2865 s2 = owned_ref;
jpayne@68 2866 s2_is_unicode = 1;
jpayne@68 2867 } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
jpayne@68 2868 owned_ref = PyUnicode_FromObject(s1);
jpayne@68 2869 if (unlikely(!owned_ref))
jpayne@68 2870 return -1;
jpayne@68 2871 s1 = owned_ref;
jpayne@68 2872 s1_is_unicode = 1;
jpayne@68 2873 } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
jpayne@68 2874 return __Pyx_PyBytes_Equals(s1, s2, equals);
jpayne@68 2875 }
jpayne@68 2876 #endif
jpayne@68 2877 if (s1_is_unicode & s2_is_unicode) {
jpayne@68 2878 Py_ssize_t length;
jpayne@68 2879 int kind;
jpayne@68 2880 void *data1, *data2;
jpayne@68 2881 if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
jpayne@68 2882 return -1;
jpayne@68 2883 length = __Pyx_PyUnicode_GET_LENGTH(s1);
jpayne@68 2884 if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
jpayne@68 2885 goto return_ne;
jpayne@68 2886 }
jpayne@68 2887 #if CYTHON_USE_UNICODE_INTERNALS
jpayne@68 2888 {
jpayne@68 2889 Py_hash_t hash1, hash2;
jpayne@68 2890 #if CYTHON_PEP393_ENABLED
jpayne@68 2891 hash1 = ((PyASCIIObject*)s1)->hash;
jpayne@68 2892 hash2 = ((PyASCIIObject*)s2)->hash;
jpayne@68 2893 #else
jpayne@68 2894 hash1 = ((PyUnicodeObject*)s1)->hash;
jpayne@68 2895 hash2 = ((PyUnicodeObject*)s2)->hash;
jpayne@68 2896 #endif
jpayne@68 2897 if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
jpayne@68 2898 goto return_ne;
jpayne@68 2899 }
jpayne@68 2900 }
jpayne@68 2901 #endif
jpayne@68 2902 kind = __Pyx_PyUnicode_KIND(s1);
jpayne@68 2903 if (kind != __Pyx_PyUnicode_KIND(s2)) {
jpayne@68 2904 goto return_ne;
jpayne@68 2905 }
jpayne@68 2906 data1 = __Pyx_PyUnicode_DATA(s1);
jpayne@68 2907 data2 = __Pyx_PyUnicode_DATA(s2);
jpayne@68 2908 if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
jpayne@68 2909 goto return_ne;
jpayne@68 2910 } else if (length == 1) {
jpayne@68 2911 goto return_eq;
jpayne@68 2912 } else {
jpayne@68 2913 int result = memcmp(data1, data2, (size_t)(length * kind));
jpayne@68 2914 #if PY_MAJOR_VERSION < 3
jpayne@68 2915 Py_XDECREF(owned_ref);
jpayne@68 2916 #endif
jpayne@68 2917 return (equals == Py_EQ) ? (result == 0) : (result != 0);
jpayne@68 2918 }
jpayne@68 2919 } else if ((s1 == Py_None) & s2_is_unicode) {
jpayne@68 2920 goto return_ne;
jpayne@68 2921 } else if ((s2 == Py_None) & s1_is_unicode) {
jpayne@68 2922 goto return_ne;
jpayne@68 2923 } else {
jpayne@68 2924 int result;
jpayne@68 2925 PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
jpayne@68 2926 #if PY_MAJOR_VERSION < 3
jpayne@68 2927 Py_XDECREF(owned_ref);
jpayne@68 2928 #endif
jpayne@68 2929 if (!py_result)
jpayne@68 2930 return -1;
jpayne@68 2931 result = __Pyx_PyObject_IsTrue(py_result);
jpayne@68 2932 Py_DECREF(py_result);
jpayne@68 2933 return result;
jpayne@68 2934 }
jpayne@68 2935 return_eq:
jpayne@68 2936 #if PY_MAJOR_VERSION < 3
jpayne@68 2937 Py_XDECREF(owned_ref);
jpayne@68 2938 #endif
jpayne@68 2939 return (equals == Py_EQ);
jpayne@68 2940 return_ne:
jpayne@68 2941 #if PY_MAJOR_VERSION < 3
jpayne@68 2942 Py_XDECREF(owned_ref);
jpayne@68 2943 #endif
jpayne@68 2944 return (equals == Py_NE);
jpayne@68 2945 #endif
jpayne@68 2946 }
jpayne@68 2947
jpayne@68 2948 /* fastcall */
jpayne@68 2949 #if CYTHON_METH_FASTCALL
jpayne@68 2950 static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
jpayne@68 2951 {
jpayne@68 2952 Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
jpayne@68 2953 for (i = 0; i < n; i++)
jpayne@68 2954 {
jpayne@68 2955 if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
jpayne@68 2956 }
jpayne@68 2957 for (i = 0; i < n; i++)
jpayne@68 2958 {
jpayne@68 2959 int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
jpayne@68 2960 if (unlikely(eq != 0)) {
jpayne@68 2961 if (unlikely(eq < 0)) return NULL;
jpayne@68 2962 return kwvalues[i];
jpayne@68 2963 }
jpayne@68 2964 }
jpayne@68 2965 return NULL;
jpayne@68 2966 }
jpayne@68 2967 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
jpayne@68 2968 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
jpayne@68 2969 Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
jpayne@68 2970 PyObject *dict;
jpayne@68 2971 dict = PyDict_New();
jpayne@68 2972 if (unlikely(!dict))
jpayne@68 2973 return NULL;
jpayne@68 2974 for (i=0; i<nkwargs; i++) {
jpayne@68 2975 PyObject *key = PyTuple_GET_ITEM(kwnames, i);
jpayne@68 2976 if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
jpayne@68 2977 goto bad;
jpayne@68 2978 }
jpayne@68 2979 return dict;
jpayne@68 2980 bad:
jpayne@68 2981 Py_DECREF(dict);
jpayne@68 2982 return NULL;
jpayne@68 2983 }
jpayne@68 2984 #endif
jpayne@68 2985 #endif
jpayne@68 2986
jpayne@68 2987 /* FixUpExtensionType */
jpayne@68 2988 #if CYTHON_USE_TYPE_SPECS
jpayne@68 2989 static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
jpayne@68 2990 #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 2991 CYTHON_UNUSED_VAR(spec);
jpayne@68 2992 CYTHON_UNUSED_VAR(type);
jpayne@68 2993 #else
jpayne@68 2994 const PyType_Slot *slot = spec->slots;
jpayne@68 2995 while (slot && slot->slot && slot->slot != Py_tp_members)
jpayne@68 2996 slot++;
jpayne@68 2997 if (slot && slot->slot == Py_tp_members) {
jpayne@68 2998 int changed = 0;
jpayne@68 2999 #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
jpayne@68 3000 const
jpayne@68 3001 #endif
jpayne@68 3002 PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
jpayne@68 3003 while (memb && memb->name) {
jpayne@68 3004 if (memb->name[0] == '_' && memb->name[1] == '_') {
jpayne@68 3005 #if PY_VERSION_HEX < 0x030900b1
jpayne@68 3006 if (strcmp(memb->name, "__weaklistoffset__") == 0) {
jpayne@68 3007 assert(memb->type == T_PYSSIZET);
jpayne@68 3008 assert(memb->flags == READONLY);
jpayne@68 3009 type->tp_weaklistoffset = memb->offset;
jpayne@68 3010 changed = 1;
jpayne@68 3011 }
jpayne@68 3012 else if (strcmp(memb->name, "__dictoffset__") == 0) {
jpayne@68 3013 assert(memb->type == T_PYSSIZET);
jpayne@68 3014 assert(memb->flags == READONLY);
jpayne@68 3015 type->tp_dictoffset = memb->offset;
jpayne@68 3016 changed = 1;
jpayne@68 3017 }
jpayne@68 3018 #if CYTHON_METH_FASTCALL
jpayne@68 3019 else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
jpayne@68 3020 assert(memb->type == T_PYSSIZET);
jpayne@68 3021 assert(memb->flags == READONLY);
jpayne@68 3022 #if PY_VERSION_HEX >= 0x030800b4
jpayne@68 3023 type->tp_vectorcall_offset = memb->offset;
jpayne@68 3024 #else
jpayne@68 3025 type->tp_print = (printfunc) memb->offset;
jpayne@68 3026 #endif
jpayne@68 3027 changed = 1;
jpayne@68 3028 }
jpayne@68 3029 #endif
jpayne@68 3030 #else
jpayne@68 3031 if ((0));
jpayne@68 3032 #endif
jpayne@68 3033 #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
jpayne@68 3034 else if (strcmp(memb->name, "__module__") == 0) {
jpayne@68 3035 PyObject *descr;
jpayne@68 3036 assert(memb->type == T_OBJECT);
jpayne@68 3037 assert(memb->flags == 0 || memb->flags == READONLY);
jpayne@68 3038 descr = PyDescr_NewMember(type, memb);
jpayne@68 3039 if (unlikely(!descr))
jpayne@68 3040 return -1;
jpayne@68 3041 if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
jpayne@68 3042 Py_DECREF(descr);
jpayne@68 3043 return -1;
jpayne@68 3044 }
jpayne@68 3045 Py_DECREF(descr);
jpayne@68 3046 changed = 1;
jpayne@68 3047 }
jpayne@68 3048 #endif
jpayne@68 3049 }
jpayne@68 3050 memb++;
jpayne@68 3051 }
jpayne@68 3052 if (changed)
jpayne@68 3053 PyType_Modified(type);
jpayne@68 3054 }
jpayne@68 3055 #endif
jpayne@68 3056 return 0;
jpayne@68 3057 }
jpayne@68 3058 #endif
jpayne@68 3059
jpayne@68 3060 /* FetchSharedCythonModule */
jpayne@68 3061 static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
jpayne@68 3062 return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
jpayne@68 3063 }
jpayne@68 3064
jpayne@68 3065 /* FetchCommonType */
jpayne@68 3066 static int __Pyx_VerifyCachedType(PyObject *cached_type,
jpayne@68 3067 const char *name,
jpayne@68 3068 Py_ssize_t basicsize,
jpayne@68 3069 Py_ssize_t expected_basicsize) {
jpayne@68 3070 if (!PyType_Check(cached_type)) {
jpayne@68 3071 PyErr_Format(PyExc_TypeError,
jpayne@68 3072 "Shared Cython type %.200s is not a type object", name);
jpayne@68 3073 return -1;
jpayne@68 3074 }
jpayne@68 3075 if (basicsize != expected_basicsize) {
jpayne@68 3076 PyErr_Format(PyExc_TypeError,
jpayne@68 3077 "Shared Cython type %.200s has the wrong size, try recompiling",
jpayne@68 3078 name);
jpayne@68 3079 return -1;
jpayne@68 3080 }
jpayne@68 3081 return 0;
jpayne@68 3082 }
jpayne@68 3083 #if !CYTHON_USE_TYPE_SPECS
jpayne@68 3084 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
jpayne@68 3085 PyObject* abi_module;
jpayne@68 3086 const char* object_name;
jpayne@68 3087 PyTypeObject *cached_type = NULL;
jpayne@68 3088 abi_module = __Pyx_FetchSharedCythonABIModule();
jpayne@68 3089 if (!abi_module) return NULL;
jpayne@68 3090 object_name = strrchr(type->tp_name, '.');
jpayne@68 3091 object_name = object_name ? object_name+1 : type->tp_name;
jpayne@68 3092 cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
jpayne@68 3093 if (cached_type) {
jpayne@68 3094 if (__Pyx_VerifyCachedType(
jpayne@68 3095 (PyObject *)cached_type,
jpayne@68 3096 object_name,
jpayne@68 3097 cached_type->tp_basicsize,
jpayne@68 3098 type->tp_basicsize) < 0) {
jpayne@68 3099 goto bad;
jpayne@68 3100 }
jpayne@68 3101 goto done;
jpayne@68 3102 }
jpayne@68 3103 if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
jpayne@68 3104 PyErr_Clear();
jpayne@68 3105 if (PyType_Ready(type) < 0) goto bad;
jpayne@68 3106 if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
jpayne@68 3107 goto bad;
jpayne@68 3108 Py_INCREF(type);
jpayne@68 3109 cached_type = type;
jpayne@68 3110 done:
jpayne@68 3111 Py_DECREF(abi_module);
jpayne@68 3112 return cached_type;
jpayne@68 3113 bad:
jpayne@68 3114 Py_XDECREF(cached_type);
jpayne@68 3115 cached_type = NULL;
jpayne@68 3116 goto done;
jpayne@68 3117 }
jpayne@68 3118 #else
jpayne@68 3119 static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
jpayne@68 3120 PyObject *abi_module, *cached_type = NULL;
jpayne@68 3121 const char* object_name = strrchr(spec->name, '.');
jpayne@68 3122 object_name = object_name ? object_name+1 : spec->name;
jpayne@68 3123 abi_module = __Pyx_FetchSharedCythonABIModule();
jpayne@68 3124 if (!abi_module) return NULL;
jpayne@68 3125 cached_type = PyObject_GetAttrString(abi_module, object_name);
jpayne@68 3126 if (cached_type) {
jpayne@68 3127 Py_ssize_t basicsize;
jpayne@68 3128 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3129 PyObject *py_basicsize;
jpayne@68 3130 py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
jpayne@68 3131 if (unlikely(!py_basicsize)) goto bad;
jpayne@68 3132 basicsize = PyLong_AsSsize_t(py_basicsize);
jpayne@68 3133 Py_DECREF(py_basicsize);
jpayne@68 3134 py_basicsize = 0;
jpayne@68 3135 if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
jpayne@68 3136 #else
jpayne@68 3137 basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
jpayne@68 3138 #endif
jpayne@68 3139 if (__Pyx_VerifyCachedType(
jpayne@68 3140 cached_type,
jpayne@68 3141 object_name,
jpayne@68 3142 basicsize,
jpayne@68 3143 spec->basicsize) < 0) {
jpayne@68 3144 goto bad;
jpayne@68 3145 }
jpayne@68 3146 goto done;
jpayne@68 3147 }
jpayne@68 3148 if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
jpayne@68 3149 PyErr_Clear();
jpayne@68 3150 CYTHON_UNUSED_VAR(module);
jpayne@68 3151 cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
jpayne@68 3152 if (unlikely(!cached_type)) goto bad;
jpayne@68 3153 if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
jpayne@68 3154 if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
jpayne@68 3155 done:
jpayne@68 3156 Py_DECREF(abi_module);
jpayne@68 3157 assert(cached_type == NULL || PyType_Check(cached_type));
jpayne@68 3158 return (PyTypeObject *) cached_type;
jpayne@68 3159 bad:
jpayne@68 3160 Py_XDECREF(cached_type);
jpayne@68 3161 cached_type = NULL;
jpayne@68 3162 goto done;
jpayne@68 3163 }
jpayne@68 3164 #endif
jpayne@68 3165
jpayne@68 3166 /* PyObjectGetAttrStr */
jpayne@68 3167 #if CYTHON_USE_TYPE_SLOTS
jpayne@68 3168 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
jpayne@68 3169 PyTypeObject* tp = Py_TYPE(obj);
jpayne@68 3170 if (likely(tp->tp_getattro))
jpayne@68 3171 return tp->tp_getattro(obj, attr_name);
jpayne@68 3172 #if PY_MAJOR_VERSION < 3
jpayne@68 3173 if (likely(tp->tp_getattr))
jpayne@68 3174 return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
jpayne@68 3175 #endif
jpayne@68 3176 return PyObject_GetAttr(obj, attr_name);
jpayne@68 3177 }
jpayne@68 3178 #endif
jpayne@68 3179
jpayne@68 3180 /* PyVectorcallFastCallDict */
jpayne@68 3181 #if CYTHON_METH_FASTCALL
jpayne@68 3182 static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
jpayne@68 3183 {
jpayne@68 3184 PyObject *res = NULL;
jpayne@68 3185 PyObject *kwnames;
jpayne@68 3186 PyObject **newargs;
jpayne@68 3187 PyObject **kwvalues;
jpayne@68 3188 Py_ssize_t i, pos;
jpayne@68 3189 size_t j;
jpayne@68 3190 PyObject *key, *value;
jpayne@68 3191 unsigned long keys_are_strings;
jpayne@68 3192 Py_ssize_t nkw = PyDict_GET_SIZE(kw);
jpayne@68 3193 newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
jpayne@68 3194 if (unlikely(newargs == NULL)) {
jpayne@68 3195 PyErr_NoMemory();
jpayne@68 3196 return NULL;
jpayne@68 3197 }
jpayne@68 3198 for (j = 0; j < nargs; j++) newargs[j] = args[j];
jpayne@68 3199 kwnames = PyTuple_New(nkw);
jpayne@68 3200 if (unlikely(kwnames == NULL)) {
jpayne@68 3201 PyMem_Free(newargs);
jpayne@68 3202 return NULL;
jpayne@68 3203 }
jpayne@68 3204 kwvalues = newargs + nargs;
jpayne@68 3205 pos = i = 0;
jpayne@68 3206 keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
jpayne@68 3207 while (PyDict_Next(kw, &pos, &key, &value)) {
jpayne@68 3208 keys_are_strings &= Py_TYPE(key)->tp_flags;
jpayne@68 3209 Py_INCREF(key);
jpayne@68 3210 Py_INCREF(value);
jpayne@68 3211 PyTuple_SET_ITEM(kwnames, i, key);
jpayne@68 3212 kwvalues[i] = value;
jpayne@68 3213 i++;
jpayne@68 3214 }
jpayne@68 3215 if (unlikely(!keys_are_strings)) {
jpayne@68 3216 PyErr_SetString(PyExc_TypeError, "keywords must be strings");
jpayne@68 3217 goto cleanup;
jpayne@68 3218 }
jpayne@68 3219 res = vc(func, newargs, nargs, kwnames);
jpayne@68 3220 cleanup:
jpayne@68 3221 Py_DECREF(kwnames);
jpayne@68 3222 for (i = 0; i < nkw; i++)
jpayne@68 3223 Py_DECREF(kwvalues[i]);
jpayne@68 3224 PyMem_Free(newargs);
jpayne@68 3225 return res;
jpayne@68 3226 }
jpayne@68 3227 static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
jpayne@68 3228 {
jpayne@68 3229 if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
jpayne@68 3230 return vc(func, args, nargs, NULL);
jpayne@68 3231 }
jpayne@68 3232 return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
jpayne@68 3233 }
jpayne@68 3234 #endif
jpayne@68 3235
jpayne@68 3236 /* CythonFunctionShared */
jpayne@68 3237 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3238 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
jpayne@68 3239 if (__Pyx_CyFunction_Check(func)) {
jpayne@68 3240 return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
jpayne@68 3241 } else if (PyCFunction_Check(func)) {
jpayne@68 3242 return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
jpayne@68 3243 }
jpayne@68 3244 return 0;
jpayne@68 3245 }
jpayne@68 3246 #else
jpayne@68 3247 static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
jpayne@68 3248 return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
jpayne@68 3249 }
jpayne@68 3250 #endif
jpayne@68 3251 static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
jpayne@68 3252 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3253 __Pyx_Py_XDECREF_SET(
jpayne@68 3254 __Pyx_CyFunction_GetClassObj(f),
jpayne@68 3255 ((classobj) ? __Pyx_NewRef(classobj) : NULL));
jpayne@68 3256 #else
jpayne@68 3257 __Pyx_Py_XDECREF_SET(
jpayne@68 3258 ((PyCMethodObject *) (f))->mm_class,
jpayne@68 3259 (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
jpayne@68 3260 #endif
jpayne@68 3261 }
jpayne@68 3262 static PyObject *
jpayne@68 3263 __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
jpayne@68 3264 {
jpayne@68 3265 CYTHON_UNUSED_VAR(closure);
jpayne@68 3266 if (unlikely(op->func_doc == NULL)) {
jpayne@68 3267 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3268 op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
jpayne@68 3269 if (unlikely(!op->func_doc)) return NULL;
jpayne@68 3270 #else
jpayne@68 3271 if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
jpayne@68 3272 #if PY_MAJOR_VERSION >= 3
jpayne@68 3273 op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
jpayne@68 3274 #else
jpayne@68 3275 op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
jpayne@68 3276 #endif
jpayne@68 3277 if (unlikely(op->func_doc == NULL))
jpayne@68 3278 return NULL;
jpayne@68 3279 } else {
jpayne@68 3280 Py_INCREF(Py_None);
jpayne@68 3281 return Py_None;
jpayne@68 3282 }
jpayne@68 3283 #endif
jpayne@68 3284 }
jpayne@68 3285 Py_INCREF(op->func_doc);
jpayne@68 3286 return op->func_doc;
jpayne@68 3287 }
jpayne@68 3288 static int
jpayne@68 3289 __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
jpayne@68 3290 {
jpayne@68 3291 CYTHON_UNUSED_VAR(context);
jpayne@68 3292 if (value == NULL) {
jpayne@68 3293 value = Py_None;
jpayne@68 3294 }
jpayne@68 3295 Py_INCREF(value);
jpayne@68 3296 __Pyx_Py_XDECREF_SET(op->func_doc, value);
jpayne@68 3297 return 0;
jpayne@68 3298 }
jpayne@68 3299 static PyObject *
jpayne@68 3300 __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3301 {
jpayne@68 3302 CYTHON_UNUSED_VAR(context);
jpayne@68 3303 if (unlikely(op->func_name == NULL)) {
jpayne@68 3304 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3305 op->func_name = PyObject_GetAttrString(op->func, "__name__");
jpayne@68 3306 #elif PY_MAJOR_VERSION >= 3
jpayne@68 3307 op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
jpayne@68 3308 #else
jpayne@68 3309 op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
jpayne@68 3310 #endif
jpayne@68 3311 if (unlikely(op->func_name == NULL))
jpayne@68 3312 return NULL;
jpayne@68 3313 }
jpayne@68 3314 Py_INCREF(op->func_name);
jpayne@68 3315 return op->func_name;
jpayne@68 3316 }
jpayne@68 3317 static int
jpayne@68 3318 __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
jpayne@68 3319 {
jpayne@68 3320 CYTHON_UNUSED_VAR(context);
jpayne@68 3321 #if PY_MAJOR_VERSION >= 3
jpayne@68 3322 if (unlikely(value == NULL || !PyUnicode_Check(value)))
jpayne@68 3323 #else
jpayne@68 3324 if (unlikely(value == NULL || !PyString_Check(value)))
jpayne@68 3325 #endif
jpayne@68 3326 {
jpayne@68 3327 PyErr_SetString(PyExc_TypeError,
jpayne@68 3328 "__name__ must be set to a string object");
jpayne@68 3329 return -1;
jpayne@68 3330 }
jpayne@68 3331 Py_INCREF(value);
jpayne@68 3332 __Pyx_Py_XDECREF_SET(op->func_name, value);
jpayne@68 3333 return 0;
jpayne@68 3334 }
jpayne@68 3335 static PyObject *
jpayne@68 3336 __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3337 {
jpayne@68 3338 CYTHON_UNUSED_VAR(context);
jpayne@68 3339 Py_INCREF(op->func_qualname);
jpayne@68 3340 return op->func_qualname;
jpayne@68 3341 }
jpayne@68 3342 static int
jpayne@68 3343 __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
jpayne@68 3344 {
jpayne@68 3345 CYTHON_UNUSED_VAR(context);
jpayne@68 3346 #if PY_MAJOR_VERSION >= 3
jpayne@68 3347 if (unlikely(value == NULL || !PyUnicode_Check(value)))
jpayne@68 3348 #else
jpayne@68 3349 if (unlikely(value == NULL || !PyString_Check(value)))
jpayne@68 3350 #endif
jpayne@68 3351 {
jpayne@68 3352 PyErr_SetString(PyExc_TypeError,
jpayne@68 3353 "__qualname__ must be set to a string object");
jpayne@68 3354 return -1;
jpayne@68 3355 }
jpayne@68 3356 Py_INCREF(value);
jpayne@68 3357 __Pyx_Py_XDECREF_SET(op->func_qualname, value);
jpayne@68 3358 return 0;
jpayne@68 3359 }
jpayne@68 3360 static PyObject *
jpayne@68 3361 __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3362 {
jpayne@68 3363 CYTHON_UNUSED_VAR(context);
jpayne@68 3364 if (unlikely(op->func_dict == NULL)) {
jpayne@68 3365 op->func_dict = PyDict_New();
jpayne@68 3366 if (unlikely(op->func_dict == NULL))
jpayne@68 3367 return NULL;
jpayne@68 3368 }
jpayne@68 3369 Py_INCREF(op->func_dict);
jpayne@68 3370 return op->func_dict;
jpayne@68 3371 }
jpayne@68 3372 static int
jpayne@68 3373 __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
jpayne@68 3374 {
jpayne@68 3375 CYTHON_UNUSED_VAR(context);
jpayne@68 3376 if (unlikely(value == NULL)) {
jpayne@68 3377 PyErr_SetString(PyExc_TypeError,
jpayne@68 3378 "function's dictionary may not be deleted");
jpayne@68 3379 return -1;
jpayne@68 3380 }
jpayne@68 3381 if (unlikely(!PyDict_Check(value))) {
jpayne@68 3382 PyErr_SetString(PyExc_TypeError,
jpayne@68 3383 "setting function's dictionary to a non-dict");
jpayne@68 3384 return -1;
jpayne@68 3385 }
jpayne@68 3386 Py_INCREF(value);
jpayne@68 3387 __Pyx_Py_XDECREF_SET(op->func_dict, value);
jpayne@68 3388 return 0;
jpayne@68 3389 }
jpayne@68 3390 static PyObject *
jpayne@68 3391 __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3392 {
jpayne@68 3393 CYTHON_UNUSED_VAR(context);
jpayne@68 3394 Py_INCREF(op->func_globals);
jpayne@68 3395 return op->func_globals;
jpayne@68 3396 }
jpayne@68 3397 static PyObject *
jpayne@68 3398 __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3399 {
jpayne@68 3400 CYTHON_UNUSED_VAR(op);
jpayne@68 3401 CYTHON_UNUSED_VAR(context);
jpayne@68 3402 Py_INCREF(Py_None);
jpayne@68 3403 return Py_None;
jpayne@68 3404 }
jpayne@68 3405 static PyObject *
jpayne@68 3406 __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
jpayne@68 3407 {
jpayne@68 3408 PyObject* result = (op->func_code) ? op->func_code : Py_None;
jpayne@68 3409 CYTHON_UNUSED_VAR(context);
jpayne@68 3410 Py_INCREF(result);
jpayne@68 3411 return result;
jpayne@68 3412 }
jpayne@68 3413 static int
jpayne@68 3414 __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
jpayne@68 3415 int result = 0;
jpayne@68 3416 PyObject *res = op->defaults_getter((PyObject *) op);
jpayne@68 3417 if (unlikely(!res))
jpayne@68 3418 return -1;
jpayne@68 3419 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
jpayne@68 3420 op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
jpayne@68 3421 Py_INCREF(op->defaults_tuple);
jpayne@68 3422 op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
jpayne@68 3423 Py_INCREF(op->defaults_kwdict);
jpayne@68 3424 #else
jpayne@68 3425 op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
jpayne@68 3426 if (unlikely(!op->defaults_tuple)) result = -1;
jpayne@68 3427 else {
jpayne@68 3428 op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
jpayne@68 3429 if (unlikely(!op->defaults_kwdict)) result = -1;
jpayne@68 3430 }
jpayne@68 3431 #endif
jpayne@68 3432 Py_DECREF(res);
jpayne@68 3433 return result;
jpayne@68 3434 }
jpayne@68 3435 static int
jpayne@68 3436 __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
jpayne@68 3437 CYTHON_UNUSED_VAR(context);
jpayne@68 3438 if (!value) {
jpayne@68 3439 value = Py_None;
jpayne@68 3440 } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
jpayne@68 3441 PyErr_SetString(PyExc_TypeError,
jpayne@68 3442 "__defaults__ must be set to a tuple object");
jpayne@68 3443 return -1;
jpayne@68 3444 }
jpayne@68 3445 PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
jpayne@68 3446 "currently affect the values used in function calls", 1);
jpayne@68 3447 Py_INCREF(value);
jpayne@68 3448 __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
jpayne@68 3449 return 0;
jpayne@68 3450 }
jpayne@68 3451 static PyObject *
jpayne@68 3452 __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
jpayne@68 3453 PyObject* result = op->defaults_tuple;
jpayne@68 3454 CYTHON_UNUSED_VAR(context);
jpayne@68 3455 if (unlikely(!result)) {
jpayne@68 3456 if (op->defaults_getter) {
jpayne@68 3457 if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
jpayne@68 3458 result = op->defaults_tuple;
jpayne@68 3459 } else {
jpayne@68 3460 result = Py_None;
jpayne@68 3461 }
jpayne@68 3462 }
jpayne@68 3463 Py_INCREF(result);
jpayne@68 3464 return result;
jpayne@68 3465 }
jpayne@68 3466 static int
jpayne@68 3467 __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
jpayne@68 3468 CYTHON_UNUSED_VAR(context);
jpayne@68 3469 if (!value) {
jpayne@68 3470 value = Py_None;
jpayne@68 3471 } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
jpayne@68 3472 PyErr_SetString(PyExc_TypeError,
jpayne@68 3473 "__kwdefaults__ must be set to a dict object");
jpayne@68 3474 return -1;
jpayne@68 3475 }
jpayne@68 3476 PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
jpayne@68 3477 "currently affect the values used in function calls", 1);
jpayne@68 3478 Py_INCREF(value);
jpayne@68 3479 __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
jpayne@68 3480 return 0;
jpayne@68 3481 }
jpayne@68 3482 static PyObject *
jpayne@68 3483 __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
jpayne@68 3484 PyObject* result = op->defaults_kwdict;
jpayne@68 3485 CYTHON_UNUSED_VAR(context);
jpayne@68 3486 if (unlikely(!result)) {
jpayne@68 3487 if (op->defaults_getter) {
jpayne@68 3488 if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
jpayne@68 3489 result = op->defaults_kwdict;
jpayne@68 3490 } else {
jpayne@68 3491 result = Py_None;
jpayne@68 3492 }
jpayne@68 3493 }
jpayne@68 3494 Py_INCREF(result);
jpayne@68 3495 return result;
jpayne@68 3496 }
jpayne@68 3497 static int
jpayne@68 3498 __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
jpayne@68 3499 CYTHON_UNUSED_VAR(context);
jpayne@68 3500 if (!value || value == Py_None) {
jpayne@68 3501 value = NULL;
jpayne@68 3502 } else if (unlikely(!PyDict_Check(value))) {
jpayne@68 3503 PyErr_SetString(PyExc_TypeError,
jpayne@68 3504 "__annotations__ must be set to a dict object");
jpayne@68 3505 return -1;
jpayne@68 3506 }
jpayne@68 3507 Py_XINCREF(value);
jpayne@68 3508 __Pyx_Py_XDECREF_SET(op->func_annotations, value);
jpayne@68 3509 return 0;
jpayne@68 3510 }
jpayne@68 3511 static PyObject *
jpayne@68 3512 __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
jpayne@68 3513 PyObject* result = op->func_annotations;
jpayne@68 3514 CYTHON_UNUSED_VAR(context);
jpayne@68 3515 if (unlikely(!result)) {
jpayne@68 3516 result = PyDict_New();
jpayne@68 3517 if (unlikely(!result)) return NULL;
jpayne@68 3518 op->func_annotations = result;
jpayne@68 3519 }
jpayne@68 3520 Py_INCREF(result);
jpayne@68 3521 return result;
jpayne@68 3522 }
jpayne@68 3523 static PyObject *
jpayne@68 3524 __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
jpayne@68 3525 int is_coroutine;
jpayne@68 3526 CYTHON_UNUSED_VAR(context);
jpayne@68 3527 if (op->func_is_coroutine) {
jpayne@68 3528 return __Pyx_NewRef(op->func_is_coroutine);
jpayne@68 3529 }
jpayne@68 3530 is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
jpayne@68 3531 #if PY_VERSION_HEX >= 0x03050000
jpayne@68 3532 if (is_coroutine) {
jpayne@68 3533 PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
jpayne@68 3534 fromlist = PyList_New(1);
jpayne@68 3535 if (unlikely(!fromlist)) return NULL;
jpayne@68 3536 Py_INCREF(marker);
jpayne@68 3537 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 3538 PyList_SET_ITEM(fromlist, 0, marker);
jpayne@68 3539 #else
jpayne@68 3540 if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
jpayne@68 3541 Py_DECREF(marker);
jpayne@68 3542 Py_DECREF(fromlist);
jpayne@68 3543 return NULL;
jpayne@68 3544 }
jpayne@68 3545 #endif
jpayne@68 3546 module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
jpayne@68 3547 Py_DECREF(fromlist);
jpayne@68 3548 if (unlikely(!module)) goto ignore;
jpayne@68 3549 op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
jpayne@68 3550 Py_DECREF(module);
jpayne@68 3551 if (likely(op->func_is_coroutine)) {
jpayne@68 3552 return __Pyx_NewRef(op->func_is_coroutine);
jpayne@68 3553 }
jpayne@68 3554 ignore:
jpayne@68 3555 PyErr_Clear();
jpayne@68 3556 }
jpayne@68 3557 #endif
jpayne@68 3558 op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
jpayne@68 3559 return __Pyx_NewRef(op->func_is_coroutine);
jpayne@68 3560 }
jpayne@68 3561 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3562 static PyObject *
jpayne@68 3563 __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
jpayne@68 3564 CYTHON_UNUSED_VAR(context);
jpayne@68 3565 return PyObject_GetAttrString(op->func, "__module__");
jpayne@68 3566 }
jpayne@68 3567 static int
jpayne@68 3568 __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
jpayne@68 3569 CYTHON_UNUSED_VAR(context);
jpayne@68 3570 return PyObject_SetAttrString(op->func, "__module__", value);
jpayne@68 3571 }
jpayne@68 3572 #endif
jpayne@68 3573 static PyGetSetDef __pyx_CyFunction_getsets[] = {
jpayne@68 3574 {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
jpayne@68 3575 {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
jpayne@68 3576 {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
jpayne@68 3577 {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
jpayne@68 3578 {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
jpayne@68 3579 {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
jpayne@68 3580 {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
jpayne@68 3581 {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
jpayne@68 3582 {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
jpayne@68 3583 {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
jpayne@68 3584 {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
jpayne@68 3585 {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
jpayne@68 3586 {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
jpayne@68 3587 {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
jpayne@68 3588 {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
jpayne@68 3589 {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
jpayne@68 3590 {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
jpayne@68 3591 {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
jpayne@68 3592 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3593 {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
jpayne@68 3594 #endif
jpayne@68 3595 {0, 0, 0, 0, 0}
jpayne@68 3596 };
jpayne@68 3597 static PyMemberDef __pyx_CyFunction_members[] = {
jpayne@68 3598 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3599 {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
jpayne@68 3600 #endif
jpayne@68 3601 #if CYTHON_USE_TYPE_SPECS
jpayne@68 3602 {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
jpayne@68 3603 #if CYTHON_METH_FASTCALL
jpayne@68 3604 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 3605 {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
jpayne@68 3606 #else
jpayne@68 3607 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3608 {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
jpayne@68 3609 #endif
jpayne@68 3610 #endif
jpayne@68 3611 #endif
jpayne@68 3612 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3613 {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
jpayne@68 3614 #else
jpayne@68 3615 {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
jpayne@68 3616 #endif
jpayne@68 3617 #endif
jpayne@68 3618 {0, 0, 0, 0, 0}
jpayne@68 3619 };
jpayne@68 3620 static PyObject *
jpayne@68 3621 __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
jpayne@68 3622 {
jpayne@68 3623 CYTHON_UNUSED_VAR(args);
jpayne@68 3624 #if PY_MAJOR_VERSION >= 3
jpayne@68 3625 Py_INCREF(m->func_qualname);
jpayne@68 3626 return m->func_qualname;
jpayne@68 3627 #else
jpayne@68 3628 return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
jpayne@68 3629 #endif
jpayne@68 3630 }
jpayne@68 3631 static PyMethodDef __pyx_CyFunction_methods[] = {
jpayne@68 3632 {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
jpayne@68 3633 {0, 0, 0, 0}
jpayne@68 3634 };
jpayne@68 3635 #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3636 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
jpayne@68 3637 #else
jpayne@68 3638 #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
jpayne@68 3639 #endif
jpayne@68 3640 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
jpayne@68 3641 PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
jpayne@68 3642 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3643 PyCFunctionObject *cf = (PyCFunctionObject*) op;
jpayne@68 3644 #endif
jpayne@68 3645 if (unlikely(op == NULL))
jpayne@68 3646 return NULL;
jpayne@68 3647 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3648 op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
jpayne@68 3649 if (unlikely(!op->func)) return NULL;
jpayne@68 3650 #endif
jpayne@68 3651 op->flags = flags;
jpayne@68 3652 __Pyx_CyFunction_weakreflist(op) = NULL;
jpayne@68 3653 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3654 cf->m_ml = ml;
jpayne@68 3655 cf->m_self = (PyObject *) op;
jpayne@68 3656 #endif
jpayne@68 3657 Py_XINCREF(closure);
jpayne@68 3658 op->func_closure = closure;
jpayne@68 3659 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3660 Py_XINCREF(module);
jpayne@68 3661 cf->m_module = module;
jpayne@68 3662 #endif
jpayne@68 3663 op->func_dict = NULL;
jpayne@68 3664 op->func_name = NULL;
jpayne@68 3665 Py_INCREF(qualname);
jpayne@68 3666 op->func_qualname = qualname;
jpayne@68 3667 op->func_doc = NULL;
jpayne@68 3668 #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3669 op->func_classobj = NULL;
jpayne@68 3670 #else
jpayne@68 3671 ((PyCMethodObject*)op)->mm_class = NULL;
jpayne@68 3672 #endif
jpayne@68 3673 op->func_globals = globals;
jpayne@68 3674 Py_INCREF(op->func_globals);
jpayne@68 3675 Py_XINCREF(code);
jpayne@68 3676 op->func_code = code;
jpayne@68 3677 op->defaults_pyobjects = 0;
jpayne@68 3678 op->defaults_size = 0;
jpayne@68 3679 op->defaults = NULL;
jpayne@68 3680 op->defaults_tuple = NULL;
jpayne@68 3681 op->defaults_kwdict = NULL;
jpayne@68 3682 op->defaults_getter = NULL;
jpayne@68 3683 op->func_annotations = NULL;
jpayne@68 3684 op->func_is_coroutine = NULL;
jpayne@68 3685 #if CYTHON_METH_FASTCALL
jpayne@68 3686 switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
jpayne@68 3687 case METH_NOARGS:
jpayne@68 3688 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
jpayne@68 3689 break;
jpayne@68 3690 case METH_O:
jpayne@68 3691 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
jpayne@68 3692 break;
jpayne@68 3693 case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
jpayne@68 3694 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
jpayne@68 3695 break;
jpayne@68 3696 case METH_FASTCALL | METH_KEYWORDS:
jpayne@68 3697 __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
jpayne@68 3698 break;
jpayne@68 3699 case METH_VARARGS | METH_KEYWORDS:
jpayne@68 3700 __Pyx_CyFunction_func_vectorcall(op) = NULL;
jpayne@68 3701 break;
jpayne@68 3702 default:
jpayne@68 3703 PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
jpayne@68 3704 Py_DECREF(op);
jpayne@68 3705 return NULL;
jpayne@68 3706 }
jpayne@68 3707 #endif
jpayne@68 3708 return (PyObject *) op;
jpayne@68 3709 }
jpayne@68 3710 static int
jpayne@68 3711 __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
jpayne@68 3712 {
jpayne@68 3713 Py_CLEAR(m->func_closure);
jpayne@68 3714 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3715 Py_CLEAR(m->func);
jpayne@68 3716 #else
jpayne@68 3717 Py_CLEAR(((PyCFunctionObject*)m)->m_module);
jpayne@68 3718 #endif
jpayne@68 3719 Py_CLEAR(m->func_dict);
jpayne@68 3720 Py_CLEAR(m->func_name);
jpayne@68 3721 Py_CLEAR(m->func_qualname);
jpayne@68 3722 Py_CLEAR(m->func_doc);
jpayne@68 3723 Py_CLEAR(m->func_globals);
jpayne@68 3724 Py_CLEAR(m->func_code);
jpayne@68 3725 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3726 #if PY_VERSION_HEX < 0x030900B1
jpayne@68 3727 Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
jpayne@68 3728 #else
jpayne@68 3729 {
jpayne@68 3730 PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
jpayne@68 3731 ((PyCMethodObject *) (m))->mm_class = NULL;
jpayne@68 3732 Py_XDECREF(cls);
jpayne@68 3733 }
jpayne@68 3734 #endif
jpayne@68 3735 #endif
jpayne@68 3736 Py_CLEAR(m->defaults_tuple);
jpayne@68 3737 Py_CLEAR(m->defaults_kwdict);
jpayne@68 3738 Py_CLEAR(m->func_annotations);
jpayne@68 3739 Py_CLEAR(m->func_is_coroutine);
jpayne@68 3740 if (m->defaults) {
jpayne@68 3741 PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
jpayne@68 3742 int i;
jpayne@68 3743 for (i = 0; i < m->defaults_pyobjects; i++)
jpayne@68 3744 Py_XDECREF(pydefaults[i]);
jpayne@68 3745 PyObject_Free(m->defaults);
jpayne@68 3746 m->defaults = NULL;
jpayne@68 3747 }
jpayne@68 3748 return 0;
jpayne@68 3749 }
jpayne@68 3750 static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
jpayne@68 3751 {
jpayne@68 3752 if (__Pyx_CyFunction_weakreflist(m) != NULL)
jpayne@68 3753 PyObject_ClearWeakRefs((PyObject *) m);
jpayne@68 3754 __Pyx_CyFunction_clear(m);
jpayne@68 3755 __Pyx_PyHeapTypeObject_GC_Del(m);
jpayne@68 3756 }
jpayne@68 3757 static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
jpayne@68 3758 {
jpayne@68 3759 PyObject_GC_UnTrack(m);
jpayne@68 3760 __Pyx__CyFunction_dealloc(m);
jpayne@68 3761 }
jpayne@68 3762 static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
jpayne@68 3763 {
jpayne@68 3764 Py_VISIT(m->func_closure);
jpayne@68 3765 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3766 Py_VISIT(m->func);
jpayne@68 3767 #else
jpayne@68 3768 Py_VISIT(((PyCFunctionObject*)m)->m_module);
jpayne@68 3769 #endif
jpayne@68 3770 Py_VISIT(m->func_dict);
jpayne@68 3771 Py_VISIT(m->func_name);
jpayne@68 3772 Py_VISIT(m->func_qualname);
jpayne@68 3773 Py_VISIT(m->func_doc);
jpayne@68 3774 Py_VISIT(m->func_globals);
jpayne@68 3775 Py_VISIT(m->func_code);
jpayne@68 3776 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3777 Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
jpayne@68 3778 #endif
jpayne@68 3779 Py_VISIT(m->defaults_tuple);
jpayne@68 3780 Py_VISIT(m->defaults_kwdict);
jpayne@68 3781 Py_VISIT(m->func_is_coroutine);
jpayne@68 3782 if (m->defaults) {
jpayne@68 3783 PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
jpayne@68 3784 int i;
jpayne@68 3785 for (i = 0; i < m->defaults_pyobjects; i++)
jpayne@68 3786 Py_VISIT(pydefaults[i]);
jpayne@68 3787 }
jpayne@68 3788 return 0;
jpayne@68 3789 }
jpayne@68 3790 static PyObject*
jpayne@68 3791 __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
jpayne@68 3792 {
jpayne@68 3793 #if PY_MAJOR_VERSION >= 3
jpayne@68 3794 return PyUnicode_FromFormat("<cyfunction %U at %p>",
jpayne@68 3795 op->func_qualname, (void *)op);
jpayne@68 3796 #else
jpayne@68 3797 return PyString_FromFormat("<cyfunction %s at %p>",
jpayne@68 3798 PyString_AsString(op->func_qualname), (void *)op);
jpayne@68 3799 #endif
jpayne@68 3800 }
jpayne@68 3801 static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
jpayne@68 3802 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3803 PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
jpayne@68 3804 PyObject *py_name = NULL;
jpayne@68 3805 PyCFunction meth;
jpayne@68 3806 int flags;
jpayne@68 3807 meth = PyCFunction_GetFunction(f);
jpayne@68 3808 if (unlikely(!meth)) return NULL;
jpayne@68 3809 flags = PyCFunction_GetFlags(f);
jpayne@68 3810 if (unlikely(flags < 0)) return NULL;
jpayne@68 3811 #else
jpayne@68 3812 PyCFunctionObject* f = (PyCFunctionObject*)func;
jpayne@68 3813 PyCFunction meth = f->m_ml->ml_meth;
jpayne@68 3814 int flags = f->m_ml->ml_flags;
jpayne@68 3815 #endif
jpayne@68 3816 Py_ssize_t size;
jpayne@68 3817 switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
jpayne@68 3818 case METH_VARARGS:
jpayne@68 3819 if (likely(kw == NULL || PyDict_Size(kw) == 0))
jpayne@68 3820 return (*meth)(self, arg);
jpayne@68 3821 break;
jpayne@68 3822 case METH_VARARGS | METH_KEYWORDS:
jpayne@68 3823 return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
jpayne@68 3824 case METH_NOARGS:
jpayne@68 3825 if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
jpayne@68 3826 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 3827 size = PyTuple_GET_SIZE(arg);
jpayne@68 3828 #else
jpayne@68 3829 size = PyTuple_Size(arg);
jpayne@68 3830 if (unlikely(size < 0)) return NULL;
jpayne@68 3831 #endif
jpayne@68 3832 if (likely(size == 0))
jpayne@68 3833 return (*meth)(self, NULL);
jpayne@68 3834 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3835 py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
jpayne@68 3836 if (!py_name) return NULL;
jpayne@68 3837 PyErr_Format(PyExc_TypeError,
jpayne@68 3838 "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 3839 py_name, size);
jpayne@68 3840 Py_DECREF(py_name);
jpayne@68 3841 #else
jpayne@68 3842 PyErr_Format(PyExc_TypeError,
jpayne@68 3843 "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 3844 f->m_ml->ml_name, size);
jpayne@68 3845 #endif
jpayne@68 3846 return NULL;
jpayne@68 3847 }
jpayne@68 3848 break;
jpayne@68 3849 case METH_O:
jpayne@68 3850 if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
jpayne@68 3851 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 3852 size = PyTuple_GET_SIZE(arg);
jpayne@68 3853 #else
jpayne@68 3854 size = PyTuple_Size(arg);
jpayne@68 3855 if (unlikely(size < 0)) return NULL;
jpayne@68 3856 #endif
jpayne@68 3857 if (likely(size == 1)) {
jpayne@68 3858 PyObject *result, *arg0;
jpayne@68 3859 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
jpayne@68 3860 arg0 = PyTuple_GET_ITEM(arg, 0);
jpayne@68 3861 #else
jpayne@68 3862 arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
jpayne@68 3863 #endif
jpayne@68 3864 result = (*meth)(self, arg0);
jpayne@68 3865 #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
jpayne@68 3866 Py_DECREF(arg0);
jpayne@68 3867 #endif
jpayne@68 3868 return result;
jpayne@68 3869 }
jpayne@68 3870 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3871 py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
jpayne@68 3872 if (!py_name) return NULL;
jpayne@68 3873 PyErr_Format(PyExc_TypeError,
jpayne@68 3874 "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 3875 py_name, size);
jpayne@68 3876 Py_DECREF(py_name);
jpayne@68 3877 #else
jpayne@68 3878 PyErr_Format(PyExc_TypeError,
jpayne@68 3879 "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 3880 f->m_ml->ml_name, size);
jpayne@68 3881 #endif
jpayne@68 3882 return NULL;
jpayne@68 3883 }
jpayne@68 3884 break;
jpayne@68 3885 default:
jpayne@68 3886 PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
jpayne@68 3887 return NULL;
jpayne@68 3888 }
jpayne@68 3889 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3890 py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
jpayne@68 3891 if (!py_name) return NULL;
jpayne@68 3892 PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
jpayne@68 3893 py_name);
jpayne@68 3894 Py_DECREF(py_name);
jpayne@68 3895 #else
jpayne@68 3896 PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
jpayne@68 3897 f->m_ml->ml_name);
jpayne@68 3898 #endif
jpayne@68 3899 return NULL;
jpayne@68 3900 }
jpayne@68 3901 static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
jpayne@68 3902 PyObject *self, *result;
jpayne@68 3903 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 3904 self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
jpayne@68 3905 if (unlikely(!self) && PyErr_Occurred()) return NULL;
jpayne@68 3906 #else
jpayne@68 3907 self = ((PyCFunctionObject*)func)->m_self;
jpayne@68 3908 #endif
jpayne@68 3909 result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
jpayne@68 3910 return result;
jpayne@68 3911 }
jpayne@68 3912 static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
jpayne@68 3913 PyObject *result;
jpayne@68 3914 __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
jpayne@68 3915 #if CYTHON_METH_FASTCALL
jpayne@68 3916 __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
jpayne@68 3917 if (vc) {
jpayne@68 3918 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 3919 return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
jpayne@68 3920 #else
jpayne@68 3921 (void) &__Pyx_PyVectorcall_FastCallDict;
jpayne@68 3922 return PyVectorcall_Call(func, args, kw);
jpayne@68 3923 #endif
jpayne@68 3924 }
jpayne@68 3925 #endif
jpayne@68 3926 if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
jpayne@68 3927 Py_ssize_t argc;
jpayne@68 3928 PyObject *new_args;
jpayne@68 3929 PyObject *self;
jpayne@68 3930 #if CYTHON_ASSUME_SAFE_MACROS
jpayne@68 3931 argc = PyTuple_GET_SIZE(args);
jpayne@68 3932 #else
jpayne@68 3933 argc = PyTuple_Size(args);
jpayne@68 3934 if (unlikely(!argc) < 0) return NULL;
jpayne@68 3935 #endif
jpayne@68 3936 new_args = PyTuple_GetSlice(args, 1, argc);
jpayne@68 3937 if (unlikely(!new_args))
jpayne@68 3938 return NULL;
jpayne@68 3939 self = PyTuple_GetItem(args, 0);
jpayne@68 3940 if (unlikely(!self)) {
jpayne@68 3941 Py_DECREF(new_args);
jpayne@68 3942 #if PY_MAJOR_VERSION > 2
jpayne@68 3943 PyErr_Format(PyExc_TypeError,
jpayne@68 3944 "unbound method %.200S() needs an argument",
jpayne@68 3945 cyfunc->func_qualname);
jpayne@68 3946 #else
jpayne@68 3947 PyErr_SetString(PyExc_TypeError,
jpayne@68 3948 "unbound method needs an argument");
jpayne@68 3949 #endif
jpayne@68 3950 return NULL;
jpayne@68 3951 }
jpayne@68 3952 result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
jpayne@68 3953 Py_DECREF(new_args);
jpayne@68 3954 } else {
jpayne@68 3955 result = __Pyx_CyFunction_Call(func, args, kw);
jpayne@68 3956 }
jpayne@68 3957 return result;
jpayne@68 3958 }
jpayne@68 3959 #if CYTHON_METH_FASTCALL
jpayne@68 3960 static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
jpayne@68 3961 {
jpayne@68 3962 int ret = 0;
jpayne@68 3963 if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
jpayne@68 3964 if (unlikely(nargs < 1)) {
jpayne@68 3965 PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
jpayne@68 3966 ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
jpayne@68 3967 return -1;
jpayne@68 3968 }
jpayne@68 3969 ret = 1;
jpayne@68 3970 }
jpayne@68 3971 if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
jpayne@68 3972 PyErr_Format(PyExc_TypeError,
jpayne@68 3973 "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
jpayne@68 3974 return -1;
jpayne@68 3975 }
jpayne@68 3976 return ret;
jpayne@68 3977 }
jpayne@68 3978 static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
jpayne@68 3979 {
jpayne@68 3980 __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
jpayne@68 3981 PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
jpayne@68 3982 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 3983 Py_ssize_t nargs = (Py_ssize_t)nargsf;
jpayne@68 3984 #else
jpayne@68 3985 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
jpayne@68 3986 #endif
jpayne@68 3987 PyObject *self;
jpayne@68 3988 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
jpayne@68 3989 case 1:
jpayne@68 3990 self = args[0];
jpayne@68 3991 args += 1;
jpayne@68 3992 nargs -= 1;
jpayne@68 3993 break;
jpayne@68 3994 case 0:
jpayne@68 3995 self = ((PyCFunctionObject*)cyfunc)->m_self;
jpayne@68 3996 break;
jpayne@68 3997 default:
jpayne@68 3998 return NULL;
jpayne@68 3999 }
jpayne@68 4000 if (unlikely(nargs != 0)) {
jpayne@68 4001 PyErr_Format(PyExc_TypeError,
jpayne@68 4002 "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 4003 def->ml_name, nargs);
jpayne@68 4004 return NULL;
jpayne@68 4005 }
jpayne@68 4006 return def->ml_meth(self, NULL);
jpayne@68 4007 }
jpayne@68 4008 static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
jpayne@68 4009 {
jpayne@68 4010 __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
jpayne@68 4011 PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
jpayne@68 4012 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 4013 Py_ssize_t nargs = (Py_ssize_t)nargsf;
jpayne@68 4014 #else
jpayne@68 4015 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
jpayne@68 4016 #endif
jpayne@68 4017 PyObject *self;
jpayne@68 4018 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
jpayne@68 4019 case 1:
jpayne@68 4020 self = args[0];
jpayne@68 4021 args += 1;
jpayne@68 4022 nargs -= 1;
jpayne@68 4023 break;
jpayne@68 4024 case 0:
jpayne@68 4025 self = ((PyCFunctionObject*)cyfunc)->m_self;
jpayne@68 4026 break;
jpayne@68 4027 default:
jpayne@68 4028 return NULL;
jpayne@68 4029 }
jpayne@68 4030 if (unlikely(nargs != 1)) {
jpayne@68 4031 PyErr_Format(PyExc_TypeError,
jpayne@68 4032 "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
jpayne@68 4033 def->ml_name, nargs);
jpayne@68 4034 return NULL;
jpayne@68 4035 }
jpayne@68 4036 return def->ml_meth(self, args[0]);
jpayne@68 4037 }
jpayne@68 4038 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
jpayne@68 4039 {
jpayne@68 4040 __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
jpayne@68 4041 PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
jpayne@68 4042 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 4043 Py_ssize_t nargs = (Py_ssize_t)nargsf;
jpayne@68 4044 #else
jpayne@68 4045 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
jpayne@68 4046 #endif
jpayne@68 4047 PyObject *self;
jpayne@68 4048 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
jpayne@68 4049 case 1:
jpayne@68 4050 self = args[0];
jpayne@68 4051 args += 1;
jpayne@68 4052 nargs -= 1;
jpayne@68 4053 break;
jpayne@68 4054 case 0:
jpayne@68 4055 self = ((PyCFunctionObject*)cyfunc)->m_self;
jpayne@68 4056 break;
jpayne@68 4057 default:
jpayne@68 4058 return NULL;
jpayne@68 4059 }
jpayne@68 4060 return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
jpayne@68 4061 }
jpayne@68 4062 static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
jpayne@68 4063 {
jpayne@68 4064 __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
jpayne@68 4065 PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
jpayne@68 4066 PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
jpayne@68 4067 #if CYTHON_BACKPORT_VECTORCALL
jpayne@68 4068 Py_ssize_t nargs = (Py_ssize_t)nargsf;
jpayne@68 4069 #else
jpayne@68 4070 Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
jpayne@68 4071 #endif
jpayne@68 4072 PyObject *self;
jpayne@68 4073 switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
jpayne@68 4074 case 1:
jpayne@68 4075 self = args[0];
jpayne@68 4076 args += 1;
jpayne@68 4077 nargs -= 1;
jpayne@68 4078 break;
jpayne@68 4079 case 0:
jpayne@68 4080 self = ((PyCFunctionObject*)cyfunc)->m_self;
jpayne@68 4081 break;
jpayne@68 4082 default:
jpayne@68 4083 return NULL;
jpayne@68 4084 }
jpayne@68 4085 return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
jpayne@68 4086 }
jpayne@68 4087 #endif
jpayne@68 4088 #if CYTHON_USE_TYPE_SPECS
jpayne@68 4089 static PyType_Slot __pyx_CyFunctionType_slots[] = {
jpayne@68 4090 {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
jpayne@68 4091 {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
jpayne@68 4092 {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
jpayne@68 4093 {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
jpayne@68 4094 {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
jpayne@68 4095 {Py_tp_methods, (void *)__pyx_CyFunction_methods},
jpayne@68 4096 {Py_tp_members, (void *)__pyx_CyFunction_members},
jpayne@68 4097 {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
jpayne@68 4098 {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
jpayne@68 4099 {0, 0},
jpayne@68 4100 };
jpayne@68 4101 static PyType_Spec __pyx_CyFunctionType_spec = {
jpayne@68 4102 __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
jpayne@68 4103 sizeof(__pyx_CyFunctionObject),
jpayne@68 4104 0,
jpayne@68 4105 #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
jpayne@68 4106 Py_TPFLAGS_METHOD_DESCRIPTOR |
jpayne@68 4107 #endif
jpayne@68 4108 #if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
jpayne@68 4109 _Py_TPFLAGS_HAVE_VECTORCALL |
jpayne@68 4110 #endif
jpayne@68 4111 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
jpayne@68 4112 __pyx_CyFunctionType_slots
jpayne@68 4113 };
jpayne@68 4114 #else
jpayne@68 4115 static PyTypeObject __pyx_CyFunctionType_type = {
jpayne@68 4116 PyVarObject_HEAD_INIT(0, 0)
jpayne@68 4117 __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
jpayne@68 4118 sizeof(__pyx_CyFunctionObject),
jpayne@68 4119 0,
jpayne@68 4120 (destructor) __Pyx_CyFunction_dealloc,
jpayne@68 4121 #if !CYTHON_METH_FASTCALL
jpayne@68 4122 0,
jpayne@68 4123 #elif CYTHON_BACKPORT_VECTORCALL
jpayne@68 4124 (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
jpayne@68 4125 #else
jpayne@68 4126 offsetof(PyCFunctionObject, vectorcall),
jpayne@68 4127 #endif
jpayne@68 4128 0,
jpayne@68 4129 0,
jpayne@68 4130 #if PY_MAJOR_VERSION < 3
jpayne@68 4131 0,
jpayne@68 4132 #else
jpayne@68 4133 0,
jpayne@68 4134 #endif
jpayne@68 4135 (reprfunc) __Pyx_CyFunction_repr,
jpayne@68 4136 0,
jpayne@68 4137 0,
jpayne@68 4138 0,
jpayne@68 4139 0,
jpayne@68 4140 __Pyx_CyFunction_CallAsMethod,
jpayne@68 4141 0,
jpayne@68 4142 0,
jpayne@68 4143 0,
jpayne@68 4144 0,
jpayne@68 4145 #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
jpayne@68 4146 Py_TPFLAGS_METHOD_DESCRIPTOR |
jpayne@68 4147 #endif
jpayne@68 4148 #if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
jpayne@68 4149 _Py_TPFLAGS_HAVE_VECTORCALL |
jpayne@68 4150 #endif
jpayne@68 4151 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
jpayne@68 4152 0,
jpayne@68 4153 (traverseproc) __Pyx_CyFunction_traverse,
jpayne@68 4154 (inquiry) __Pyx_CyFunction_clear,
jpayne@68 4155 0,
jpayne@68 4156 #if PY_VERSION_HEX < 0x030500A0
jpayne@68 4157 offsetof(__pyx_CyFunctionObject, func_weakreflist),
jpayne@68 4158 #else
jpayne@68 4159 offsetof(PyCFunctionObject, m_weakreflist),
jpayne@68 4160 #endif
jpayne@68 4161 0,
jpayne@68 4162 0,
jpayne@68 4163 __pyx_CyFunction_methods,
jpayne@68 4164 __pyx_CyFunction_members,
jpayne@68 4165 __pyx_CyFunction_getsets,
jpayne@68 4166 0,
jpayne@68 4167 0,
jpayne@68 4168 __Pyx_PyMethod_New,
jpayne@68 4169 0,
jpayne@68 4170 offsetof(__pyx_CyFunctionObject, func_dict),
jpayne@68 4171 0,
jpayne@68 4172 0,
jpayne@68 4173 0,
jpayne@68 4174 0,
jpayne@68 4175 0,
jpayne@68 4176 0,
jpayne@68 4177 0,
jpayne@68 4178 0,
jpayne@68 4179 0,
jpayne@68 4180 0,
jpayne@68 4181 0,
jpayne@68 4182 0,
jpayne@68 4183 #if PY_VERSION_HEX >= 0x030400a1
jpayne@68 4184 0,
jpayne@68 4185 #endif
jpayne@68 4186 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
jpayne@68 4187 0,
jpayne@68 4188 #endif
jpayne@68 4189 #if __PYX_NEED_TP_PRINT_SLOT
jpayne@68 4190 0,
jpayne@68 4191 #endif
jpayne@68 4192 #if PY_VERSION_HEX >= 0x030C0000
jpayne@68 4193 0,
jpayne@68 4194 #endif
jpayne@68 4195 #if PY_VERSION_HEX >= 0x030d00A4
jpayne@68 4196 0,
jpayne@68 4197 #endif
jpayne@68 4198 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
jpayne@68 4199 0,
jpayne@68 4200 #endif
jpayne@68 4201 };
jpayne@68 4202 #endif
jpayne@68 4203 static int __pyx_CyFunction_init(PyObject *module) {
jpayne@68 4204 #if CYTHON_USE_TYPE_SPECS
jpayne@68 4205 __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
jpayne@68 4206 #else
jpayne@68 4207 CYTHON_UNUSED_VAR(module);
jpayne@68 4208 __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
jpayne@68 4209 #endif
jpayne@68 4210 if (unlikely(__pyx_CyFunctionType == NULL)) {
jpayne@68 4211 return -1;
jpayne@68 4212 }
jpayne@68 4213 return 0;
jpayne@68 4214 }
jpayne@68 4215 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
jpayne@68 4216 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
jpayne@68 4217 m->defaults = PyObject_Malloc(size);
jpayne@68 4218 if (unlikely(!m->defaults))
jpayne@68 4219 return PyErr_NoMemory();
jpayne@68 4220 memset(m->defaults, 0, size);
jpayne@68 4221 m->defaults_pyobjects = pyobjects;
jpayne@68 4222 m->defaults_size = size;
jpayne@68 4223 return m->defaults;
jpayne@68 4224 }
jpayne@68 4225 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
jpayne@68 4226 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
jpayne@68 4227 m->defaults_tuple = tuple;
jpayne@68 4228 Py_INCREF(tuple);
jpayne@68 4229 }
jpayne@68 4230 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
jpayne@68 4231 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
jpayne@68 4232 m->defaults_kwdict = dict;
jpayne@68 4233 Py_INCREF(dict);
jpayne@68 4234 }
jpayne@68 4235 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
jpayne@68 4236 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
jpayne@68 4237 m->func_annotations = dict;
jpayne@68 4238 Py_INCREF(dict);
jpayne@68 4239 }
jpayne@68 4240
jpayne@68 4241 /* CythonFunction */
jpayne@68 4242 static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
jpayne@68 4243 PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
jpayne@68 4244 PyObject *op = __Pyx_CyFunction_Init(
jpayne@68 4245 PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
jpayne@68 4246 ml, flags, qualname, closure, module, globals, code
jpayne@68 4247 );
jpayne@68 4248 if (likely(op)) {
jpayne@68 4249 PyObject_GC_Track(op);
jpayne@68 4250 }
jpayne@68 4251 return op;
jpayne@68 4252 }
jpayne@68 4253
jpayne@68 4254 /* PyDictVersioning */
jpayne@68 4255 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
jpayne@68 4256 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
jpayne@68 4257 PyObject *dict = Py_TYPE(obj)->tp_dict;
jpayne@68 4258 return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
jpayne@68 4259 }
jpayne@68 4260 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
jpayne@68 4261 PyObject **dictptr = NULL;
jpayne@68 4262 Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
jpayne@68 4263 if (offset) {
jpayne@68 4264 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 4265 dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
jpayne@68 4266 #else
jpayne@68 4267 dictptr = _PyObject_GetDictPtr(obj);
jpayne@68 4268 #endif
jpayne@68 4269 }
jpayne@68 4270 return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
jpayne@68 4271 }
jpayne@68 4272 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
jpayne@68 4273 PyObject *dict = Py_TYPE(obj)->tp_dict;
jpayne@68 4274 if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
jpayne@68 4275 return 0;
jpayne@68 4276 return obj_dict_version == __Pyx_get_object_dict_version(obj);
jpayne@68 4277 }
jpayne@68 4278 #endif
jpayne@68 4279
jpayne@68 4280 /* PyErrExceptionMatches */
jpayne@68 4281 #if CYTHON_FAST_THREAD_STATE
jpayne@68 4282 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
jpayne@68 4283 Py_ssize_t i, n;
jpayne@68 4284 n = PyTuple_GET_SIZE(tuple);
jpayne@68 4285 #if PY_MAJOR_VERSION >= 3
jpayne@68 4286 for (i=0; i<n; i++) {
jpayne@68 4287 if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
jpayne@68 4288 }
jpayne@68 4289 #endif
jpayne@68 4290 for (i=0; i<n; i++) {
jpayne@68 4291 if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
jpayne@68 4292 }
jpayne@68 4293 return 0;
jpayne@68 4294 }
jpayne@68 4295 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
jpayne@68 4296 int result;
jpayne@68 4297 PyObject *exc_type;
jpayne@68 4298 #if PY_VERSION_HEX >= 0x030C00A6
jpayne@68 4299 PyObject *current_exception = tstate->current_exception;
jpayne@68 4300 if (unlikely(!current_exception)) return 0;
jpayne@68 4301 exc_type = (PyObject*) Py_TYPE(current_exception);
jpayne@68 4302 if (exc_type == err) return 1;
jpayne@68 4303 #else
jpayne@68 4304 exc_type = tstate->curexc_type;
jpayne@68 4305 if (exc_type == err) return 1;
jpayne@68 4306 if (unlikely(!exc_type)) return 0;
jpayne@68 4307 #endif
jpayne@68 4308 #if CYTHON_AVOID_BORROWED_REFS
jpayne@68 4309 Py_INCREF(exc_type);
jpayne@68 4310 #endif
jpayne@68 4311 if (unlikely(PyTuple_Check(err))) {
jpayne@68 4312 result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
jpayne@68 4313 } else {
jpayne@68 4314 result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
jpayne@68 4315 }
jpayne@68 4316 #if CYTHON_AVOID_BORROWED_REFS
jpayne@68 4317 Py_DECREF(exc_type);
jpayne@68 4318 #endif
jpayne@68 4319 return result;
jpayne@68 4320 }
jpayne@68 4321 #endif
jpayne@68 4322
jpayne@68 4323 /* PyErrFetchRestore */
jpayne@68 4324 #if CYTHON_FAST_THREAD_STATE
jpayne@68 4325 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
jpayne@68 4326 #if PY_VERSION_HEX >= 0x030C00A6
jpayne@68 4327 PyObject *tmp_value;
jpayne@68 4328 assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
jpayne@68 4329 if (value) {
jpayne@68 4330 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 4331 if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
jpayne@68 4332 #endif
jpayne@68 4333 PyException_SetTraceback(value, tb);
jpayne@68 4334 }
jpayne@68 4335 tmp_value = tstate->current_exception;
jpayne@68 4336 tstate->current_exception = value;
jpayne@68 4337 Py_XDECREF(tmp_value);
jpayne@68 4338 Py_XDECREF(type);
jpayne@68 4339 Py_XDECREF(tb);
jpayne@68 4340 #else
jpayne@68 4341 PyObject *tmp_type, *tmp_value, *tmp_tb;
jpayne@68 4342 tmp_type = tstate->curexc_type;
jpayne@68 4343 tmp_value = tstate->curexc_value;
jpayne@68 4344 tmp_tb = tstate->curexc_traceback;
jpayne@68 4345 tstate->curexc_type = type;
jpayne@68 4346 tstate->curexc_value = value;
jpayne@68 4347 tstate->curexc_traceback = tb;
jpayne@68 4348 Py_XDECREF(tmp_type);
jpayne@68 4349 Py_XDECREF(tmp_value);
jpayne@68 4350 Py_XDECREF(tmp_tb);
jpayne@68 4351 #endif
jpayne@68 4352 }
jpayne@68 4353 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
jpayne@68 4354 #if PY_VERSION_HEX >= 0x030C00A6
jpayne@68 4355 PyObject* exc_value;
jpayne@68 4356 exc_value = tstate->current_exception;
jpayne@68 4357 tstate->current_exception = 0;
jpayne@68 4358 *value = exc_value;
jpayne@68 4359 *type = NULL;
jpayne@68 4360 *tb = NULL;
jpayne@68 4361 if (exc_value) {
jpayne@68 4362 *type = (PyObject*) Py_TYPE(exc_value);
jpayne@68 4363 Py_INCREF(*type);
jpayne@68 4364 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 4365 *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
jpayne@68 4366 Py_XINCREF(*tb);
jpayne@68 4367 #else
jpayne@68 4368 *tb = PyException_GetTraceback(exc_value);
jpayne@68 4369 #endif
jpayne@68 4370 }
jpayne@68 4371 #else
jpayne@68 4372 *type = tstate->curexc_type;
jpayne@68 4373 *value = tstate->curexc_value;
jpayne@68 4374 *tb = tstate->curexc_traceback;
jpayne@68 4375 tstate->curexc_type = 0;
jpayne@68 4376 tstate->curexc_value = 0;
jpayne@68 4377 tstate->curexc_traceback = 0;
jpayne@68 4378 #endif
jpayne@68 4379 }
jpayne@68 4380 #endif
jpayne@68 4381
jpayne@68 4382 /* PyObjectGetAttrStrNoError */
jpayne@68 4383 #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
jpayne@68 4384 static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
jpayne@68 4385 __Pyx_PyThreadState_declare
jpayne@68 4386 __Pyx_PyThreadState_assign
jpayne@68 4387 if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
jpayne@68 4388 __Pyx_PyErr_Clear();
jpayne@68 4389 }
jpayne@68 4390 #endif
jpayne@68 4391 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
jpayne@68 4392 PyObject *result;
jpayne@68 4393 #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
jpayne@68 4394 (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
jpayne@68 4395 return result;
jpayne@68 4396 #else
jpayne@68 4397 #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
jpayne@68 4398 PyTypeObject* tp = Py_TYPE(obj);
jpayne@68 4399 if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
jpayne@68 4400 return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
jpayne@68 4401 }
jpayne@68 4402 #endif
jpayne@68 4403 result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
jpayne@68 4404 if (unlikely(!result)) {
jpayne@68 4405 __Pyx_PyObject_GetAttrStr_ClearAttributeError();
jpayne@68 4406 }
jpayne@68 4407 return result;
jpayne@68 4408 #endif
jpayne@68 4409 }
jpayne@68 4410
jpayne@68 4411 /* CLineInTraceback */
jpayne@68 4412 #ifndef CYTHON_CLINE_IN_TRACEBACK
jpayne@68 4413 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
jpayne@68 4414 PyObject *use_cline;
jpayne@68 4415 PyObject *ptype, *pvalue, *ptraceback;
jpayne@68 4416 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 4417 PyObject **cython_runtime_dict;
jpayne@68 4418 #endif
jpayne@68 4419 CYTHON_MAYBE_UNUSED_VAR(tstate);
jpayne@68 4420 if (unlikely(!__pyx_cython_runtime)) {
jpayne@68 4421 return c_line;
jpayne@68 4422 }
jpayne@68 4423 __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
jpayne@68 4424 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 4425 cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
jpayne@68 4426 if (likely(cython_runtime_dict)) {
jpayne@68 4427 __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
jpayne@68 4428 use_cline, *cython_runtime_dict,
jpayne@68 4429 __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
jpayne@68 4430 } else
jpayne@68 4431 #endif
jpayne@68 4432 {
jpayne@68 4433 PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
jpayne@68 4434 if (use_cline_obj) {
jpayne@68 4435 use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
jpayne@68 4436 Py_DECREF(use_cline_obj);
jpayne@68 4437 } else {
jpayne@68 4438 PyErr_Clear();
jpayne@68 4439 use_cline = NULL;
jpayne@68 4440 }
jpayne@68 4441 }
jpayne@68 4442 if (!use_cline) {
jpayne@68 4443 c_line = 0;
jpayne@68 4444 (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
jpayne@68 4445 }
jpayne@68 4446 else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
jpayne@68 4447 c_line = 0;
jpayne@68 4448 }
jpayne@68 4449 __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
jpayne@68 4450 return c_line;
jpayne@68 4451 }
jpayne@68 4452 #endif
jpayne@68 4453
jpayne@68 4454 /* CodeObjectCache */
jpayne@68 4455 #if !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 4456 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
jpayne@68 4457 int start = 0, mid = 0, end = count - 1;
jpayne@68 4458 if (end >= 0 && code_line > entries[end].code_line) {
jpayne@68 4459 return count;
jpayne@68 4460 }
jpayne@68 4461 while (start < end) {
jpayne@68 4462 mid = start + (end - start) / 2;
jpayne@68 4463 if (code_line < entries[mid].code_line) {
jpayne@68 4464 end = mid;
jpayne@68 4465 } else if (code_line > entries[mid].code_line) {
jpayne@68 4466 start = mid + 1;
jpayne@68 4467 } else {
jpayne@68 4468 return mid;
jpayne@68 4469 }
jpayne@68 4470 }
jpayne@68 4471 if (code_line <= entries[mid].code_line) {
jpayne@68 4472 return mid;
jpayne@68 4473 } else {
jpayne@68 4474 return mid + 1;
jpayne@68 4475 }
jpayne@68 4476 }
jpayne@68 4477 static PyCodeObject *__pyx_find_code_object(int code_line) {
jpayne@68 4478 PyCodeObject* code_object;
jpayne@68 4479 int pos;
jpayne@68 4480 if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
jpayne@68 4481 return NULL;
jpayne@68 4482 }
jpayne@68 4483 pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
jpayne@68 4484 if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
jpayne@68 4485 return NULL;
jpayne@68 4486 }
jpayne@68 4487 code_object = __pyx_code_cache.entries[pos].code_object;
jpayne@68 4488 Py_INCREF(code_object);
jpayne@68 4489 return code_object;
jpayne@68 4490 }
jpayne@68 4491 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
jpayne@68 4492 int pos, i;
jpayne@68 4493 __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
jpayne@68 4494 if (unlikely(!code_line)) {
jpayne@68 4495 return;
jpayne@68 4496 }
jpayne@68 4497 if (unlikely(!entries)) {
jpayne@68 4498 entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
jpayne@68 4499 if (likely(entries)) {
jpayne@68 4500 __pyx_code_cache.entries = entries;
jpayne@68 4501 __pyx_code_cache.max_count = 64;
jpayne@68 4502 __pyx_code_cache.count = 1;
jpayne@68 4503 entries[0].code_line = code_line;
jpayne@68 4504 entries[0].code_object = code_object;
jpayne@68 4505 Py_INCREF(code_object);
jpayne@68 4506 }
jpayne@68 4507 return;
jpayne@68 4508 }
jpayne@68 4509 pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
jpayne@68 4510 if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
jpayne@68 4511 PyCodeObject* tmp = entries[pos].code_object;
jpayne@68 4512 entries[pos].code_object = code_object;
jpayne@68 4513 Py_DECREF(tmp);
jpayne@68 4514 return;
jpayne@68 4515 }
jpayne@68 4516 if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
jpayne@68 4517 int new_max = __pyx_code_cache.max_count + 64;
jpayne@68 4518 entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
jpayne@68 4519 __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
jpayne@68 4520 if (unlikely(!entries)) {
jpayne@68 4521 return;
jpayne@68 4522 }
jpayne@68 4523 __pyx_code_cache.entries = entries;
jpayne@68 4524 __pyx_code_cache.max_count = new_max;
jpayne@68 4525 }
jpayne@68 4526 for (i=__pyx_code_cache.count; i>pos; i--) {
jpayne@68 4527 entries[i] = entries[i-1];
jpayne@68 4528 }
jpayne@68 4529 entries[pos].code_line = code_line;
jpayne@68 4530 entries[pos].code_object = code_object;
jpayne@68 4531 __pyx_code_cache.count++;
jpayne@68 4532 Py_INCREF(code_object);
jpayne@68 4533 }
jpayne@68 4534 #endif
jpayne@68 4535
jpayne@68 4536 /* AddTraceback */
jpayne@68 4537 #include "compile.h"
jpayne@68 4538 #include "frameobject.h"
jpayne@68 4539 #include "traceback.h"
jpayne@68 4540 #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 4541 #ifndef Py_BUILD_CORE
jpayne@68 4542 #define Py_BUILD_CORE 1
jpayne@68 4543 #endif
jpayne@68 4544 #include "internal/pycore_frame.h"
jpayne@68 4545 #endif
jpayne@68 4546 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 4547 static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
jpayne@68 4548 PyObject *firstlineno, PyObject *name) {
jpayne@68 4549 PyObject *replace = NULL;
jpayne@68 4550 if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
jpayne@68 4551 if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
jpayne@68 4552 replace = PyObject_GetAttrString(code, "replace");
jpayne@68 4553 if (likely(replace)) {
jpayne@68 4554 PyObject *result;
jpayne@68 4555 result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
jpayne@68 4556 Py_DECREF(replace);
jpayne@68 4557 return result;
jpayne@68 4558 }
jpayne@68 4559 PyErr_Clear();
jpayne@68 4560 #if __PYX_LIMITED_VERSION_HEX < 0x030780000
jpayne@68 4561 {
jpayne@68 4562 PyObject *compiled = NULL, *result = NULL;
jpayne@68 4563 if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
jpayne@68 4564 if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
jpayne@68 4565 compiled = Py_CompileString(
jpayne@68 4566 "out = type(code)(\n"
jpayne@68 4567 " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
jpayne@68 4568 " code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
jpayne@68 4569 " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
jpayne@68 4570 " code.co_lnotab)\n", "<dummy>", Py_file_input);
jpayne@68 4571 if (!compiled) return NULL;
jpayne@68 4572 result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
jpayne@68 4573 Py_DECREF(compiled);
jpayne@68 4574 if (!result) PyErr_Print();
jpayne@68 4575 Py_DECREF(result);
jpayne@68 4576 result = PyDict_GetItemString(scratch_dict, "out");
jpayne@68 4577 if (result) Py_INCREF(result);
jpayne@68 4578 return result;
jpayne@68 4579 }
jpayne@68 4580 #else
jpayne@68 4581 return NULL;
jpayne@68 4582 #endif
jpayne@68 4583 }
jpayne@68 4584 static void __Pyx_AddTraceback(const char *funcname, int c_line,
jpayne@68 4585 int py_line, const char *filename) {
jpayne@68 4586 PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
jpayne@68 4587 PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
jpayne@68 4588 PyObject *exc_type, *exc_value, *exc_traceback;
jpayne@68 4589 int success = 0;
jpayne@68 4590 if (c_line) {
jpayne@68 4591 (void) __pyx_cfilenm;
jpayne@68 4592 (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
jpayne@68 4593 }
jpayne@68 4594 PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
jpayne@68 4595 code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
jpayne@68 4596 if (unlikely(!code_object)) goto bad;
jpayne@68 4597 py_py_line = PyLong_FromLong(py_line);
jpayne@68 4598 if (unlikely(!py_py_line)) goto bad;
jpayne@68 4599 py_funcname = PyUnicode_FromString(funcname);
jpayne@68 4600 if (unlikely(!py_funcname)) goto bad;
jpayne@68 4601 dict = PyDict_New();
jpayne@68 4602 if (unlikely(!dict)) goto bad;
jpayne@68 4603 {
jpayne@68 4604 PyObject *old_code_object = code_object;
jpayne@68 4605 code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
jpayne@68 4606 Py_DECREF(old_code_object);
jpayne@68 4607 }
jpayne@68 4608 if (unlikely(!code_object)) goto bad;
jpayne@68 4609 getframe = PySys_GetObject("_getframe");
jpayne@68 4610 if (unlikely(!getframe)) goto bad;
jpayne@68 4611 if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
jpayne@68 4612 frame = PyEval_EvalCode(code_object, dict, dict);
jpayne@68 4613 if (unlikely(!frame) || frame == Py_None) goto bad;
jpayne@68 4614 success = 1;
jpayne@68 4615 bad:
jpayne@68 4616 PyErr_Restore(exc_type, exc_value, exc_traceback);
jpayne@68 4617 Py_XDECREF(code_object);
jpayne@68 4618 Py_XDECREF(py_py_line);
jpayne@68 4619 Py_XDECREF(py_funcname);
jpayne@68 4620 Py_XDECREF(dict);
jpayne@68 4621 Py_XDECREF(replace);
jpayne@68 4622 if (success) {
jpayne@68 4623 PyTraceBack_Here(
jpayne@68 4624 (struct _frame*)frame);
jpayne@68 4625 }
jpayne@68 4626 Py_XDECREF(frame);
jpayne@68 4627 }
jpayne@68 4628 #else
jpayne@68 4629 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
jpayne@68 4630 const char *funcname, int c_line,
jpayne@68 4631 int py_line, const char *filename) {
jpayne@68 4632 PyCodeObject *py_code = NULL;
jpayne@68 4633 PyObject *py_funcname = NULL;
jpayne@68 4634 #if PY_MAJOR_VERSION < 3
jpayne@68 4635 PyObject *py_srcfile = NULL;
jpayne@68 4636 py_srcfile = PyString_FromString(filename);
jpayne@68 4637 if (!py_srcfile) goto bad;
jpayne@68 4638 #endif
jpayne@68 4639 if (c_line) {
jpayne@68 4640 #if PY_MAJOR_VERSION < 3
jpayne@68 4641 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
jpayne@68 4642 if (!py_funcname) goto bad;
jpayne@68 4643 #else
jpayne@68 4644 py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
jpayne@68 4645 if (!py_funcname) goto bad;
jpayne@68 4646 funcname = PyUnicode_AsUTF8(py_funcname);
jpayne@68 4647 if (!funcname) goto bad;
jpayne@68 4648 #endif
jpayne@68 4649 }
jpayne@68 4650 else {
jpayne@68 4651 #if PY_MAJOR_VERSION < 3
jpayne@68 4652 py_funcname = PyString_FromString(funcname);
jpayne@68 4653 if (!py_funcname) goto bad;
jpayne@68 4654 #endif
jpayne@68 4655 }
jpayne@68 4656 #if PY_MAJOR_VERSION < 3
jpayne@68 4657 py_code = __Pyx_PyCode_New(
jpayne@68 4658 0,
jpayne@68 4659 0,
jpayne@68 4660 0,
jpayne@68 4661 0,
jpayne@68 4662 0,
jpayne@68 4663 0,
jpayne@68 4664 __pyx_empty_bytes, /*PyObject *code,*/
jpayne@68 4665 __pyx_empty_tuple, /*PyObject *consts,*/
jpayne@68 4666 __pyx_empty_tuple, /*PyObject *names,*/
jpayne@68 4667 __pyx_empty_tuple, /*PyObject *varnames,*/
jpayne@68 4668 __pyx_empty_tuple, /*PyObject *freevars,*/
jpayne@68 4669 __pyx_empty_tuple, /*PyObject *cellvars,*/
jpayne@68 4670 py_srcfile, /*PyObject *filename,*/
jpayne@68 4671 py_funcname, /*PyObject *name,*/
jpayne@68 4672 py_line,
jpayne@68 4673 __pyx_empty_bytes /*PyObject *lnotab*/
jpayne@68 4674 );
jpayne@68 4675 Py_DECREF(py_srcfile);
jpayne@68 4676 #else
jpayne@68 4677 py_code = PyCode_NewEmpty(filename, funcname, py_line);
jpayne@68 4678 #endif
jpayne@68 4679 Py_XDECREF(py_funcname);
jpayne@68 4680 return py_code;
jpayne@68 4681 bad:
jpayne@68 4682 Py_XDECREF(py_funcname);
jpayne@68 4683 #if PY_MAJOR_VERSION < 3
jpayne@68 4684 Py_XDECREF(py_srcfile);
jpayne@68 4685 #endif
jpayne@68 4686 return NULL;
jpayne@68 4687 }
jpayne@68 4688 static void __Pyx_AddTraceback(const char *funcname, int c_line,
jpayne@68 4689 int py_line, const char *filename) {
jpayne@68 4690 PyCodeObject *py_code = 0;
jpayne@68 4691 PyFrameObject *py_frame = 0;
jpayne@68 4692 PyThreadState *tstate = __Pyx_PyThreadState_Current;
jpayne@68 4693 PyObject *ptype, *pvalue, *ptraceback;
jpayne@68 4694 if (c_line) {
jpayne@68 4695 c_line = __Pyx_CLineForTraceback(tstate, c_line);
jpayne@68 4696 }
jpayne@68 4697 py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
jpayne@68 4698 if (!py_code) {
jpayne@68 4699 __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
jpayne@68 4700 py_code = __Pyx_CreateCodeObjectForTraceback(
jpayne@68 4701 funcname, c_line, py_line, filename);
jpayne@68 4702 if (!py_code) {
jpayne@68 4703 /* If the code object creation fails, then we should clear the
jpayne@68 4704 fetched exception references and propagate the new exception */
jpayne@68 4705 Py_XDECREF(ptype);
jpayne@68 4706 Py_XDECREF(pvalue);
jpayne@68 4707 Py_XDECREF(ptraceback);
jpayne@68 4708 goto bad;
jpayne@68 4709 }
jpayne@68 4710 __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
jpayne@68 4711 __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
jpayne@68 4712 }
jpayne@68 4713 py_frame = PyFrame_New(
jpayne@68 4714 tstate, /*PyThreadState *tstate,*/
jpayne@68 4715 py_code, /*PyCodeObject *code,*/
jpayne@68 4716 __pyx_d, /*PyObject *globals,*/
jpayne@68 4717 0 /*PyObject *locals*/
jpayne@68 4718 );
jpayne@68 4719 if (!py_frame) goto bad;
jpayne@68 4720 __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
jpayne@68 4721 PyTraceBack_Here(py_frame);
jpayne@68 4722 bad:
jpayne@68 4723 Py_XDECREF(py_code);
jpayne@68 4724 Py_XDECREF(py_frame);
jpayne@68 4725 }
jpayne@68 4726 #endif
jpayne@68 4727
jpayne@68 4728 /* FormatTypeName */
jpayne@68 4729 #if CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 4730 static __Pyx_TypeName
jpayne@68 4731 __Pyx_PyType_GetName(PyTypeObject* tp)
jpayne@68 4732 {
jpayne@68 4733 PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
jpayne@68 4734 __pyx_n_s_name);
jpayne@68 4735 if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
jpayne@68 4736 PyErr_Clear();
jpayne@68 4737 Py_XDECREF(name);
jpayne@68 4738 name = __Pyx_NewRef(__pyx_n_s__2);
jpayne@68 4739 }
jpayne@68 4740 return name;
jpayne@68 4741 }
jpayne@68 4742 #endif
jpayne@68 4743
jpayne@68 4744 /* CIntToPy */
jpayne@68 4745 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
jpayne@68 4746 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 4747 #pragma GCC diagnostic push
jpayne@68 4748 #pragma GCC diagnostic ignored "-Wconversion"
jpayne@68 4749 #endif
jpayne@68 4750 const long neg_one = (long) -1, const_zero = (long) 0;
jpayne@68 4751 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 4752 #pragma GCC diagnostic pop
jpayne@68 4753 #endif
jpayne@68 4754 const int is_unsigned = neg_one > const_zero;
jpayne@68 4755 if (is_unsigned) {
jpayne@68 4756 if (sizeof(long) < sizeof(long)) {
jpayne@68 4757 return PyInt_FromLong((long) value);
jpayne@68 4758 } else if (sizeof(long) <= sizeof(unsigned long)) {
jpayne@68 4759 return PyLong_FromUnsignedLong((unsigned long) value);
jpayne@68 4760 #ifdef HAVE_LONG_LONG
jpayne@68 4761 } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
jpayne@68 4762 return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
jpayne@68 4763 #endif
jpayne@68 4764 }
jpayne@68 4765 } else {
jpayne@68 4766 if (sizeof(long) <= sizeof(long)) {
jpayne@68 4767 return PyInt_FromLong((long) value);
jpayne@68 4768 #ifdef HAVE_LONG_LONG
jpayne@68 4769 } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
jpayne@68 4770 return PyLong_FromLongLong((PY_LONG_LONG) value);
jpayne@68 4771 #endif
jpayne@68 4772 }
jpayne@68 4773 }
jpayne@68 4774 {
jpayne@68 4775 unsigned char *bytes = (unsigned char *)&value;
jpayne@68 4776 #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
jpayne@68 4777 if (is_unsigned) {
jpayne@68 4778 return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
jpayne@68 4779 } else {
jpayne@68 4780 return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
jpayne@68 4781 }
jpayne@68 4782 #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
jpayne@68 4783 int one = 1; int little = (int)*(unsigned char *)&one;
jpayne@68 4784 return _PyLong_FromByteArray(bytes, sizeof(long),
jpayne@68 4785 little, !is_unsigned);
jpayne@68 4786 #else
jpayne@68 4787 int one = 1; int little = (int)*(unsigned char *)&one;
jpayne@68 4788 PyObject *from_bytes, *result = NULL;
jpayne@68 4789 PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
jpayne@68 4790 from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
jpayne@68 4791 if (!from_bytes) return NULL;
jpayne@68 4792 py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
jpayne@68 4793 if (!py_bytes) goto limited_bad;
jpayne@68 4794 order_str = PyUnicode_FromString(little ? "little" : "big");
jpayne@68 4795 if (!order_str) goto limited_bad;
jpayne@68 4796 arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
jpayne@68 4797 if (!arg_tuple) goto limited_bad;
jpayne@68 4798 if (!is_unsigned) {
jpayne@68 4799 kwds = PyDict_New();
jpayne@68 4800 if (!kwds) goto limited_bad;
jpayne@68 4801 if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
jpayne@68 4802 }
jpayne@68 4803 result = PyObject_Call(from_bytes, arg_tuple, kwds);
jpayne@68 4804 limited_bad:
jpayne@68 4805 Py_XDECREF(kwds);
jpayne@68 4806 Py_XDECREF(arg_tuple);
jpayne@68 4807 Py_XDECREF(order_str);
jpayne@68 4808 Py_XDECREF(py_bytes);
jpayne@68 4809 Py_XDECREF(from_bytes);
jpayne@68 4810 return result;
jpayne@68 4811 #endif
jpayne@68 4812 }
jpayne@68 4813 }
jpayne@68 4814
jpayne@68 4815 /* CIntFromPyVerify */
jpayne@68 4816 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
jpayne@68 4817 __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
jpayne@68 4818 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
jpayne@68 4819 __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
jpayne@68 4820 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
jpayne@68 4821 {\
jpayne@68 4822 func_type value = func_value;\
jpayne@68 4823 if (sizeof(target_type) < sizeof(func_type)) {\
jpayne@68 4824 if (unlikely(value != (func_type) (target_type) value)) {\
jpayne@68 4825 func_type zero = 0;\
jpayne@68 4826 if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
jpayne@68 4827 return (target_type) -1;\
jpayne@68 4828 if (is_unsigned && unlikely(value < zero))\
jpayne@68 4829 goto raise_neg_overflow;\
jpayne@68 4830 else\
jpayne@68 4831 goto raise_overflow;\
jpayne@68 4832 }\
jpayne@68 4833 }\
jpayne@68 4834 return (target_type) value;\
jpayne@68 4835 }
jpayne@68 4836
jpayne@68 4837 /* CIntFromPy */
jpayne@68 4838 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
jpayne@68 4839 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 4840 #pragma GCC diagnostic push
jpayne@68 4841 #pragma GCC diagnostic ignored "-Wconversion"
jpayne@68 4842 #endif
jpayne@68 4843 const long neg_one = (long) -1, const_zero = (long) 0;
jpayne@68 4844 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 4845 #pragma GCC diagnostic pop
jpayne@68 4846 #endif
jpayne@68 4847 const int is_unsigned = neg_one > const_zero;
jpayne@68 4848 #if PY_MAJOR_VERSION < 3
jpayne@68 4849 if (likely(PyInt_Check(x))) {
jpayne@68 4850 if ((sizeof(long) < sizeof(long))) {
jpayne@68 4851 __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
jpayne@68 4852 } else {
jpayne@68 4853 long val = PyInt_AS_LONG(x);
jpayne@68 4854 if (is_unsigned && unlikely(val < 0)) {
jpayne@68 4855 goto raise_neg_overflow;
jpayne@68 4856 }
jpayne@68 4857 return (long) val;
jpayne@68 4858 }
jpayne@68 4859 }
jpayne@68 4860 #endif
jpayne@68 4861 if (unlikely(!PyLong_Check(x))) {
jpayne@68 4862 long val;
jpayne@68 4863 PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
jpayne@68 4864 if (!tmp) return (long) -1;
jpayne@68 4865 val = __Pyx_PyInt_As_long(tmp);
jpayne@68 4866 Py_DECREF(tmp);
jpayne@68 4867 return val;
jpayne@68 4868 }
jpayne@68 4869 if (is_unsigned) {
jpayne@68 4870 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 4871 if (unlikely(__Pyx_PyLong_IsNeg(x))) {
jpayne@68 4872 goto raise_neg_overflow;
jpayne@68 4873 } else if (__Pyx_PyLong_IsCompact(x)) {
jpayne@68 4874 __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
jpayne@68 4875 } else {
jpayne@68 4876 const digit* digits = __Pyx_PyLong_Digits(x);
jpayne@68 4877 assert(__Pyx_PyLong_DigitCount(x) > 1);
jpayne@68 4878 switch (__Pyx_PyLong_DigitCount(x)) {
jpayne@68 4879 case 2:
jpayne@68 4880 if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
jpayne@68 4881 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 4882 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4883 } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
jpayne@68 4884 return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
jpayne@68 4885 }
jpayne@68 4886 }
jpayne@68 4887 break;
jpayne@68 4888 case 3:
jpayne@68 4889 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
jpayne@68 4890 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 4891 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4892 } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
jpayne@68 4893 return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
jpayne@68 4894 }
jpayne@68 4895 }
jpayne@68 4896 break;
jpayne@68 4897 case 4:
jpayne@68 4898 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
jpayne@68 4899 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 4900 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4901 } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
jpayne@68 4902 return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
jpayne@68 4903 }
jpayne@68 4904 }
jpayne@68 4905 break;
jpayne@68 4906 }
jpayne@68 4907 }
jpayne@68 4908 #endif
jpayne@68 4909 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
jpayne@68 4910 if (unlikely(Py_SIZE(x) < 0)) {
jpayne@68 4911 goto raise_neg_overflow;
jpayne@68 4912 }
jpayne@68 4913 #else
jpayne@68 4914 {
jpayne@68 4915 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
jpayne@68 4916 if (unlikely(result < 0))
jpayne@68 4917 return (long) -1;
jpayne@68 4918 if (unlikely(result == 1))
jpayne@68 4919 goto raise_neg_overflow;
jpayne@68 4920 }
jpayne@68 4921 #endif
jpayne@68 4922 if ((sizeof(long) <= sizeof(unsigned long))) {
jpayne@68 4923 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
jpayne@68 4924 #ifdef HAVE_LONG_LONG
jpayne@68 4925 } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
jpayne@68 4926 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
jpayne@68 4927 #endif
jpayne@68 4928 }
jpayne@68 4929 } else {
jpayne@68 4930 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 4931 if (__Pyx_PyLong_IsCompact(x)) {
jpayne@68 4932 __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
jpayne@68 4933 } else {
jpayne@68 4934 const digit* digits = __Pyx_PyLong_Digits(x);
jpayne@68 4935 assert(__Pyx_PyLong_DigitCount(x) > 1);
jpayne@68 4936 switch (__Pyx_PyLong_SignedDigitCount(x)) {
jpayne@68 4937 case -2:
jpayne@68 4938 if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
jpayne@68 4939 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 4940 __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4941 } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 4942 return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4943 }
jpayne@68 4944 }
jpayne@68 4945 break;
jpayne@68 4946 case 2:
jpayne@68 4947 if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
jpayne@68 4948 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 4949 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4950 } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 4951 return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4952 }
jpayne@68 4953 }
jpayne@68 4954 break;
jpayne@68 4955 case -3:
jpayne@68 4956 if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 4957 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 4958 __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4959 } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 4960 return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4961 }
jpayne@68 4962 }
jpayne@68 4963 break;
jpayne@68 4964 case 3:
jpayne@68 4965 if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
jpayne@68 4966 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 4967 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4968 } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 4969 return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4970 }
jpayne@68 4971 }
jpayne@68 4972 break;
jpayne@68 4973 case -4:
jpayne@68 4974 if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 4975 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 4976 __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4977 } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
jpayne@68 4978 return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4979 }
jpayne@68 4980 }
jpayne@68 4981 break;
jpayne@68 4982 case 4:
jpayne@68 4983 if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
jpayne@68 4984 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 4985 __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 4986 } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
jpayne@68 4987 return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
jpayne@68 4988 }
jpayne@68 4989 }
jpayne@68 4990 break;
jpayne@68 4991 }
jpayne@68 4992 }
jpayne@68 4993 #endif
jpayne@68 4994 if ((sizeof(long) <= sizeof(long))) {
jpayne@68 4995 __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
jpayne@68 4996 #ifdef HAVE_LONG_LONG
jpayne@68 4997 } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
jpayne@68 4998 __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
jpayne@68 4999 #endif
jpayne@68 5000 }
jpayne@68 5001 }
jpayne@68 5002 {
jpayne@68 5003 long val;
jpayne@68 5004 int ret = -1;
jpayne@68 5005 #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 5006 Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
jpayne@68 5007 x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
jpayne@68 5008 if (unlikely(bytes_copied == -1)) {
jpayne@68 5009 } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
jpayne@68 5010 goto raise_overflow;
jpayne@68 5011 } else {
jpayne@68 5012 ret = 0;
jpayne@68 5013 }
jpayne@68 5014 #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
jpayne@68 5015 int one = 1; int is_little = (int)*(unsigned char *)&one;
jpayne@68 5016 unsigned char *bytes = (unsigned char *)&val;
jpayne@68 5017 ret = _PyLong_AsByteArray((PyLongObject *)x,
jpayne@68 5018 bytes, sizeof(val),
jpayne@68 5019 is_little, !is_unsigned);
jpayne@68 5020 #else
jpayne@68 5021 PyObject *v;
jpayne@68 5022 PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
jpayne@68 5023 int bits, remaining_bits, is_negative = 0;
jpayne@68 5024 int chunk_size = (sizeof(long) < 8) ? 30 : 62;
jpayne@68 5025 if (likely(PyLong_CheckExact(x))) {
jpayne@68 5026 v = __Pyx_NewRef(x);
jpayne@68 5027 } else {
jpayne@68 5028 v = PyNumber_Long(x);
jpayne@68 5029 if (unlikely(!v)) return (long) -1;
jpayne@68 5030 assert(PyLong_CheckExact(v));
jpayne@68 5031 }
jpayne@68 5032 {
jpayne@68 5033 int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
jpayne@68 5034 if (unlikely(result < 0)) {
jpayne@68 5035 Py_DECREF(v);
jpayne@68 5036 return (long) -1;
jpayne@68 5037 }
jpayne@68 5038 is_negative = result == 1;
jpayne@68 5039 }
jpayne@68 5040 if (is_unsigned && unlikely(is_negative)) {
jpayne@68 5041 Py_DECREF(v);
jpayne@68 5042 goto raise_neg_overflow;
jpayne@68 5043 } else if (is_negative) {
jpayne@68 5044 stepval = PyNumber_Invert(v);
jpayne@68 5045 Py_DECREF(v);
jpayne@68 5046 if (unlikely(!stepval))
jpayne@68 5047 return (long) -1;
jpayne@68 5048 } else {
jpayne@68 5049 stepval = v;
jpayne@68 5050 }
jpayne@68 5051 v = NULL;
jpayne@68 5052 val = (long) 0;
jpayne@68 5053 mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
jpayne@68 5054 shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
jpayne@68 5055 for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
jpayne@68 5056 PyObject *tmp, *digit;
jpayne@68 5057 long idigit;
jpayne@68 5058 digit = PyNumber_And(stepval, mask);
jpayne@68 5059 if (unlikely(!digit)) goto done;
jpayne@68 5060 idigit = PyLong_AsLong(digit);
jpayne@68 5061 Py_DECREF(digit);
jpayne@68 5062 if (unlikely(idigit < 0)) goto done;
jpayne@68 5063 val |= ((long) idigit) << bits;
jpayne@68 5064 tmp = PyNumber_Rshift(stepval, shift);
jpayne@68 5065 if (unlikely(!tmp)) goto done;
jpayne@68 5066 Py_DECREF(stepval); stepval = tmp;
jpayne@68 5067 }
jpayne@68 5068 Py_DECREF(shift); shift = NULL;
jpayne@68 5069 Py_DECREF(mask); mask = NULL;
jpayne@68 5070 {
jpayne@68 5071 long idigit = PyLong_AsLong(stepval);
jpayne@68 5072 if (unlikely(idigit < 0)) goto done;
jpayne@68 5073 remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
jpayne@68 5074 if (unlikely(idigit >= (1L << remaining_bits)))
jpayne@68 5075 goto raise_overflow;
jpayne@68 5076 val |= ((long) idigit) << bits;
jpayne@68 5077 }
jpayne@68 5078 if (!is_unsigned) {
jpayne@68 5079 if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
jpayne@68 5080 goto raise_overflow;
jpayne@68 5081 if (is_negative)
jpayne@68 5082 val = ~val;
jpayne@68 5083 }
jpayne@68 5084 ret = 0;
jpayne@68 5085 done:
jpayne@68 5086 Py_XDECREF(shift);
jpayne@68 5087 Py_XDECREF(mask);
jpayne@68 5088 Py_XDECREF(stepval);
jpayne@68 5089 #endif
jpayne@68 5090 if (unlikely(ret))
jpayne@68 5091 return (long) -1;
jpayne@68 5092 return val;
jpayne@68 5093 }
jpayne@68 5094 raise_overflow:
jpayne@68 5095 PyErr_SetString(PyExc_OverflowError,
jpayne@68 5096 "value too large to convert to long");
jpayne@68 5097 return (long) -1;
jpayne@68 5098 raise_neg_overflow:
jpayne@68 5099 PyErr_SetString(PyExc_OverflowError,
jpayne@68 5100 "can't convert negative value to long");
jpayne@68 5101 return (long) -1;
jpayne@68 5102 }
jpayne@68 5103
jpayne@68 5104 /* CIntFromPy */
jpayne@68 5105 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
jpayne@68 5106 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 5107 #pragma GCC diagnostic push
jpayne@68 5108 #pragma GCC diagnostic ignored "-Wconversion"
jpayne@68 5109 #endif
jpayne@68 5110 const int neg_one = (int) -1, const_zero = (int) 0;
jpayne@68 5111 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
jpayne@68 5112 #pragma GCC diagnostic pop
jpayne@68 5113 #endif
jpayne@68 5114 const int is_unsigned = neg_one > const_zero;
jpayne@68 5115 #if PY_MAJOR_VERSION < 3
jpayne@68 5116 if (likely(PyInt_Check(x))) {
jpayne@68 5117 if ((sizeof(int) < sizeof(long))) {
jpayne@68 5118 __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
jpayne@68 5119 } else {
jpayne@68 5120 long val = PyInt_AS_LONG(x);
jpayne@68 5121 if (is_unsigned && unlikely(val < 0)) {
jpayne@68 5122 goto raise_neg_overflow;
jpayne@68 5123 }
jpayne@68 5124 return (int) val;
jpayne@68 5125 }
jpayne@68 5126 }
jpayne@68 5127 #endif
jpayne@68 5128 if (unlikely(!PyLong_Check(x))) {
jpayne@68 5129 int val;
jpayne@68 5130 PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
jpayne@68 5131 if (!tmp) return (int) -1;
jpayne@68 5132 val = __Pyx_PyInt_As_int(tmp);
jpayne@68 5133 Py_DECREF(tmp);
jpayne@68 5134 return val;
jpayne@68 5135 }
jpayne@68 5136 if (is_unsigned) {
jpayne@68 5137 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 5138 if (unlikely(__Pyx_PyLong_IsNeg(x))) {
jpayne@68 5139 goto raise_neg_overflow;
jpayne@68 5140 } else if (__Pyx_PyLong_IsCompact(x)) {
jpayne@68 5141 __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
jpayne@68 5142 } else {
jpayne@68 5143 const digit* digits = __Pyx_PyLong_Digits(x);
jpayne@68 5144 assert(__Pyx_PyLong_DigitCount(x) > 1);
jpayne@68 5145 switch (__Pyx_PyLong_DigitCount(x)) {
jpayne@68 5146 case 2:
jpayne@68 5147 if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
jpayne@68 5148 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 5149 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5150 } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
jpayne@68 5151 return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
jpayne@68 5152 }
jpayne@68 5153 }
jpayne@68 5154 break;
jpayne@68 5155 case 3:
jpayne@68 5156 if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
jpayne@68 5157 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 5158 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5159 } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
jpayne@68 5160 return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
jpayne@68 5161 }
jpayne@68 5162 }
jpayne@68 5163 break;
jpayne@68 5164 case 4:
jpayne@68 5165 if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
jpayne@68 5166 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 5167 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5168 } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
jpayne@68 5169 return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
jpayne@68 5170 }
jpayne@68 5171 }
jpayne@68 5172 break;
jpayne@68 5173 }
jpayne@68 5174 }
jpayne@68 5175 #endif
jpayne@68 5176 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
jpayne@68 5177 if (unlikely(Py_SIZE(x) < 0)) {
jpayne@68 5178 goto raise_neg_overflow;
jpayne@68 5179 }
jpayne@68 5180 #else
jpayne@68 5181 {
jpayne@68 5182 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
jpayne@68 5183 if (unlikely(result < 0))
jpayne@68 5184 return (int) -1;
jpayne@68 5185 if (unlikely(result == 1))
jpayne@68 5186 goto raise_neg_overflow;
jpayne@68 5187 }
jpayne@68 5188 #endif
jpayne@68 5189 if ((sizeof(int) <= sizeof(unsigned long))) {
jpayne@68 5190 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
jpayne@68 5191 #ifdef HAVE_LONG_LONG
jpayne@68 5192 } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
jpayne@68 5193 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
jpayne@68 5194 #endif
jpayne@68 5195 }
jpayne@68 5196 } else {
jpayne@68 5197 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 5198 if (__Pyx_PyLong_IsCompact(x)) {
jpayne@68 5199 __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
jpayne@68 5200 } else {
jpayne@68 5201 const digit* digits = __Pyx_PyLong_Digits(x);
jpayne@68 5202 assert(__Pyx_PyLong_DigitCount(x) > 1);
jpayne@68 5203 switch (__Pyx_PyLong_SignedDigitCount(x)) {
jpayne@68 5204 case -2:
jpayne@68 5205 if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
jpayne@68 5206 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 5207 __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5208 } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 5209 return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5210 }
jpayne@68 5211 }
jpayne@68 5212 break;
jpayne@68 5213 case 2:
jpayne@68 5214 if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
jpayne@68 5215 if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
jpayne@68 5216 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5217 } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 5218 return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5219 }
jpayne@68 5220 }
jpayne@68 5221 break;
jpayne@68 5222 case -3:
jpayne@68 5223 if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
jpayne@68 5224 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 5225 __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5226 } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 5227 return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5228 }
jpayne@68 5229 }
jpayne@68 5230 break;
jpayne@68 5231 case 3:
jpayne@68 5232 if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
jpayne@68 5233 if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
jpayne@68 5234 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5235 } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 5236 return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5237 }
jpayne@68 5238 }
jpayne@68 5239 break;
jpayne@68 5240 case -4:
jpayne@68 5241 if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
jpayne@68 5242 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 5243 __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5244 } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
jpayne@68 5245 return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5246 }
jpayne@68 5247 }
jpayne@68 5248 break;
jpayne@68 5249 case 4:
jpayne@68 5250 if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
jpayne@68 5251 if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
jpayne@68 5252 __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
jpayne@68 5253 } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
jpayne@68 5254 return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
jpayne@68 5255 }
jpayne@68 5256 }
jpayne@68 5257 break;
jpayne@68 5258 }
jpayne@68 5259 }
jpayne@68 5260 #endif
jpayne@68 5261 if ((sizeof(int) <= sizeof(long))) {
jpayne@68 5262 __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
jpayne@68 5263 #ifdef HAVE_LONG_LONG
jpayne@68 5264 } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
jpayne@68 5265 __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
jpayne@68 5266 #endif
jpayne@68 5267 }
jpayne@68 5268 }
jpayne@68 5269 {
jpayne@68 5270 int val;
jpayne@68 5271 int ret = -1;
jpayne@68 5272 #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
jpayne@68 5273 Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
jpayne@68 5274 x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
jpayne@68 5275 if (unlikely(bytes_copied == -1)) {
jpayne@68 5276 } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
jpayne@68 5277 goto raise_overflow;
jpayne@68 5278 } else {
jpayne@68 5279 ret = 0;
jpayne@68 5280 }
jpayne@68 5281 #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
jpayne@68 5282 int one = 1; int is_little = (int)*(unsigned char *)&one;
jpayne@68 5283 unsigned char *bytes = (unsigned char *)&val;
jpayne@68 5284 ret = _PyLong_AsByteArray((PyLongObject *)x,
jpayne@68 5285 bytes, sizeof(val),
jpayne@68 5286 is_little, !is_unsigned);
jpayne@68 5287 #else
jpayne@68 5288 PyObject *v;
jpayne@68 5289 PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
jpayne@68 5290 int bits, remaining_bits, is_negative = 0;
jpayne@68 5291 int chunk_size = (sizeof(long) < 8) ? 30 : 62;
jpayne@68 5292 if (likely(PyLong_CheckExact(x))) {
jpayne@68 5293 v = __Pyx_NewRef(x);
jpayne@68 5294 } else {
jpayne@68 5295 v = PyNumber_Long(x);
jpayne@68 5296 if (unlikely(!v)) return (int) -1;
jpayne@68 5297 assert(PyLong_CheckExact(v));
jpayne@68 5298 }
jpayne@68 5299 {
jpayne@68 5300 int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
jpayne@68 5301 if (unlikely(result < 0)) {
jpayne@68 5302 Py_DECREF(v);
jpayne@68 5303 return (int) -1;
jpayne@68 5304 }
jpayne@68 5305 is_negative = result == 1;
jpayne@68 5306 }
jpayne@68 5307 if (is_unsigned && unlikely(is_negative)) {
jpayne@68 5308 Py_DECREF(v);
jpayne@68 5309 goto raise_neg_overflow;
jpayne@68 5310 } else if (is_negative) {
jpayne@68 5311 stepval = PyNumber_Invert(v);
jpayne@68 5312 Py_DECREF(v);
jpayne@68 5313 if (unlikely(!stepval))
jpayne@68 5314 return (int) -1;
jpayne@68 5315 } else {
jpayne@68 5316 stepval = v;
jpayne@68 5317 }
jpayne@68 5318 v = NULL;
jpayne@68 5319 val = (int) 0;
jpayne@68 5320 mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
jpayne@68 5321 shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
jpayne@68 5322 for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
jpayne@68 5323 PyObject *tmp, *digit;
jpayne@68 5324 long idigit;
jpayne@68 5325 digit = PyNumber_And(stepval, mask);
jpayne@68 5326 if (unlikely(!digit)) goto done;
jpayne@68 5327 idigit = PyLong_AsLong(digit);
jpayne@68 5328 Py_DECREF(digit);
jpayne@68 5329 if (unlikely(idigit < 0)) goto done;
jpayne@68 5330 val |= ((int) idigit) << bits;
jpayne@68 5331 tmp = PyNumber_Rshift(stepval, shift);
jpayne@68 5332 if (unlikely(!tmp)) goto done;
jpayne@68 5333 Py_DECREF(stepval); stepval = tmp;
jpayne@68 5334 }
jpayne@68 5335 Py_DECREF(shift); shift = NULL;
jpayne@68 5336 Py_DECREF(mask); mask = NULL;
jpayne@68 5337 {
jpayne@68 5338 long idigit = PyLong_AsLong(stepval);
jpayne@68 5339 if (unlikely(idigit < 0)) goto done;
jpayne@68 5340 remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
jpayne@68 5341 if (unlikely(idigit >= (1L << remaining_bits)))
jpayne@68 5342 goto raise_overflow;
jpayne@68 5343 val |= ((int) idigit) << bits;
jpayne@68 5344 }
jpayne@68 5345 if (!is_unsigned) {
jpayne@68 5346 if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
jpayne@68 5347 goto raise_overflow;
jpayne@68 5348 if (is_negative)
jpayne@68 5349 val = ~val;
jpayne@68 5350 }
jpayne@68 5351 ret = 0;
jpayne@68 5352 done:
jpayne@68 5353 Py_XDECREF(shift);
jpayne@68 5354 Py_XDECREF(mask);
jpayne@68 5355 Py_XDECREF(stepval);
jpayne@68 5356 #endif
jpayne@68 5357 if (unlikely(ret))
jpayne@68 5358 return (int) -1;
jpayne@68 5359 return val;
jpayne@68 5360 }
jpayne@68 5361 raise_overflow:
jpayne@68 5362 PyErr_SetString(PyExc_OverflowError,
jpayne@68 5363 "value too large to convert to int");
jpayne@68 5364 return (int) -1;
jpayne@68 5365 raise_neg_overflow:
jpayne@68 5366 PyErr_SetString(PyExc_OverflowError,
jpayne@68 5367 "can't convert negative value to int");
jpayne@68 5368 return (int) -1;
jpayne@68 5369 }
jpayne@68 5370
jpayne@68 5371 /* FastTypeChecks */
jpayne@68 5372 #if CYTHON_COMPILING_IN_CPYTHON
jpayne@68 5373 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
jpayne@68 5374 while (a) {
jpayne@68 5375 a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
jpayne@68 5376 if (a == b)
jpayne@68 5377 return 1;
jpayne@68 5378 }
jpayne@68 5379 return b == &PyBaseObject_Type;
jpayne@68 5380 }
jpayne@68 5381 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
jpayne@68 5382 PyObject *mro;
jpayne@68 5383 if (a == b) return 1;
jpayne@68 5384 mro = a->tp_mro;
jpayne@68 5385 if (likely(mro)) {
jpayne@68 5386 Py_ssize_t i, n;
jpayne@68 5387 n = PyTuple_GET_SIZE(mro);
jpayne@68 5388 for (i = 0; i < n; i++) {
jpayne@68 5389 if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
jpayne@68 5390 return 1;
jpayne@68 5391 }
jpayne@68 5392 return 0;
jpayne@68 5393 }
jpayne@68 5394 return __Pyx_InBases(a, b);
jpayne@68 5395 }
jpayne@68 5396 static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
jpayne@68 5397 PyObject *mro;
jpayne@68 5398 if (cls == a || cls == b) return 1;
jpayne@68 5399 mro = cls->tp_mro;
jpayne@68 5400 if (likely(mro)) {
jpayne@68 5401 Py_ssize_t i, n;
jpayne@68 5402 n = PyTuple_GET_SIZE(mro);
jpayne@68 5403 for (i = 0; i < n; i++) {
jpayne@68 5404 PyObject *base = PyTuple_GET_ITEM(mro, i);
jpayne@68 5405 if (base == (PyObject *)a || base == (PyObject *)b)
jpayne@68 5406 return 1;
jpayne@68 5407 }
jpayne@68 5408 return 0;
jpayne@68 5409 }
jpayne@68 5410 return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
jpayne@68 5411 }
jpayne@68 5412 #if PY_MAJOR_VERSION == 2
jpayne@68 5413 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
jpayne@68 5414 PyObject *exception, *value, *tb;
jpayne@68 5415 int res;
jpayne@68 5416 __Pyx_PyThreadState_declare
jpayne@68 5417 __Pyx_PyThreadState_assign
jpayne@68 5418 __Pyx_ErrFetch(&exception, &value, &tb);
jpayne@68 5419 res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
jpayne@68 5420 if (unlikely(res == -1)) {
jpayne@68 5421 PyErr_WriteUnraisable(err);
jpayne@68 5422 res = 0;
jpayne@68 5423 }
jpayne@68 5424 if (!res) {
jpayne@68 5425 res = PyObject_IsSubclass(err, exc_type2);
jpayne@68 5426 if (unlikely(res == -1)) {
jpayne@68 5427 PyErr_WriteUnraisable(err);
jpayne@68 5428 res = 0;
jpayne@68 5429 }
jpayne@68 5430 }
jpayne@68 5431 __Pyx_ErrRestore(exception, value, tb);
jpayne@68 5432 return res;
jpayne@68 5433 }
jpayne@68 5434 #else
jpayne@68 5435 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
jpayne@68 5436 if (exc_type1) {
jpayne@68 5437 return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
jpayne@68 5438 } else {
jpayne@68 5439 return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
jpayne@68 5440 }
jpayne@68 5441 }
jpayne@68 5442 #endif
jpayne@68 5443 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
jpayne@68 5444 Py_ssize_t i, n;
jpayne@68 5445 assert(PyExceptionClass_Check(exc_type));
jpayne@68 5446 n = PyTuple_GET_SIZE(tuple);
jpayne@68 5447 #if PY_MAJOR_VERSION >= 3
jpayne@68 5448 for (i=0; i<n; i++) {
jpayne@68 5449 if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
jpayne@68 5450 }
jpayne@68 5451 #endif
jpayne@68 5452 for (i=0; i<n; i++) {
jpayne@68 5453 PyObject *t = PyTuple_GET_ITEM(tuple, i);
jpayne@68 5454 #if PY_MAJOR_VERSION < 3
jpayne@68 5455 if (likely(exc_type == t)) return 1;
jpayne@68 5456 #endif
jpayne@68 5457 if (likely(PyExceptionClass_Check(t))) {
jpayne@68 5458 if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
jpayne@68 5459 } else {
jpayne@68 5460 }
jpayne@68 5461 }
jpayne@68 5462 return 0;
jpayne@68 5463 }
jpayne@68 5464 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
jpayne@68 5465 if (likely(err == exc_type)) return 1;
jpayne@68 5466 if (likely(PyExceptionClass_Check(err))) {
jpayne@68 5467 if (likely(PyExceptionClass_Check(exc_type))) {
jpayne@68 5468 return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
jpayne@68 5469 } else if (likely(PyTuple_Check(exc_type))) {
jpayne@68 5470 return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
jpayne@68 5471 } else {
jpayne@68 5472 }
jpayne@68 5473 }
jpayne@68 5474 return PyErr_GivenExceptionMatches(err, exc_type);
jpayne@68 5475 }
jpayne@68 5476 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
jpayne@68 5477 assert(PyExceptionClass_Check(exc_type1));
jpayne@68 5478 assert(PyExceptionClass_Check(exc_type2));
jpayne@68 5479 if (likely(err == exc_type1 || err == exc_type2)) return 1;
jpayne@68 5480 if (likely(PyExceptionClass_Check(err))) {
jpayne@68 5481 return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
jpayne@68 5482 }
jpayne@68 5483 return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
jpayne@68 5484 }
jpayne@68 5485 #endif
jpayne@68 5486
jpayne@68 5487 /* CheckBinaryVersion */
jpayne@68 5488 static unsigned long __Pyx_get_runtime_version(void) {
jpayne@68 5489 #if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
jpayne@68 5490 return Py_Version & ~0xFFUL;
jpayne@68 5491 #else
jpayne@68 5492 const char* rt_version = Py_GetVersion();
jpayne@68 5493 unsigned long version = 0;
jpayne@68 5494 unsigned long factor = 0x01000000UL;
jpayne@68 5495 unsigned int digit = 0;
jpayne@68 5496 int i = 0;
jpayne@68 5497 while (factor) {
jpayne@68 5498 while ('0' <= rt_version[i] && rt_version[i] <= '9') {
jpayne@68 5499 digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
jpayne@68 5500 ++i;
jpayne@68 5501 }
jpayne@68 5502 version += factor * digit;
jpayne@68 5503 if (rt_version[i] != '.')
jpayne@68 5504 break;
jpayne@68 5505 digit = 0;
jpayne@68 5506 factor >>= 8;
jpayne@68 5507 ++i;
jpayne@68 5508 }
jpayne@68 5509 return version;
jpayne@68 5510 #endif
jpayne@68 5511 }
jpayne@68 5512 static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
jpayne@68 5513 const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
jpayne@68 5514 if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
jpayne@68 5515 return 0;
jpayne@68 5516 if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
jpayne@68 5517 return 1;
jpayne@68 5518 {
jpayne@68 5519 char message[200];
jpayne@68 5520 PyOS_snprintf(message, sizeof(message),
jpayne@68 5521 "compile time Python version %d.%d "
jpayne@68 5522 "of module '%.100s' "
jpayne@68 5523 "%s "
jpayne@68 5524 "runtime version %d.%d",
jpayne@68 5525 (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
jpayne@68 5526 __Pyx_MODULE_NAME,
jpayne@68 5527 (allow_newer) ? "was newer than" : "does not match",
jpayne@68 5528 (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
jpayne@68 5529 );
jpayne@68 5530 return PyErr_WarnEx(NULL, message, 1);
jpayne@68 5531 }
jpayne@68 5532 }
jpayne@68 5533
jpayne@68 5534 /* InitStrings */
jpayne@68 5535 #if PY_MAJOR_VERSION >= 3
jpayne@68 5536 static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
jpayne@68 5537 if (t.is_unicode | t.is_str) {
jpayne@68 5538 if (t.intern) {
jpayne@68 5539 *str = PyUnicode_InternFromString(t.s);
jpayne@68 5540 } else if (t.encoding) {
jpayne@68 5541 *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
jpayne@68 5542 } else {
jpayne@68 5543 *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
jpayne@68 5544 }
jpayne@68 5545 } else {
jpayne@68 5546 *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
jpayne@68 5547 }
jpayne@68 5548 if (!*str)
jpayne@68 5549 return -1;
jpayne@68 5550 if (PyObject_Hash(*str) == -1)
jpayne@68 5551 return -1;
jpayne@68 5552 return 0;
jpayne@68 5553 }
jpayne@68 5554 #endif
jpayne@68 5555 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
jpayne@68 5556 while (t->p) {
jpayne@68 5557 #if PY_MAJOR_VERSION >= 3
jpayne@68 5558 __Pyx_InitString(*t, t->p);
jpayne@68 5559 #else
jpayne@68 5560 if (t->is_unicode) {
jpayne@68 5561 *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
jpayne@68 5562 } else if (t->intern) {
jpayne@68 5563 *t->p = PyString_InternFromString(t->s);
jpayne@68 5564 } else {
jpayne@68 5565 *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
jpayne@68 5566 }
jpayne@68 5567 if (!*t->p)
jpayne@68 5568 return -1;
jpayne@68 5569 if (PyObject_Hash(*t->p) == -1)
jpayne@68 5570 return -1;
jpayne@68 5571 #endif
jpayne@68 5572 ++t;
jpayne@68 5573 }
jpayne@68 5574 return 0;
jpayne@68 5575 }
jpayne@68 5576
jpayne@68 5577 #include <string.h>
jpayne@68 5578 static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
jpayne@68 5579 size_t len = strlen(s);
jpayne@68 5580 if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
jpayne@68 5581 PyErr_SetString(PyExc_OverflowError, "byte string is too long");
jpayne@68 5582 return -1;
jpayne@68 5583 }
jpayne@68 5584 return (Py_ssize_t) len;
jpayne@68 5585 }
jpayne@68 5586 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
jpayne@68 5587 Py_ssize_t len = __Pyx_ssize_strlen(c_str);
jpayne@68 5588 if (unlikely(len < 0)) return NULL;
jpayne@68 5589 return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
jpayne@68 5590 }
jpayne@68 5591 static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
jpayne@68 5592 Py_ssize_t len = __Pyx_ssize_strlen(c_str);
jpayne@68 5593 if (unlikely(len < 0)) return NULL;
jpayne@68 5594 return PyByteArray_FromStringAndSize(c_str, len);
jpayne@68 5595 }
jpayne@68 5596 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
jpayne@68 5597 Py_ssize_t ignore;
jpayne@68 5598 return __Pyx_PyObject_AsStringAndSize(o, &ignore);
jpayne@68 5599 }
jpayne@68 5600 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
jpayne@68 5601 #if !CYTHON_PEP393_ENABLED
jpayne@68 5602 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
jpayne@68 5603 char* defenc_c;
jpayne@68 5604 PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
jpayne@68 5605 if (!defenc) return NULL;
jpayne@68 5606 defenc_c = PyBytes_AS_STRING(defenc);
jpayne@68 5607 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
jpayne@68 5608 {
jpayne@68 5609 char* end = defenc_c + PyBytes_GET_SIZE(defenc);
jpayne@68 5610 char* c;
jpayne@68 5611 for (c = defenc_c; c < end; c++) {
jpayne@68 5612 if ((unsigned char) (*c) >= 128) {
jpayne@68 5613 PyUnicode_AsASCIIString(o);
jpayne@68 5614 return NULL;
jpayne@68 5615 }
jpayne@68 5616 }
jpayne@68 5617 }
jpayne@68 5618 #endif
jpayne@68 5619 *length = PyBytes_GET_SIZE(defenc);
jpayne@68 5620 return defenc_c;
jpayne@68 5621 }
jpayne@68 5622 #else
jpayne@68 5623 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
jpayne@68 5624 if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
jpayne@68 5625 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
jpayne@68 5626 if (likely(PyUnicode_IS_ASCII(o))) {
jpayne@68 5627 *length = PyUnicode_GET_LENGTH(o);
jpayne@68 5628 return PyUnicode_AsUTF8(o);
jpayne@68 5629 } else {
jpayne@68 5630 PyUnicode_AsASCIIString(o);
jpayne@68 5631 return NULL;
jpayne@68 5632 }
jpayne@68 5633 #else
jpayne@68 5634 return PyUnicode_AsUTF8AndSize(o, length);
jpayne@68 5635 #endif
jpayne@68 5636 }
jpayne@68 5637 #endif
jpayne@68 5638 #endif
jpayne@68 5639 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
jpayne@68 5640 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
jpayne@68 5641 if (
jpayne@68 5642 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
jpayne@68 5643 __Pyx_sys_getdefaultencoding_not_ascii &&
jpayne@68 5644 #endif
jpayne@68 5645 PyUnicode_Check(o)) {
jpayne@68 5646 return __Pyx_PyUnicode_AsStringAndSize(o, length);
jpayne@68 5647 } else
jpayne@68 5648 #endif
jpayne@68 5649 #if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
jpayne@68 5650 if (PyByteArray_Check(o)) {
jpayne@68 5651 *length = PyByteArray_GET_SIZE(o);
jpayne@68 5652 return PyByteArray_AS_STRING(o);
jpayne@68 5653 } else
jpayne@68 5654 #endif
jpayne@68 5655 {
jpayne@68 5656 char* result;
jpayne@68 5657 int r = PyBytes_AsStringAndSize(o, &result, length);
jpayne@68 5658 if (unlikely(r < 0)) {
jpayne@68 5659 return NULL;
jpayne@68 5660 } else {
jpayne@68 5661 return result;
jpayne@68 5662 }
jpayne@68 5663 }
jpayne@68 5664 }
jpayne@68 5665 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
jpayne@68 5666 int is_true = x == Py_True;
jpayne@68 5667 if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
jpayne@68 5668 else return PyObject_IsTrue(x);
jpayne@68 5669 }
jpayne@68 5670 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
jpayne@68 5671 int retval;
jpayne@68 5672 if (unlikely(!x)) return -1;
jpayne@68 5673 retval = __Pyx_PyObject_IsTrue(x);
jpayne@68 5674 Py_DECREF(x);
jpayne@68 5675 return retval;
jpayne@68 5676 }
jpayne@68 5677 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
jpayne@68 5678 __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
jpayne@68 5679 #if PY_MAJOR_VERSION >= 3
jpayne@68 5680 if (PyLong_Check(result)) {
jpayne@68 5681 if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
jpayne@68 5682 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). "
jpayne@68 5683 "The ability to return an instance of a strict subclass of int is deprecated, "
jpayne@68 5684 "and may be removed in a future version of Python.",
jpayne@68 5685 result_type_name)) {
jpayne@68 5686 __Pyx_DECREF_TypeName(result_type_name);
jpayne@68 5687 Py_DECREF(result);
jpayne@68 5688 return NULL;
jpayne@68 5689 }
jpayne@68 5690 __Pyx_DECREF_TypeName(result_type_name);
jpayne@68 5691 return result;
jpayne@68 5692 }
jpayne@68 5693 #endif
jpayne@68 5694 PyErr_Format(PyExc_TypeError,
jpayne@68 5695 "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
jpayne@68 5696 type_name, type_name, result_type_name);
jpayne@68 5697 __Pyx_DECREF_TypeName(result_type_name);
jpayne@68 5698 Py_DECREF(result);
jpayne@68 5699 return NULL;
jpayne@68 5700 }
jpayne@68 5701 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
jpayne@68 5702 #if CYTHON_USE_TYPE_SLOTS
jpayne@68 5703 PyNumberMethods *m;
jpayne@68 5704 #endif
jpayne@68 5705 const char *name = NULL;
jpayne@68 5706 PyObject *res = NULL;
jpayne@68 5707 #if PY_MAJOR_VERSION < 3
jpayne@68 5708 if (likely(PyInt_Check(x) || PyLong_Check(x)))
jpayne@68 5709 #else
jpayne@68 5710 if (likely(PyLong_Check(x)))
jpayne@68 5711 #endif
jpayne@68 5712 return __Pyx_NewRef(x);
jpayne@68 5713 #if CYTHON_USE_TYPE_SLOTS
jpayne@68 5714 m = Py_TYPE(x)->tp_as_number;
jpayne@68 5715 #if PY_MAJOR_VERSION < 3
jpayne@68 5716 if (m && m->nb_int) {
jpayne@68 5717 name = "int";
jpayne@68 5718 res = m->nb_int(x);
jpayne@68 5719 }
jpayne@68 5720 else if (m && m->nb_long) {
jpayne@68 5721 name = "long";
jpayne@68 5722 res = m->nb_long(x);
jpayne@68 5723 }
jpayne@68 5724 #else
jpayne@68 5725 if (likely(m && m->nb_int)) {
jpayne@68 5726 name = "int";
jpayne@68 5727 res = m->nb_int(x);
jpayne@68 5728 }
jpayne@68 5729 #endif
jpayne@68 5730 #else
jpayne@68 5731 if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
jpayne@68 5732 res = PyNumber_Int(x);
jpayne@68 5733 }
jpayne@68 5734 #endif
jpayne@68 5735 if (likely(res)) {
jpayne@68 5736 #if PY_MAJOR_VERSION < 3
jpayne@68 5737 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
jpayne@68 5738 #else
jpayne@68 5739 if (unlikely(!PyLong_CheckExact(res))) {
jpayne@68 5740 #endif
jpayne@68 5741 return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
jpayne@68 5742 }
jpayne@68 5743 }
jpayne@68 5744 else if (!PyErr_Occurred()) {
jpayne@68 5745 PyErr_SetString(PyExc_TypeError,
jpayne@68 5746 "an integer is required");
jpayne@68 5747 }
jpayne@68 5748 return res;
jpayne@68 5749 }
jpayne@68 5750 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
jpayne@68 5751 Py_ssize_t ival;
jpayne@68 5752 PyObject *x;
jpayne@68 5753 #if PY_MAJOR_VERSION < 3
jpayne@68 5754 if (likely(PyInt_CheckExact(b))) {
jpayne@68 5755 if (sizeof(Py_ssize_t) >= sizeof(long))
jpayne@68 5756 return PyInt_AS_LONG(b);
jpayne@68 5757 else
jpayne@68 5758 return PyInt_AsSsize_t(b);
jpayne@68 5759 }
jpayne@68 5760 #endif
jpayne@68 5761 if (likely(PyLong_CheckExact(b))) {
jpayne@68 5762 #if CYTHON_USE_PYLONG_INTERNALS
jpayne@68 5763 if (likely(__Pyx_PyLong_IsCompact(b))) {
jpayne@68 5764 return __Pyx_PyLong_CompactValue(b);
jpayne@68 5765 } else {
jpayne@68 5766 const digit* digits = __Pyx_PyLong_Digits(b);
jpayne@68 5767 const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
jpayne@68 5768 switch (size) {
jpayne@68 5769 case 2:
jpayne@68 5770 if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
jpayne@68 5771 return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5772 }
jpayne@68 5773 break;
jpayne@68 5774 case -2:
jpayne@68 5775 if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
jpayne@68 5776 return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5777 }
jpayne@68 5778 break;
jpayne@68 5779 case 3:
jpayne@68 5780 if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
jpayne@68 5781 return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5782 }
jpayne@68 5783 break;
jpayne@68 5784 case -3:
jpayne@68 5785 if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
jpayne@68 5786 return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5787 }
jpayne@68 5788 break;
jpayne@68 5789 case 4:
jpayne@68 5790 if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
jpayne@68 5791 return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5792 }
jpayne@68 5793 break;
jpayne@68 5794 case -4:
jpayne@68 5795 if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
jpayne@68 5796 return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
jpayne@68 5797 }
jpayne@68 5798 break;
jpayne@68 5799 }
jpayne@68 5800 }
jpayne@68 5801 #endif
jpayne@68 5802 return PyLong_AsSsize_t(b);
jpayne@68 5803 }
jpayne@68 5804 x = PyNumber_Index(b);
jpayne@68 5805 if (!x) return -1;
jpayne@68 5806 ival = PyInt_AsSsize_t(x);
jpayne@68 5807 Py_DECREF(x);
jpayne@68 5808 return ival;
jpayne@68 5809 }
jpayne@68 5810 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
jpayne@68 5811 if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
jpayne@68 5812 return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
jpayne@68 5813 #if PY_MAJOR_VERSION < 3
jpayne@68 5814 } else if (likely(PyInt_CheckExact(o))) {
jpayne@68 5815 return PyInt_AS_LONG(o);
jpayne@68 5816 #endif
jpayne@68 5817 } else {
jpayne@68 5818 Py_ssize_t ival;
jpayne@68 5819 PyObject *x;
jpayne@68 5820 x = PyNumber_Index(o);
jpayne@68 5821 if (!x) return -1;
jpayne@68 5822 ival = PyInt_AsLong(x);
jpayne@68 5823 Py_DECREF(x);
jpayne@68 5824 return ival;
jpayne@68 5825 }
jpayne@68 5826 }
jpayne@68 5827 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
jpayne@68 5828 return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
jpayne@68 5829 }
jpayne@68 5830 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
jpayne@68 5831 return PyInt_FromSize_t(ival);
jpayne@68 5832 }
jpayne@68 5833
jpayne@68 5834
jpayne@68 5835 /* #### Code section: utility_code_pragmas_end ### */
jpayne@68 5836 #ifdef _MSC_VER
jpayne@68 5837 #pragma warning( pop )
jpayne@68 5838 #endif
jpayne@68 5839
jpayne@68 5840
jpayne@68 5841
jpayne@68 5842 /* #### Code section: end ### */
jpayne@68 5843 #endif /* Py_PYTHON_H */