annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/python3.8/site-packages/pysam/libcsamtools.c @ 69:33d812a61356

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