Imported Upstream version 0.7
[pysam.git] / pysam / TabProxies.c
1 /* Generated by Cython 0.16 on Tue Nov 20 16:56:59 2012 */
2
3 #define PY_SSIZE_T_CLEAN
4 #include "Python.h"
5 #ifndef Py_PYTHON_H
6     #error Python headers needed to compile C extensions, please install development version of Python.
7 #elif PY_VERSION_HEX < 0x02040000
8     #error Cython requires Python 2.4+.
9 #else
10 #include <stddef.h> /* For offsetof */
11 #ifndef offsetof
12 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
13 #endif
14
15 #if !defined(WIN32) && !defined(MS_WINDOWS)
16   #ifndef __stdcall
17     #define __stdcall
18   #endif
19   #ifndef __cdecl
20     #define __cdecl
21   #endif
22   #ifndef __fastcall
23     #define __fastcall
24   #endif
25 #endif
26
27 #ifndef DL_IMPORT
28   #define DL_IMPORT(t) t
29 #endif
30 #ifndef DL_EXPORT
31   #define DL_EXPORT(t) t
32 #endif
33
34 #ifndef PY_LONG_LONG
35   #define PY_LONG_LONG LONG_LONG
36 #endif
37
38 #ifndef Py_HUGE_VAL
39   #define Py_HUGE_VAL HUGE_VAL
40 #endif
41
42 #ifdef PYPY_VERSION
43 #define CYTHON_COMPILING_IN_PYPY 1
44 #define CYTHON_COMPILING_IN_CPYTHON 0
45 #else
46 #define CYTHON_COMPILING_IN_PYPY 0
47 #define CYTHON_COMPILING_IN_CPYTHON 1
48 #endif
49
50 #if CYTHON_COMPILING_IN_PYPY
51   #define __Pyx_PyCFunction_Call PyObject_Call
52 #else
53   #define __Pyx_PyCFunction_Call PyCFunction_Call
54 #endif
55
56 #if PY_VERSION_HEX < 0x02050000
57   typedef int Py_ssize_t;
58   #define PY_SSIZE_T_MAX INT_MAX
59   #define PY_SSIZE_T_MIN INT_MIN
60   #define PY_FORMAT_SIZE_T ""
61   #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
62   #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
63   #define PyNumber_Index(o)    PyNumber_Int(o)
64   #define PyIndex_Check(o)     PyNumber_Check(o)
65   #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
66   #define __PYX_BUILD_PY_SSIZE_T "i"
67 #else
68   #define __PYX_BUILD_PY_SSIZE_T "n"
69 #endif
70
71 #if PY_VERSION_HEX < 0x02060000
72   #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
73   #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
74   #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
75   #define PyVarObject_HEAD_INIT(type, size) \
76           PyObject_HEAD_INIT(type) size,
77   #define PyType_Modified(t)
78
79   typedef struct {
80      void *buf;
81      PyObject *obj;
82      Py_ssize_t len;
83      Py_ssize_t itemsize;
84      int readonly;
85      int ndim;
86      char *format;
87      Py_ssize_t *shape;
88      Py_ssize_t *strides;
89      Py_ssize_t *suboffsets;
90      void *internal;
91   } Py_buffer;
92
93   #define PyBUF_SIMPLE 0
94   #define PyBUF_WRITABLE 0x0001
95   #define PyBUF_FORMAT 0x0004
96   #define PyBUF_ND 0x0008
97   #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
98   #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
99   #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
100   #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
101   #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
102   #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
103   #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
104
105   typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
106   typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
107 #endif
108
109 #if PY_MAJOR_VERSION < 3
110   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
111   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
112           PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
113 #else
114   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
115   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
116           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
117 #endif
118
119 #if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
120   #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
121 #endif
122
123 #if PY_MAJOR_VERSION >= 3
124   #define Py_TPFLAGS_CHECKTYPES 0
125   #define Py_TPFLAGS_HAVE_INDEX 0
126 #endif
127
128 #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
129   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
130 #endif
131
132
133 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_GET_LENGTH)
134   #define CYTHON_PEP393_ENABLED 1
135   #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
136   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
137 #else
138   #define CYTHON_PEP393_ENABLED 0
139   #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
140   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
141 #endif
142
143 #if PY_MAJOR_VERSION >= 3
144   #define PyBaseString_Type            PyUnicode_Type
145   #define PyStringObject               PyUnicodeObject
146   #define PyString_Type                PyUnicode_Type
147   #define PyString_Check               PyUnicode_Check
148   #define PyString_CheckExact          PyUnicode_CheckExact
149 #endif
150
151 #if PY_VERSION_HEX < 0x02060000
152   #define PyBytesObject                PyStringObject
153   #define PyBytes_Type                 PyString_Type
154   #define PyBytes_Check                PyString_Check
155   #define PyBytes_CheckExact           PyString_CheckExact
156   #define PyBytes_FromString           PyString_FromString
157   #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
158   #define PyBytes_FromFormat           PyString_FromFormat
159   #define PyBytes_DecodeEscape         PyString_DecodeEscape
160   #define PyBytes_AsString             PyString_AsString
161   #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
162   #define PyBytes_Size                 PyString_Size
163   #define PyBytes_AS_STRING            PyString_AS_STRING
164   #define PyBytes_GET_SIZE             PyString_GET_SIZE
165   #define PyBytes_Repr                 PyString_Repr
166   #define PyBytes_Concat               PyString_Concat
167   #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
168 #endif
169
170 #if PY_VERSION_HEX < 0x02060000
171   #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
172   #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
173 #endif
174 #ifndef PySet_CheckExact
175   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
176 #endif
177
178 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
179
180 #if PY_MAJOR_VERSION >= 3
181   #define PyIntObject                  PyLongObject
182   #define PyInt_Type                   PyLong_Type
183   #define PyInt_Check(op)              PyLong_Check(op)
184   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
185   #define PyInt_FromString             PyLong_FromString
186   #define PyInt_FromUnicode            PyLong_FromUnicode
187   #define PyInt_FromLong               PyLong_FromLong
188   #define PyInt_FromSize_t             PyLong_FromSize_t
189   #define PyInt_FromSsize_t            PyLong_FromSsize_t
190   #define PyInt_AsLong                 PyLong_AsLong
191   #define PyInt_AS_LONG                PyLong_AS_LONG
192   #define PyInt_AsSsize_t              PyLong_AsSsize_t
193   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
194   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
195 #endif
196
197 #if PY_MAJOR_VERSION >= 3
198   #define PyBoolObject                 PyLongObject
199 #endif
200
201 #if PY_VERSION_HEX < 0x03020000
202   typedef long Py_hash_t;
203   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
204   #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
205 #else
206   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
207   #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
208 #endif
209
210 #if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
211   #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
212   #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
213   #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
214 #else
215   #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
216         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
217         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
218             (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
219   #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
220         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
221         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
222             (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
223   #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
224         (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
225         (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
226             (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
227 #endif
228
229 #if PY_MAJOR_VERSION >= 3
230   #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
231 #endif
232
233 #if PY_VERSION_HEX < 0x02050000
234   #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
235   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
236   #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
237 #else
238   #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
239   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
240   #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
241 #endif
242
243 #if PY_VERSION_HEX < 0x02050000
244   #define __Pyx_NAMESTR(n) ((char *)(n))
245   #define __Pyx_DOCSTR(n)  ((char *)(n))
246 #else
247   #define __Pyx_NAMESTR(n) (n)
248   #define __Pyx_DOCSTR(n)  (n)
249 #endif
250
251 #if PY_MAJOR_VERSION >= 3
252   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
253   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
254 #else
255   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
256   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
257 #endif
258
259 #ifndef __PYX_EXTERN_C
260   #ifdef __cplusplus
261     #define __PYX_EXTERN_C extern "C"
262   #else
263     #define __PYX_EXTERN_C extern
264   #endif
265 #endif
266
267 #if defined(WIN32) || defined(MS_WINDOWS)
268 #define _USE_MATH_DEFINES
269 #endif
270 #include <math.h>
271 #define __PYX_HAVE__TabProxies
272 #define __PYX_HAVE_API__TabProxies
273 #include "stdlib.h"
274 #include "string.h"
275 #include "stdint.h"
276 #include "stdio.h"
277 #include "pythread.h"
278 #ifdef _OPENMP
279 #include <omp.h>
280 #endif /* _OPENMP */
281
282 #ifdef PYREX_WITHOUT_ASSERTIONS
283 #define CYTHON_WITHOUT_ASSERTIONS
284 #endif
285
286
287 /* inline attribute */
288 #ifndef CYTHON_INLINE
289   #if defined(__GNUC__)
290     #define CYTHON_INLINE __inline__
291   #elif defined(_MSC_VER)
292     #define CYTHON_INLINE __inline
293   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
294     #define CYTHON_INLINE inline
295   #else
296     #define CYTHON_INLINE
297   #endif
298 #endif
299
300 /* unused attribute */
301 #ifndef CYTHON_UNUSED
302 # if defined(__GNUC__)
303 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
304 #     define CYTHON_UNUSED __attribute__ ((__unused__))
305 #   else
306 #     define CYTHON_UNUSED
307 #   endif
308 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
309 #   define CYTHON_UNUSED __attribute__ ((__unused__))
310 # else
311 #   define CYTHON_UNUSED
312 # endif
313 #endif
314
315 typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
316
317
318 /* Type Conversion Predeclarations */
319
320 #define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
321 #define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
322
323 #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
324 #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
325 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
326 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
327
328 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
329 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
330 static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
331
332 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
333 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
334
335 #ifdef __GNUC__
336   /* Test for GCC > 2.95 */
337   #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
338     #define likely(x)   __builtin_expect(!!(x), 1)
339     #define unlikely(x) __builtin_expect(!!(x), 0)
340   #else /* __GNUC__ > 2 ... */
341     #define likely(x)   (x)
342     #define unlikely(x) (x)
343   #endif /* __GNUC__ > 2 ... */
344 #else /* __GNUC__ */
345   #define likely(x)   (x)
346   #define unlikely(x) (x)
347 #endif /* __GNUC__ */
348     
349 static PyObject *__pyx_m;
350 static PyObject *__pyx_b;
351 static PyObject *__pyx_empty_tuple;
352 static PyObject *__pyx_empty_bytes;
353 static int __pyx_lineno;
354 static int __pyx_clineno = 0;
355 static const char * __pyx_cfilenm= __FILE__;
356 static const char *__pyx_filename;
357
358
359 static const char *__pyx_f[] = {
360   "TabProxies.pyx",
361   "bool.pxd",
362   "complex.pxd",
363 };
364
365 /*--- Type declarations ---*/
366 struct __pyx_obj_10TabProxies_TupleProxy;
367 struct __pyx_obj_10TabProxies_NamedTupleProxy;
368 struct __pyx_obj_10TabProxies_VCFProxy;
369 struct __pyx_obj_10TabProxies_GTFProxy;
370 struct __pyx_obj_10TabProxies_BedProxy;
371
372 /* "TabProxies.pxd":41
373  *   ctypedef int uint64_t
374  * 
375  * cdef class TupleProxy:             # <<<<<<<<<<<<<<
376  * 
377  *     cdef:
378  */
379 struct __pyx_obj_10TabProxies_TupleProxy {
380   PyObject_HEAD
381   struct __pyx_vtabstruct_10TabProxies_TupleProxy *__pyx_vtab;
382   char *data;
383   char **fields;
384   int nfields;
385   int index;
386   int nbytes;
387   int offset;
388   int is_modified;
389 };
390
391
392 /* "TabProxies.pxd":69
393  *     cdef char * getAttributes( self )
394  * 
395  * cdef class NamedTupleProxy( TupleProxy) :             # <<<<<<<<<<<<<<
396  *     pass
397  * 
398  */
399 struct __pyx_obj_10TabProxies_NamedTupleProxy {
400   struct __pyx_obj_10TabProxies_TupleProxy __pyx_base;
401 };
402
403
404 /* "TabProxies.pxd":83
405  *     cdef update( self, char * buffer, size_t nbytes )
406  * 
407  * cdef class VCFProxy( NamedTupleProxy) :             # <<<<<<<<<<<<<<
408  * 
409  *     cdef:
410  */
411 struct __pyx_obj_10TabProxies_VCFProxy {
412   struct __pyx_obj_10TabProxies_NamedTupleProxy __pyx_base;
413   char *contig;
414   uint32_t pos;
415 };
416
417
418 /* "TabProxies.pxd":60
419  *     cdef update( self, char * buffer, size_t nbytes )
420  * 
421  * cdef class GTFProxy( TupleProxy) :             # <<<<<<<<<<<<<<
422  * 
423  *     cdef:
424  */
425 struct __pyx_obj_10TabProxies_GTFProxy {
426   struct __pyx_obj_10TabProxies_TupleProxy __pyx_base;
427   char *_attributes;
428   int hasOwnAttributes;
429 };
430
431
432 /* "TabProxies.pxd":72
433  *     pass
434  * 
435  * cdef class BedProxy( NamedTupleProxy) :             # <<<<<<<<<<<<<<
436  * 
437  *     cdef:
438  */
439 struct __pyx_obj_10TabProxies_BedProxy {
440   struct __pyx_obj_10TabProxies_NamedTupleProxy __pyx_base;
441   char *contig;
442   uint32_t start;
443   uint32_t end;
444   int bedfields;
445 };
446
447
448
449 /* "TabProxies.pyx":84
450  *      return not (buffer <= p < buffer + nbytes )
451  * 
452  * cdef class TupleProxy:             # <<<<<<<<<<<<<<
453  *     '''Proxy class for access to parsed row as a tuple.
454  * 
455  */
456
457 struct __pyx_vtabstruct_10TabProxies_TupleProxy {
458   int (*getMaxFields)(struct __pyx_obj_10TabProxies_TupleProxy *, size_t);
459   PyObject *(*take)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t);
460   PyObject *(*present)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t);
461   PyObject *(*copy)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t);
462   PyObject *(*update)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t);
463 };
464 static struct __pyx_vtabstruct_10TabProxies_TupleProxy *__pyx_vtabptr_10TabProxies_TupleProxy;
465
466
467 /* "TabProxies.pyx":571
468  *         self.fromDict( r )
469  * 
470  * cdef class NamedTupleProxy( TupleProxy ):             # <<<<<<<<<<<<<<
471  * 
472  *     map_key2field = {}
473  */
474
475 struct __pyx_vtabstruct_10TabProxies_NamedTupleProxy {
476   struct __pyx_vtabstruct_10TabProxies_TupleProxy __pyx_base;
477 };
478 static struct __pyx_vtabstruct_10TabProxies_NamedTupleProxy *__pyx_vtabptr_10TabProxies_NamedTupleProxy;
479
480
481 /* "TabProxies.pyx":656
482  *         TupleProxy._setindex(self, idx, str(value) )
483  * 
484  * cdef class VCFProxy( NamedTupleProxy ):             # <<<<<<<<<<<<<<
485  *     '''Proxy class for access to VCF fields.
486  * 
487  */
488
489 struct __pyx_vtabstruct_10TabProxies_VCFProxy {
490   struct __pyx_vtabstruct_10TabProxies_NamedTupleProxy __pyx_base;
491 };
492 static struct __pyx_vtabstruct_10TabProxies_VCFProxy *__pyx_vtabptr_10TabProxies_VCFProxy;
493
494
495 /* "TabProxies.pyx":590
496  *         return f( self.fields[idx] )
497  * 
498  * cdef class BedProxy( NamedTupleProxy ):             # <<<<<<<<<<<<<<
499  *     '''Proxy class for access to Bed fields.
500  * 
501  */
502
503 struct __pyx_vtabstruct_10TabProxies_BedProxy {
504   struct __pyx_vtabstruct_10TabProxies_NamedTupleProxy __pyx_base;
505 };
506 static struct __pyx_vtabstruct_10TabProxies_BedProxy *__pyx_vtabptr_10TabProxies_BedProxy;
507
508
509 /* "TabProxies.pyx":326
510  *         return str(v)
511  * 
512  * cdef class GTFProxy( TupleProxy ):             # <<<<<<<<<<<<<<
513  *     '''Proxy class for access to GTF fields.
514  * 
515  */
516
517 struct __pyx_vtabstruct_10TabProxies_GTFProxy {
518   struct __pyx_vtabstruct_10TabProxies_TupleProxy __pyx_base;
519   char *(*getAttributes)(struct __pyx_obj_10TabProxies_GTFProxy *);
520 };
521 static struct __pyx_vtabstruct_10TabProxies_GTFProxy *__pyx_vtabptr_10TabProxies_GTFProxy;
522 #ifndef CYTHON_REFNANNY
523   #define CYTHON_REFNANNY 0
524 #endif
525 #if CYTHON_REFNANNY
526   typedef struct {
527     void (*INCREF)(void*, PyObject*, int);
528     void (*DECREF)(void*, PyObject*, int);
529     void (*GOTREF)(void*, PyObject*, int);
530     void (*GIVEREF)(void*, PyObject*, int);
531     void* (*SetupContext)(const char*, int, const char*);
532     void (*FinishContext)(void**);
533   } __Pyx_RefNannyAPIStruct;
534   static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
535   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
536   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
537 #ifdef WITH_THREAD
538   #define __Pyx_RefNannySetupContext(name, acquire_gil) \
539           if (acquire_gil) { \
540               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
541               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
542               PyGILState_Release(__pyx_gilstate_save); \
543           } else { \
544               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
545           }
546 #else
547   #define __Pyx_RefNannySetupContext(name, acquire_gil) \
548           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
549 #endif
550   #define __Pyx_RefNannyFinishContext() \
551           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
552   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
553   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
554   #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
555   #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
556   #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
557   #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
558   #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
559   #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
560 #else
561   #define __Pyx_RefNannyDeclarations
562   #define __Pyx_RefNannySetupContext(name, acquire_gil)
563   #define __Pyx_RefNannyFinishContext()
564   #define __Pyx_INCREF(r) Py_INCREF(r)
565   #define __Pyx_DECREF(r) Py_DECREF(r)
566   #define __Pyx_GOTREF(r)
567   #define __Pyx_GIVEREF(r)
568   #define __Pyx_XINCREF(r) Py_XINCREF(r)
569   #define __Pyx_XDECREF(r) Py_XDECREF(r)
570   #define __Pyx_XGOTREF(r)
571   #define __Pyx_XGIVEREF(r)
572 #endif /* CYTHON_REFNANNY */
573 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
574 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
575
576 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
577
578 static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
579 static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
580
581 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
582
583 #include <string.h>
584
585 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
586     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
587
588 static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
589
590 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
591
592 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
593
594 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/
595
596 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
597
598 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
599     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
600     const char* function_name); /*proto*/
601
602 static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
603     if (likely(PyList_CheckExact(L))) {
604         if (PyList_Append(L, x) < 0) return NULL;
605         Py_INCREF(Py_None);
606         return Py_None; /* this is just to have an accurate signature */
607     }
608     else {
609         PyObject *r, *m;
610         m = __Pyx_GetAttrString(L, "append");
611         if (!m) return NULL;
612         r = PyObject_CallFunctionObjArgs(m, x, NULL);
613         Py_DECREF(m);
614         return r;
615     }
616 }
617
618 static CYTHON_INLINE int __Pyx_NegateNonNeg(int b) {
619     return unlikely(b < 0) ? b : !b;
620 }
621 static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) {
622     return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b);
623 }
624
625 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
626     PyObject *r;
627     if (!j) return NULL;
628     r = PyObject_GetItem(o, j);
629     Py_DECREF(j);
630     return r;
631 }
632 #define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
633                                                     __Pyx_GetItemInt_List_Fast(o, i) : \
634                                                     __Pyx_GetItemInt_Generic(o, to_py_func(i)))
635 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
636     if (likely(o != Py_None)) {
637         if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
638             PyObject *r = PyList_GET_ITEM(o, i);
639             Py_INCREF(r);
640             return r;
641         }
642         else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
643             PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
644             Py_INCREF(r);
645             return r;
646         }
647     }
648     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
649 }
650 #define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
651                                                     __Pyx_GetItemInt_Tuple_Fast(o, i) : \
652                                                     __Pyx_GetItemInt_Generic(o, to_py_func(i)))
653 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
654     if (likely(o != Py_None)) {
655         if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
656             PyObject *r = PyTuple_GET_ITEM(o, i);
657             Py_INCREF(r);
658             return r;
659         }
660         else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
661             PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
662             Py_INCREF(r);
663             return r;
664         }
665     }
666     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
667 }
668 #define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
669                                                     __Pyx_GetItemInt_Fast(o, i) : \
670                                                     __Pyx_GetItemInt_Generic(o, to_py_func(i)))
671 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
672     if (PyList_CheckExact(o)) {
673         Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
674         if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
675             PyObject *r = PyList_GET_ITEM(o, n);
676             Py_INCREF(r);
677             return r;
678         }
679     }
680     else if (PyTuple_CheckExact(o)) {
681         Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
682         if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
683             PyObject *r = PyTuple_GET_ITEM(o, n);
684             Py_INCREF(r);
685             return r;
686         }
687     }
688     else if (likely(i >= 0)) {
689         PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
690         if (likely(m && m->sq_item)) {
691             return m->sq_item(o, i);
692         }
693     }
694     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
695 }
696
697 static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */
698 #define __Pyx_PyObject_AsDouble(obj) \
699 ((likely(PyFloat_CheckExact(obj))) ? \
700  PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
701
702 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
703 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
704
705 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/
706
707 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/
708
709 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/
710
711 #if PY_MAJOR_VERSION >= 3
712 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
713 #else
714 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
715 #endif
716
717 static CYTHON_INLINE uint32_t __Pyx_PyInt_from_py_uint32_t(PyObject *);
718
719 static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_uint32_t(uint32_t);
720
721 static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
722
723 static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
724
725 static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
726
727 static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
728
729 static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
730
731 static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
732
733 static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
734
735 static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
736
737 static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
738
739 static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
740
741 static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
742
743 static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
744
745 static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
746
747 static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
748
749 static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
750
751 static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
752
753 static void __Pyx_WriteUnraisable(const char *name, int clineno,
754                                   int lineno, const char *filename); /*proto*/
755
756 static int __Pyx_check_binary_version(void);
757
758 static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
759
760 #if !defined(__Pyx_PyIdentifier_FromString)
761 #if PY_MAJOR_VERSION < 3
762   #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
763 #else
764   #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
765 #endif
766 #endif
767
768 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
769
770 static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
771
772 typedef struct {
773     int code_line;
774     PyCodeObject* code_object;
775 } __Pyx_CodeObjectCacheEntry;
776 struct __Pyx_CodeObjectCache {
777     int count;
778     int max_count;
779     __Pyx_CodeObjectCacheEntry* entries;
780 };
781 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
782 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
783 static PyCodeObject *__pyx_find_code_object(int code_line);
784 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
785
786 static void __Pyx_AddTraceback(const char *funcname, int c_line,
787                                int py_line, const char *filename); /*proto*/
788
789 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
790
791
792 /* Module declarations from 'cpython.version' */
793
794 /* Module declarations from 'cpython.ref' */
795
796 /* Module declarations from 'cpython.exc' */
797
798 /* Module declarations from 'cpython.module' */
799
800 /* Module declarations from 'cpython.mem' */
801
802 /* Module declarations from 'cpython.tuple' */
803
804 /* Module declarations from 'cpython.list' */
805
806 /* Module declarations from 'libc.stdio' */
807
808 /* Module declarations from 'cpython.object' */
809
810 /* Module declarations from 'cpython.sequence' */
811
812 /* Module declarations from 'cpython.mapping' */
813
814 /* Module declarations from 'cpython.iterator' */
815
816 /* Module declarations from 'cpython.type' */
817
818 /* Module declarations from 'cpython.number' */
819
820 /* Module declarations from 'cpython.int' */
821
822 /* Module declarations from '__builtin__' */
823
824 /* Module declarations from 'cpython.bool' */
825 static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
826
827 /* Module declarations from 'cpython.long' */
828
829 /* Module declarations from 'cpython.float' */
830
831 /* Module declarations from '__builtin__' */
832
833 /* Module declarations from 'cpython.complex' */
834 static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
835
836 /* Module declarations from 'cpython.string' */
837
838 /* Module declarations from 'cpython.unicode' */
839
840 /* Module declarations from 'cpython.dict' */
841
842 /* Module declarations from 'cpython.instance' */
843
844 /* Module declarations from 'cpython.function' */
845
846 /* Module declarations from 'cpython.method' */
847
848 /* Module declarations from 'cpython.weakref' */
849
850 /* Module declarations from 'cpython.getargs' */
851
852 /* Module declarations from 'cpython.pythread' */
853
854 /* Module declarations from 'cpython.pystate' */
855
856 /* Module declarations from 'cpython.cobject' */
857
858 /* Module declarations from 'cpython.oldbuffer' */
859
860 /* Module declarations from 'cpython.set' */
861
862 /* Module declarations from 'cpython.buffer' */
863
864 /* Module declarations from 'cpython.bytes' */
865
866 /* Module declarations from 'cpython.pycapsule' */
867
868 /* Module declarations from 'cpython' */
869
870 /* Module declarations from 'TabProxies' */
871 static PyTypeObject *__pyx_ptype_10TabProxies_TupleProxy = 0;
872 static PyTypeObject *__pyx_ptype_10TabProxies_GTFProxy = 0;
873 static PyTypeObject *__pyx_ptype_10TabProxies_NamedTupleProxy = 0;
874 static PyTypeObject *__pyx_ptype_10TabProxies_BedProxy = 0;
875 static PyTypeObject *__pyx_ptype_10TabProxies_VCFProxy = 0;
876 static PyObject *__pyx_v_10TabProxies__FILENAME_ENCODING = 0;
877 static PyObject *__pyx_f_10TabProxies__force_bytes(PyObject *); /*proto*/
878 static PyObject *__pyx_f_10TabProxies__force_str(PyObject *); /*proto*/
879 static char *__pyx_f_10TabProxies_StrOrEmpty(char *); /*proto*/
880 static int __pyx_f_10TabProxies_isNew(char *, char *, size_t); /*proto*/
881 #define __Pyx_MODULE_NAME "TabProxies"
882 int __pyx_module_is_main_TabProxies = 0;
883
884 /* Implementation of 'TabProxies' */
885 static PyObject *__pyx_builtin_TypeError;
886 static PyObject *__pyx_builtin_ValueError;
887 static PyObject *__pyx_builtin_IndexError;
888 static PyObject *__pyx_builtin_range;
889 static PyObject *__pyx_builtin_StopIteration;
890 static PyObject *__pyx_builtin_xrange;
891 static PyObject *__pyx_builtin_AttributeError;
892 static PyObject *__pyx_builtin_KeyError;
893 static int __pyx_pf_10TabProxies_10TupleProxy___cinit__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
894 static void __pyx_pf_10TabProxies_10TupleProxy_2__dealloc__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
895 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_4_getindex(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, int __pyx_v_index); /* proto */
896 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_6__getitem__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
897 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_8_setindex(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
898 static int __pyx_pf_10TabProxies_10TupleProxy_10__setitem__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
899 static Py_ssize_t __pyx_pf_10TabProxies_10TupleProxy_12__len__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
900 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_14__iter__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
901 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_16__next__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
902 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_18__str__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self); /* proto */
903 static PyObject *__pyx_pf_10TabProxies_toDot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v); /* proto */
904 static PyObject *__pyx_pf_10TabProxies_2quote(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v); /* proto */
905 static int __pyx_pf_10TabProxies_8GTFProxy___cinit__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
906 static void __pyx_pf_10TabProxies_8GTFProxy_2__dealloc__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
907 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6contig___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
908 static int __pyx_pf_10TabProxies_8GTFProxy_6contig_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
909 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6source___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
910 static int __pyx_pf_10TabProxies_8GTFProxy_6source_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
911 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_7feature___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
912 static int __pyx_pf_10TabProxies_8GTFProxy_7feature_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
913 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5start___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
914 static int __pyx_pf_10TabProxies_8GTFProxy_5start_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
915 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_3end___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
916 static int __pyx_pf_10TabProxies_8GTFProxy_3end_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
917 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5score___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
918 static int __pyx_pf_10TabProxies_8GTFProxy_5score_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
919 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6strand___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
920 static int __pyx_pf_10TabProxies_8GTFProxy_6strand_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
921 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5frame___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
922 static int __pyx_pf_10TabProxies_8GTFProxy_5frame_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
923 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_10attributes___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
924 static int __pyx_pf_10TabProxies_8GTFProxy_10attributes_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
925 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_4asDict(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
926 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6fromDict(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_d); /* proto */
927 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_8__str__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
928 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_10invert(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, int __pyx_v_lcontig); /* proto */
929 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_12keys(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self); /* proto */
930 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_14__getitem__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
931 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_16__getattr__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
932 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_18setAttribute(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
933 static int __pyx_pf_10TabProxies_15NamedTupleProxy___setattr__(struct __pyx_obj_10TabProxies_NamedTupleProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
934 static PyObject *__pyx_pf_10TabProxies_15NamedTupleProxy_2__getattr__(struct __pyx_obj_10TabProxies_NamedTupleProxy *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
935 static PyObject *__pyx_pf_10TabProxies_8BedProxy___str__(struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self); /* proto */
936 static int __pyx_pf_10TabProxies_8BedProxy_2__setattr__(struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
937 static int __pyx_pf_10TabProxies_8VCFProxy___cinit__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self); /* proto */
938 static Py_ssize_t __pyx_pf_10TabProxies_8VCFProxy_2__len__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self); /* proto */
939 static PyObject *__pyx_pf_10TabProxies_8VCFProxy_3pos___get__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self); /* proto */
940 static int __pyx_pf_10TabProxies_8VCFProxy_4__setattr__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
941 static char __pyx_k_1[] = "Argument must be string or unicode.";
942 static char __pyx_k_3[] = "Argument must be string, bytes or unicode.";
943 static char __pyx_k_5[] = "malformatted entry at %s";
944 static char __pyx_k_6[] = "";
945 static char __pyx_k_7[] = "out of memory";
946 static char __pyx_k_9[] = "incomplete line at %s";
947 static char __pyx_k_11[] = "row too large - more than %i fields";
948 static char __pyx_k_12[] = "list index out of range";
949 static char __pyx_k_14[] = "list index out of range %i >= %i";
950 static char __pyx_k_18[] = "\t";
951 static char __pyx_k_21[] = ".";
952 static char __pyx_k_22[] = "\"%s\"";
953 static char __pyx_k_32[] = ";";
954 static char __pyx_k_34[] = " ";
955 static char __pyx_k_36[] = "\"";
956 static char __pyx_k_37[] = "%s \"%s\"";
957 static char __pyx_k_38[] = "%s %s";
958 static char __pyx_k_39[] = "; ";
959 static char __pyx_k_41[] = "-";
960 static char __pyx_k_44[] = "'GTFProxy' has no attribute '%s'";
961 static char __pyx_k_45[] = "field %s not set";
962 static char __pyx_k_46[] = "bed format requires at least three columns";
963 static char __pyx_k_48[] = "contig of feature.";
964 static char __pyx_k_49[] = "feature source.";
965 static char __pyx_k_50[] = "feature name.";
966 static char __pyx_k_51[] = "feature start (in 0-based open/closed coordinates).";
967 static char __pyx_k_52[] = "feature end (in 0-based open/closed coordinates).";
968 static char __pyx_k_53[] = "feature score.";
969 static char __pyx_k_54[] = "feature strand.";
970 static char __pyx_k_55[] = "feature frame.";
971 static char __pyx_k_56[] = "feature attributes (as a string).";
972 static char __pyx_k_57[] = "getfilesystemencoding";
973 static char __pyx_k_60[] = "/ifs/devel/pysam/pysam/TabProxies.pyx";
974 static char __pyx_k__v[] = "v";
975 static char __pyx_k__id[] = "id";
976 static char __pyx_k__alt[] = "alt";
977 static char __pyx_k__end[] = "end";
978 static char __pyx_k__pos[] = "pos";
979 static char __pyx_k__ref[] = "ref";
980 static char __pyx_k__sys[] = "sys";
981 static char __pyx_k__info[] = "info";
982 static char __pyx_k__join[] = "join";
983 static char __pyx_k__name[] = "name";
984 static char __pyx_k__qual[] = "qual";
985 static char __pyx_k__ascii[] = "ascii";
986 static char __pyx_k__frame[] = "frame";
987 static char __pyx_k__index[] = "index";
988 static char __pyx_k__items[] = "items";
989 static char __pyx_k__quote[] = "quote";
990 static char __pyx_k__range[] = "range";
991 static char __pyx_k__score[] = "score";
992 static char __pyx_k__split[] = "split";
993 static char __pyx_k__start[] = "start";
994 static char __pyx_k__strip[] = "strip";
995 static char __pyx_k__toDot[] = "toDot";
996 static char __pyx_k__types[] = "types";
997 static char __pyx_k__value[] = "value";
998 static char __pyx_k__asDict[] = "asDict";
999 static char __pyx_k__contig[] = "contig";
1000 static char __pyx_k__decode[] = "decode";
1001 static char __pyx_k__encode[] = "encode";
1002 static char __pyx_k__filter[] = "filter";
1003 static char __pyx_k__format[] = "format";
1004 static char __pyx_k__source[] = "source";
1005 static char __pyx_k__strand[] = "strand";
1006 static char __pyx_k__xrange[] = "xrange";
1007 static char __pyx_k____str__[] = "__str__";
1008 static char __pyx_k__feature[] = "feature";
1009 static char __pyx_k__indices[] = "indices";
1010 static char __pyx_k__itemRGB[] = "itemRGB";
1011 static char __pyx_k__KeyError[] = "KeyError";
1012 static char __pyx_k____main__[] = "__main__";
1013 static char __pyx_k____test__[] = "__test__";
1014 static char __pyx_k__fromDict[] = "fromDict";
1015 static char __pyx_k__thickEnd[] = "thickEnd";
1016 static char __pyx_k__TypeError[] = "TypeError";
1017 static char __pyx_k___getindex[] = "_getindex";
1018 static char __pyx_k___setindex[] = "_setindex";
1019 static char __pyx_k__IndexError[] = "IndexError";
1020 static char __pyx_k__TabProxies[] = "TabProxies";
1021 static char __pyx_k__ValueError[] = "ValueError";
1022 static char __pyx_k__attributes[] = "attributes";
1023 static char __pyx_k__blockCount[] = "blockCount";
1024 static char __pyx_k__blockSizes[] = "blockSizes";
1025 static char __pyx_k__thickStart[] = "thickStart";
1026 static char __pyx_k__StringTypes[] = "StringTypes";
1027 static char __pyx_k____getattr__[] = "__getattr__";
1028 static char __pyx_k____setitem__[] = "__setitem__";
1029 static char __pyx_k__blockStarts[] = "blockStarts";
1030 static char __pyx_k__StopIteration[] = "StopIteration";
1031 static char __pyx_k__map_key2field[] = "map_key2field";
1032 static char __pyx_k__AttributeError[] = "AttributeError";
1033 static char __pyx_k__getdefaultencoding[] = "getdefaultencoding";
1034 static PyObject *__pyx_kp_u_1;
1035 static PyObject *__pyx_kp_s_11;
1036 static PyObject *__pyx_kp_s_12;
1037 static PyObject *__pyx_kp_s_14;
1038 static PyObject *__pyx_kp_s_18;
1039 static PyObject *__pyx_kp_s_21;
1040 static PyObject *__pyx_kp_s_22;
1041 static PyObject *__pyx_kp_u_3;
1042 static PyObject *__pyx_kp_s_32;
1043 static PyObject *__pyx_kp_s_34;
1044 static PyObject *__pyx_kp_s_36;
1045 static PyObject *__pyx_kp_s_37;
1046 static PyObject *__pyx_kp_s_38;
1047 static PyObject *__pyx_kp_s_39;
1048 static PyObject *__pyx_kp_s_41;
1049 static PyObject *__pyx_kp_s_44;
1050 static PyObject *__pyx_kp_s_45;
1051 static PyObject *__pyx_kp_s_46;
1052 static PyObject *__pyx_kp_s_5;
1053 static PyObject *__pyx_n_s_57;
1054 static PyObject *__pyx_kp_s_6;
1055 static PyObject *__pyx_kp_s_60;
1056 static PyObject *__pyx_kp_s_7;
1057 static PyObject *__pyx_kp_s_9;
1058 static PyObject *__pyx_n_s__AttributeError;
1059 static PyObject *__pyx_n_s__IndexError;
1060 static PyObject *__pyx_n_s__KeyError;
1061 static PyObject *__pyx_n_s__StopIteration;
1062 static PyObject *__pyx_n_s__StringTypes;
1063 static PyObject *__pyx_n_s__TabProxies;
1064 static PyObject *__pyx_n_s__TypeError;
1065 static PyObject *__pyx_n_s__ValueError;
1066 static PyObject *__pyx_n_s____getattr__;
1067 static PyObject *__pyx_n_s____main__;
1068 static PyObject *__pyx_n_s____setitem__;
1069 static PyObject *__pyx_n_s____str__;
1070 static PyObject *__pyx_n_s____test__;
1071 static PyObject *__pyx_n_s___getindex;
1072 static PyObject *__pyx_n_s___setindex;
1073 static PyObject *__pyx_n_s__alt;
1074 static PyObject *__pyx_n_s__asDict;
1075 static PyObject *__pyx_n_s__ascii;
1076 static PyObject *__pyx_n_s__attributes;
1077 static PyObject *__pyx_n_s__blockCount;
1078 static PyObject *__pyx_n_s__blockSizes;
1079 static PyObject *__pyx_n_s__blockStarts;
1080 static PyObject *__pyx_n_s__contig;
1081 static PyObject *__pyx_n_s__decode;
1082 static PyObject *__pyx_n_s__encode;
1083 static PyObject *__pyx_n_s__end;
1084 static PyObject *__pyx_n_s__feature;
1085 static PyObject *__pyx_n_s__filter;
1086 static PyObject *__pyx_n_s__format;
1087 static PyObject *__pyx_n_s__frame;
1088 static PyObject *__pyx_n_s__fromDict;
1089 static PyObject *__pyx_n_s__getdefaultencoding;
1090 static PyObject *__pyx_n_s__id;
1091 static PyObject *__pyx_n_s__index;
1092 static PyObject *__pyx_n_s__indices;
1093 static PyObject *__pyx_n_s__info;
1094 static PyObject *__pyx_n_s__itemRGB;
1095 static PyObject *__pyx_n_s__items;
1096 static PyObject *__pyx_n_s__join;
1097 static PyObject *__pyx_n_s__map_key2field;
1098 static PyObject *__pyx_n_s__name;
1099 static PyObject *__pyx_n_s__pos;
1100 static PyObject *__pyx_n_s__qual;
1101 static PyObject *__pyx_n_s__quote;
1102 static PyObject *__pyx_n_s__range;
1103 static PyObject *__pyx_n_s__ref;
1104 static PyObject *__pyx_n_s__score;
1105 static PyObject *__pyx_n_s__source;
1106 static PyObject *__pyx_n_s__split;
1107 static PyObject *__pyx_n_s__start;
1108 static PyObject *__pyx_n_s__strand;
1109 static PyObject *__pyx_n_s__strip;
1110 static PyObject *__pyx_n_s__sys;
1111 static PyObject *__pyx_n_s__thickEnd;
1112 static PyObject *__pyx_n_s__thickStart;
1113 static PyObject *__pyx_n_s__toDot;
1114 static PyObject *__pyx_n_s__types;
1115 static PyObject *__pyx_n_s__v;
1116 static PyObject *__pyx_n_s__value;
1117 static PyObject *__pyx_n_s__xrange;
1118 static PyObject *__pyx_int_0;
1119 static PyObject *__pyx_int_1;
1120 static PyObject *__pyx_int_2;
1121 static PyObject *__pyx_int_3;
1122 static PyObject *__pyx_int_4;
1123 static PyObject *__pyx_int_5;
1124 static PyObject *__pyx_int_6;
1125 static PyObject *__pyx_int_7;
1126 static PyObject *__pyx_int_8;
1127 static PyObject *__pyx_int_9;
1128 static PyObject *__pyx_int_10;
1129 static PyObject *__pyx_int_11;
1130 static PyObject *__pyx_k_tuple_2;
1131 static PyObject *__pyx_k_tuple_4;
1132 static PyObject *__pyx_k_tuple_8;
1133 static PyObject *__pyx_k_tuple_10;
1134 static PyObject *__pyx_k_tuple_13;
1135 static PyObject *__pyx_k_tuple_15;
1136 static PyObject *__pyx_k_tuple_16;
1137 static PyObject *__pyx_k_tuple_17;
1138 static PyObject *__pyx_k_tuple_19;
1139 static PyObject *__pyx_k_tuple_20;
1140 static PyObject *__pyx_k_tuple_23;
1141 static PyObject *__pyx_k_tuple_24;
1142 static PyObject *__pyx_k_tuple_25;
1143 static PyObject *__pyx_k_tuple_26;
1144 static PyObject *__pyx_k_tuple_27;
1145 static PyObject *__pyx_k_tuple_28;
1146 static PyObject *__pyx_k_tuple_29;
1147 static PyObject *__pyx_k_tuple_30;
1148 static PyObject *__pyx_k_tuple_31;
1149 static PyObject *__pyx_k_tuple_33;
1150 static PyObject *__pyx_k_tuple_35;
1151 static PyObject *__pyx_k_tuple_40;
1152 static PyObject *__pyx_k_tuple_42;
1153 static PyObject *__pyx_k_tuple_43;
1154 static PyObject *__pyx_k_tuple_47;
1155 static PyObject *__pyx_k_tuple_58;
1156 static PyObject *__pyx_k_tuple_61;
1157 static PyObject *__pyx_k_codeobj_59;
1158 static PyObject *__pyx_k_codeobj_62;
1159
1160 /* "TabProxies.pyx":7
1161  * from cpython cimport PyErr_SetString, PyBytes_Check, PyUnicode_Check, PyBytes_FromStringAndSize
1162  * 
1163  * cdef from_string_and_size(char* s, size_t length):             # <<<<<<<<<<<<<<
1164  *     if PY_MAJOR_VERSION < 3:
1165  *         return s[:length]
1166  */
1167
1168 static PyObject *__pyx_f_10TabProxies_from_string_and_size(char *__pyx_v_s, size_t __pyx_v_length) {
1169   PyObject *__pyx_r = NULL;
1170   __Pyx_RefNannyDeclarations
1171   int __pyx_t_1;
1172   PyObject *__pyx_t_2 = NULL;
1173   int __pyx_lineno = 0;
1174   const char *__pyx_filename = NULL;
1175   int __pyx_clineno = 0;
1176   __Pyx_RefNannySetupContext("from_string_and_size", 0);
1177
1178   /* "TabProxies.pyx":8
1179  * 
1180  * cdef from_string_and_size(char* s, size_t length):
1181  *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
1182  *         return s[:length]
1183  *     else:
1184  */
1185   __pyx_t_1 = (PY_MAJOR_VERSION < 3);
1186   if (__pyx_t_1) {
1187
1188     /* "TabProxies.pyx":9
1189  * cdef from_string_and_size(char* s, size_t length):
1190  *     if PY_MAJOR_VERSION < 3:
1191  *         return s[:length]             # <<<<<<<<<<<<<<
1192  *     else:
1193  *         return s[:length].decode("ascii")
1194  */
1195     __Pyx_XDECREF(__pyx_r);
1196     __pyx_t_2 = PyBytes_FromStringAndSize(__pyx_v_s + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1197     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1198     __pyx_r = ((PyObject *)__pyx_t_2);
1199     __pyx_t_2 = 0;
1200     goto __pyx_L0;
1201     goto __pyx_L3;
1202   }
1203   /*else*/ {
1204
1205     /* "TabProxies.pyx":11
1206  *         return s[:length]
1207  *     else:
1208  *         return s[:length].decode("ascii")             # <<<<<<<<<<<<<<
1209  * 
1210  * # filename encoding (copied from lxml.etree.pyx)
1211  */
1212     __Pyx_XDECREF(__pyx_r);
1213     __pyx_t_2 = ((PyObject *)PyUnicode_DecodeASCII(__pyx_v_s, __pyx_v_length, NULL)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1214     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1215     __pyx_r = ((PyObject *)__pyx_t_2);
1216     __pyx_t_2 = 0;
1217     goto __pyx_L0;
1218   }
1219   __pyx_L3:;
1220
1221   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
1222   goto __pyx_L0;
1223   __pyx_L1_error:;
1224   __Pyx_XDECREF(__pyx_t_2);
1225   __Pyx_AddTraceback("TabProxies.from_string_and_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
1226   __pyx_r = 0;
1227   __pyx_L0:;
1228   __Pyx_XGIVEREF(__pyx_r);
1229   __Pyx_RefNannyFinishContext();
1230   return __pyx_r;
1231 }
1232
1233 /* "TabProxies.pyx":21
1234  *     _FILENAME_ENCODING = 'ascii'
1235  * 
1236  * cdef bytes _my_encodeFilename(object filename):             # <<<<<<<<<<<<<<
1237  *     u"""Make sure a filename is 8-bit encoded (or None).
1238  *     """
1239  */
1240
1241 static PyObject *__pyx_f_10TabProxies__my_encodeFilename(PyObject *__pyx_v_filename) {
1242   PyObject *__pyx_r = NULL;
1243   __Pyx_RefNannyDeclarations
1244   int __pyx_t_1;
1245   PyObject *__pyx_t_2 = NULL;
1246   PyObject *__pyx_t_3 = NULL;
1247   PyObject *__pyx_t_4 = NULL;
1248   int __pyx_lineno = 0;
1249   const char *__pyx_filename = NULL;
1250   int __pyx_clineno = 0;
1251   __Pyx_RefNannySetupContext("_my_encodeFilename", 0);
1252
1253   /* "TabProxies.pyx":24
1254  *     u"""Make sure a filename is 8-bit encoded (or None).
1255  *     """
1256  *     if filename is None:             # <<<<<<<<<<<<<<
1257  *         return None
1258  *     elif PyBytes_Check(filename):
1259  */
1260   __pyx_t_1 = (__pyx_v_filename == Py_None);
1261   if (__pyx_t_1) {
1262
1263     /* "TabProxies.pyx":25
1264  *     """
1265  *     if filename is None:
1266  *         return None             # <<<<<<<<<<<<<<
1267  *     elif PyBytes_Check(filename):
1268  *         return filename
1269  */
1270     __Pyx_XDECREF(((PyObject *)__pyx_r));
1271     __Pyx_INCREF(Py_None);
1272     __pyx_r = ((PyObject*)Py_None);
1273     goto __pyx_L0;
1274     goto __pyx_L3;
1275   }
1276
1277   /* "TabProxies.pyx":26
1278  *     if filename is None:
1279  *         return None
1280  *     elif PyBytes_Check(filename):             # <<<<<<<<<<<<<<
1281  *         return filename
1282  *     elif PyUnicode_Check(filename):
1283  */
1284   __pyx_t_1 = PyBytes_Check(__pyx_v_filename);
1285   if (__pyx_t_1) {
1286
1287     /* "TabProxies.pyx":27
1288  *         return None
1289  *     elif PyBytes_Check(filename):
1290  *         return filename             # <<<<<<<<<<<<<<
1291  *     elif PyUnicode_Check(filename):
1292  *         return filename.encode(_FILENAME_ENCODING)
1293  */
1294     __Pyx_XDECREF(((PyObject *)__pyx_r));
1295     if (!(likely(PyBytes_CheckExact(__pyx_v_filename))||((__pyx_v_filename) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_filename)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1296     __Pyx_INCREF(__pyx_v_filename);
1297     __pyx_r = ((PyObject*)__pyx_v_filename);
1298     goto __pyx_L0;
1299     goto __pyx_L3;
1300   }
1301
1302   /* "TabProxies.pyx":28
1303  *     elif PyBytes_Check(filename):
1304  *         return filename
1305  *     elif PyUnicode_Check(filename):             # <<<<<<<<<<<<<<
1306  *         return filename.encode(_FILENAME_ENCODING)
1307  *     else:
1308  */
1309   __pyx_t_1 = PyUnicode_Check(__pyx_v_filename);
1310   if (__pyx_t_1) {
1311
1312     /* "TabProxies.pyx":29
1313  *         return filename
1314  *     elif PyUnicode_Check(filename):
1315  *         return filename.encode(_FILENAME_ENCODING)             # <<<<<<<<<<<<<<
1316  *     else:
1317  *         raise TypeError, u"Argument must be string or unicode."
1318  */
1319     __Pyx_XDECREF(((PyObject *)__pyx_r));
1320     __pyx_t_2 = PyObject_GetAttr(__pyx_v_filename, __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1321     __Pyx_GOTREF(__pyx_t_2);
1322     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1323     __Pyx_GOTREF(__pyx_t_3);
1324     __Pyx_INCREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
1325     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
1326     __Pyx_GIVEREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
1327     __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1328     __Pyx_GOTREF(__pyx_t_4);
1329     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1330     __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
1331     if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1332     __pyx_r = ((PyObject*)__pyx_t_4);
1333     __pyx_t_4 = 0;
1334     goto __pyx_L0;
1335     goto __pyx_L3;
1336   }
1337   /*else*/ {
1338
1339     /* "TabProxies.pyx":31
1340  *         return filename.encode(_FILENAME_ENCODING)
1341  *     else:
1342  *         raise TypeError, u"Argument must be string or unicode."             # <<<<<<<<<<<<<<
1343  * 
1344  * cdef bytes _force_bytes(object s):
1345  */
1346     __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_1), 0, 0);
1347     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1348   }
1349   __pyx_L3:;
1350
1351   __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
1352   goto __pyx_L0;
1353   __pyx_L1_error:;
1354   __Pyx_XDECREF(__pyx_t_2);
1355   __Pyx_XDECREF(__pyx_t_3);
1356   __Pyx_XDECREF(__pyx_t_4);
1357   __Pyx_AddTraceback("TabProxies._my_encodeFilename", __pyx_clineno, __pyx_lineno, __pyx_filename);
1358   __pyx_r = 0;
1359   __pyx_L0:;
1360   __Pyx_XGIVEREF(__pyx_r);
1361   __Pyx_RefNannyFinishContext();
1362   return __pyx_r;
1363 }
1364
1365 /* "TabProxies.pyx":33
1366  *         raise TypeError, u"Argument must be string or unicode."
1367  * 
1368  * cdef bytes _force_bytes(object s):             # <<<<<<<<<<<<<<
1369  *     u"""convert string or unicode object to bytes, assuming ascii encoding.
1370  *     """
1371  */
1372
1373 static PyObject *__pyx_f_10TabProxies__force_bytes(PyObject *__pyx_v_s) {
1374   PyObject *__pyx_r = NULL;
1375   __Pyx_RefNannyDeclarations
1376   int __pyx_t_1;
1377   PyObject *__pyx_t_2 = NULL;
1378   PyObject *__pyx_t_3 = NULL;
1379   int __pyx_lineno = 0;
1380   const char *__pyx_filename = NULL;
1381   int __pyx_clineno = 0;
1382   __Pyx_RefNannySetupContext("_force_bytes", 0);
1383
1384   /* "TabProxies.pyx":36
1385  *     u"""convert string or unicode object to bytes, assuming ascii encoding.
1386  *     """
1387  *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
1388  *         return s
1389  *     elif s is None:
1390  */
1391   __pyx_t_1 = (PY_MAJOR_VERSION < 3);
1392   if (__pyx_t_1) {
1393
1394     /* "TabProxies.pyx":37
1395  *     """
1396  *     if PY_MAJOR_VERSION < 3:
1397  *         return s             # <<<<<<<<<<<<<<
1398  *     elif s is None:
1399  *         return None
1400  */
1401     __Pyx_XDECREF(((PyObject *)__pyx_r));
1402     if (!(likely(PyBytes_CheckExact(__pyx_v_s))||((__pyx_v_s) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_s)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1403     __Pyx_INCREF(__pyx_v_s);
1404     __pyx_r = ((PyObject*)__pyx_v_s);
1405     goto __pyx_L0;
1406     goto __pyx_L3;
1407   }
1408
1409   /* "TabProxies.pyx":38
1410  *     if PY_MAJOR_VERSION < 3:
1411  *         return s
1412  *     elif s is None:             # <<<<<<<<<<<<<<
1413  *         return None
1414  *     elif PyBytes_Check(s):
1415  */
1416   __pyx_t_1 = (__pyx_v_s == Py_None);
1417   if (__pyx_t_1) {
1418
1419     /* "TabProxies.pyx":39
1420  *         return s
1421  *     elif s is None:
1422  *         return None             # <<<<<<<<<<<<<<
1423  *     elif PyBytes_Check(s):
1424  *         return s
1425  */
1426     __Pyx_XDECREF(((PyObject *)__pyx_r));
1427     __Pyx_INCREF(Py_None);
1428     __pyx_r = ((PyObject*)Py_None);
1429     goto __pyx_L0;
1430     goto __pyx_L3;
1431   }
1432
1433   /* "TabProxies.pyx":40
1434  *     elif s is None:
1435  *         return None
1436  *     elif PyBytes_Check(s):             # <<<<<<<<<<<<<<
1437  *         return s
1438  *     elif PyUnicode_Check(s):
1439  */
1440   __pyx_t_1 = PyBytes_Check(__pyx_v_s);
1441   if (__pyx_t_1) {
1442
1443     /* "TabProxies.pyx":41
1444  *         return None
1445  *     elif PyBytes_Check(s):
1446  *         return s             # <<<<<<<<<<<<<<
1447  *     elif PyUnicode_Check(s):
1448  *         return s.encode('ascii')
1449  */
1450     __Pyx_XDECREF(((PyObject *)__pyx_r));
1451     if (!(likely(PyBytes_CheckExact(__pyx_v_s))||((__pyx_v_s) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_s)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1452     __Pyx_INCREF(__pyx_v_s);
1453     __pyx_r = ((PyObject*)__pyx_v_s);
1454     goto __pyx_L0;
1455     goto __pyx_L3;
1456   }
1457
1458   /* "TabProxies.pyx":42
1459  *     elif PyBytes_Check(s):
1460  *         return s
1461  *     elif PyUnicode_Check(s):             # <<<<<<<<<<<<<<
1462  *         return s.encode('ascii')
1463  *     else:
1464  */
1465   __pyx_t_1 = PyUnicode_Check(__pyx_v_s);
1466   if (__pyx_t_1) {
1467
1468     /* "TabProxies.pyx":43
1469  *         return s
1470  *     elif PyUnicode_Check(s):
1471  *         return s.encode('ascii')             # <<<<<<<<<<<<<<
1472  *     else:
1473  *         raise TypeError, u"Argument must be string, bytes or unicode."
1474  */
1475     __Pyx_XDECREF(((PyObject *)__pyx_r));
1476     __pyx_t_2 = PyObject_GetAttr(__pyx_v_s, __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1477     __Pyx_GOTREF(__pyx_t_2);
1478     __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1479     __Pyx_GOTREF(__pyx_t_3);
1480     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1481     if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1482     __pyx_r = ((PyObject*)__pyx_t_3);
1483     __pyx_t_3 = 0;
1484     goto __pyx_L0;
1485     goto __pyx_L3;
1486   }
1487   /*else*/ {
1488
1489     /* "TabProxies.pyx":45
1490  *         return s.encode('ascii')
1491  *     else:
1492  *         raise TypeError, u"Argument must be string, bytes or unicode."             # <<<<<<<<<<<<<<
1493  * 
1494  * cdef inline bytes _force_cmdline_bytes(object s):
1495  */
1496     __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_3), 0, 0);
1497     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1498   }
1499   __pyx_L3:;
1500
1501   __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
1502   goto __pyx_L0;
1503   __pyx_L1_error:;
1504   __Pyx_XDECREF(__pyx_t_2);
1505   __Pyx_XDECREF(__pyx_t_3);
1506   __Pyx_AddTraceback("TabProxies._force_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
1507   __pyx_r = 0;
1508   __pyx_L0:;
1509   __Pyx_XGIVEREF(__pyx_r);
1510   __Pyx_RefNannyFinishContext();
1511   return __pyx_r;
1512 }
1513
1514 /* "TabProxies.pyx":47
1515  *         raise TypeError, u"Argument must be string, bytes or unicode."
1516  * 
1517  * cdef inline bytes _force_cmdline_bytes(object s):             # <<<<<<<<<<<<<<
1518  *     return _force_bytes(s)
1519  * 
1520  */
1521
1522 static CYTHON_INLINE PyObject *__pyx_f_10TabProxies__force_cmdline_bytes(PyObject *__pyx_v_s) {
1523   PyObject *__pyx_r = NULL;
1524   __Pyx_RefNannyDeclarations
1525   PyObject *__pyx_t_1 = NULL;
1526   int __pyx_lineno = 0;
1527   const char *__pyx_filename = NULL;
1528   int __pyx_clineno = 0;
1529   __Pyx_RefNannySetupContext("_force_cmdline_bytes", 0);
1530
1531   /* "TabProxies.pyx":48
1532  * 
1533  * cdef inline bytes _force_cmdline_bytes(object s):
1534  *     return _force_bytes(s)             # <<<<<<<<<<<<<<
1535  * 
1536  * cdef _charptr_to_str(char* s):
1537  */
1538   __Pyx_XDECREF(((PyObject *)__pyx_r));
1539   __pyx_t_1 = ((PyObject *)__pyx_f_10TabProxies__force_bytes(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1540   __Pyx_GOTREF(__pyx_t_1);
1541   __pyx_r = ((PyObject*)__pyx_t_1);
1542   __pyx_t_1 = 0;
1543   goto __pyx_L0;
1544
1545   __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
1546   goto __pyx_L0;
1547   __pyx_L1_error:;
1548   __Pyx_XDECREF(__pyx_t_1);
1549   __Pyx_AddTraceback("TabProxies._force_cmdline_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
1550   __pyx_r = 0;
1551   __pyx_L0:;
1552   __Pyx_XGIVEREF(__pyx_r);
1553   __Pyx_RefNannyFinishContext();
1554   return __pyx_r;
1555 }
1556
1557 /* "TabProxies.pyx":50
1558  *     return _force_bytes(s)
1559  * 
1560  * cdef _charptr_to_str(char* s):             # <<<<<<<<<<<<<<
1561  *     if PY_MAJOR_VERSION < 3:
1562  *         return s
1563  */
1564
1565 static PyObject *__pyx_f_10TabProxies__charptr_to_str(char *__pyx_v_s) {
1566   PyObject *__pyx_r = NULL;
1567   __Pyx_RefNannyDeclarations
1568   int __pyx_t_1;
1569   PyObject *__pyx_t_2 = NULL;
1570   int __pyx_lineno = 0;
1571   const char *__pyx_filename = NULL;
1572   int __pyx_clineno = 0;
1573   __Pyx_RefNannySetupContext("_charptr_to_str", 0);
1574
1575   /* "TabProxies.pyx":51
1576  * 
1577  * cdef _charptr_to_str(char* s):
1578  *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
1579  *         return s
1580  *     else:
1581  */
1582   __pyx_t_1 = (PY_MAJOR_VERSION < 3);
1583   if (__pyx_t_1) {
1584
1585     /* "TabProxies.pyx":52
1586  * cdef _charptr_to_str(char* s):
1587  *     if PY_MAJOR_VERSION < 3:
1588  *         return s             # <<<<<<<<<<<<<<
1589  *     else:
1590  *         return s.decode("ascii")
1591  */
1592     __Pyx_XDECREF(__pyx_r);
1593     __pyx_t_2 = PyBytes_FromString(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1594     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1595     __pyx_r = ((PyObject *)__pyx_t_2);
1596     __pyx_t_2 = 0;
1597     goto __pyx_L0;
1598     goto __pyx_L3;
1599   }
1600   /*else*/ {
1601
1602     /* "TabProxies.pyx":54
1603  *         return s
1604  *     else:
1605  *         return s.decode("ascii")             # <<<<<<<<<<<<<<
1606  * 
1607  * cdef _force_str(object s):
1608  */
1609     __Pyx_XDECREF(__pyx_r);
1610     __pyx_t_2 = ((PyObject *)PyUnicode_DecodeASCII(__pyx_v_s, strlen(__pyx_v_s), NULL)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1611     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1612     __pyx_r = ((PyObject *)__pyx_t_2);
1613     __pyx_t_2 = 0;
1614     goto __pyx_L0;
1615   }
1616   __pyx_L3:;
1617
1618   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
1619   goto __pyx_L0;
1620   __pyx_L1_error:;
1621   __Pyx_XDECREF(__pyx_t_2);
1622   __Pyx_AddTraceback("TabProxies._charptr_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
1623   __pyx_r = 0;
1624   __pyx_L0:;
1625   __Pyx_XGIVEREF(__pyx_r);
1626   __Pyx_RefNannyFinishContext();
1627   return __pyx_r;
1628 }
1629
1630 /* "TabProxies.pyx":56
1631  *         return s.decode("ascii")
1632  * 
1633  * cdef _force_str(object s):             # <<<<<<<<<<<<<<
1634  *     """Return s converted to str type of current Python (bytes in Py2, unicode in Py3)"""
1635  *     if s is None:
1636  */
1637
1638 static PyObject *__pyx_f_10TabProxies__force_str(PyObject *__pyx_v_s) {
1639   PyObject *__pyx_r = NULL;
1640   __Pyx_RefNannyDeclarations
1641   int __pyx_t_1;
1642   PyObject *__pyx_t_2 = NULL;
1643   PyObject *__pyx_t_3 = NULL;
1644   int __pyx_lineno = 0;
1645   const char *__pyx_filename = NULL;
1646   int __pyx_clineno = 0;
1647   __Pyx_RefNannySetupContext("_force_str", 0);
1648
1649   /* "TabProxies.pyx":58
1650  * cdef _force_str(object s):
1651  *     """Return s converted to str type of current Python (bytes in Py2, unicode in Py3)"""
1652  *     if s is None:             # <<<<<<<<<<<<<<
1653  *         return None
1654  *     if PY_MAJOR_VERSION < 3:
1655  */
1656   __pyx_t_1 = (__pyx_v_s == Py_None);
1657   if (__pyx_t_1) {
1658
1659     /* "TabProxies.pyx":59
1660  *     """Return s converted to str type of current Python (bytes in Py2, unicode in Py3)"""
1661  *     if s is None:
1662  *         return None             # <<<<<<<<<<<<<<
1663  *     if PY_MAJOR_VERSION < 3:
1664  *         return s
1665  */
1666     __Pyx_XDECREF(__pyx_r);
1667     __Pyx_INCREF(Py_None);
1668     __pyx_r = Py_None;
1669     goto __pyx_L0;
1670     goto __pyx_L3;
1671   }
1672   __pyx_L3:;
1673
1674   /* "TabProxies.pyx":60
1675  *     if s is None:
1676  *         return None
1677  *     if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
1678  *         return s
1679  *     elif PyBytes_Check(s):
1680  */
1681   __pyx_t_1 = (PY_MAJOR_VERSION < 3);
1682   if (__pyx_t_1) {
1683
1684     /* "TabProxies.pyx":61
1685  *         return None
1686  *     if PY_MAJOR_VERSION < 3:
1687  *         return s             # <<<<<<<<<<<<<<
1688  *     elif PyBytes_Check(s):
1689  *         return s.decode('ascii')
1690  */
1691     __Pyx_XDECREF(__pyx_r);
1692     __Pyx_INCREF(__pyx_v_s);
1693     __pyx_r = __pyx_v_s;
1694     goto __pyx_L0;
1695     goto __pyx_L4;
1696   }
1697
1698   /* "TabProxies.pyx":62
1699  *     if PY_MAJOR_VERSION < 3:
1700  *         return s
1701  *     elif PyBytes_Check(s):             # <<<<<<<<<<<<<<
1702  *         return s.decode('ascii')
1703  *     else:
1704  */
1705   __pyx_t_1 = PyBytes_Check(__pyx_v_s);
1706   if (__pyx_t_1) {
1707
1708     /* "TabProxies.pyx":63
1709  *         return s
1710  *     elif PyBytes_Check(s):
1711  *         return s.decode('ascii')             # <<<<<<<<<<<<<<
1712  *     else:
1713  *         # assume unicode
1714  */
1715     __Pyx_XDECREF(__pyx_r);
1716     __pyx_t_2 = PyObject_GetAttr(__pyx_v_s, __pyx_n_s__decode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1717     __Pyx_GOTREF(__pyx_t_2);
1718     __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1719     __Pyx_GOTREF(__pyx_t_3);
1720     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1721     __pyx_r = __pyx_t_3;
1722     __pyx_t_3 = 0;
1723     goto __pyx_L0;
1724     goto __pyx_L4;
1725   }
1726   /*else*/ {
1727
1728     /* "TabProxies.pyx":66
1729  *     else:
1730  *         # assume unicode
1731  *         return s             # <<<<<<<<<<<<<<
1732  * 
1733  * cdef char * nextItem( char * buffer ):
1734  */
1735     __Pyx_XDECREF(__pyx_r);
1736     __Pyx_INCREF(__pyx_v_s);
1737     __pyx_r = __pyx_v_s;
1738     goto __pyx_L0;
1739   }
1740   __pyx_L4:;
1741
1742   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
1743   goto __pyx_L0;
1744   __pyx_L1_error:;
1745   __Pyx_XDECREF(__pyx_t_2);
1746   __Pyx_XDECREF(__pyx_t_3);
1747   __Pyx_AddTraceback("TabProxies._force_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
1748   __pyx_r = 0;
1749   __pyx_L0:;
1750   __Pyx_XGIVEREF(__pyx_r);
1751   __Pyx_RefNannyFinishContext();
1752   return __pyx_r;
1753 }
1754
1755 /* "TabProxies.pyx":68
1756  *         return s
1757  * 
1758  * cdef char * nextItem( char * buffer ):             # <<<<<<<<<<<<<<
1759  *     cdef char * pos
1760  *     pos = strchr( buffer, '\t' )
1761  */
1762
1763 static char *__pyx_f_10TabProxies_nextItem(char *__pyx_v_buffer) {
1764   char *__pyx_v_pos;
1765   char *__pyx_r;
1766   __Pyx_RefNannyDeclarations
1767   int __pyx_t_1;
1768   PyObject *__pyx_t_2 = NULL;
1769   PyObject *__pyx_t_3 = NULL;
1770   int __pyx_lineno = 0;
1771   const char *__pyx_filename = NULL;
1772   int __pyx_clineno = 0;
1773   __Pyx_RefNannySetupContext("nextItem", 0);
1774
1775   /* "TabProxies.pyx":70
1776  * cdef char * nextItem( char * buffer ):
1777  *     cdef char * pos
1778  *     pos = strchr( buffer, '\t' )             # <<<<<<<<<<<<<<
1779  *     if pos == NULL: raise ValueError( "malformatted entry at %s" % buffer )
1780  *     pos[0] = '\0'
1781  */
1782   __pyx_v_pos = strchr(__pyx_v_buffer, '\t');
1783
1784   /* "TabProxies.pyx":71
1785  *     cdef char * pos
1786  *     pos = strchr( buffer, '\t' )
1787  *     if pos == NULL: raise ValueError( "malformatted entry at %s" % buffer )             # <<<<<<<<<<<<<<
1788  *     pos[0] = '\0'
1789  *     pos += 1
1790  */
1791   __pyx_t_1 = (__pyx_v_pos == NULL);
1792   if (__pyx_t_1) {
1793     __pyx_t_2 = PyBytes_FromString(__pyx_v_buffer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1794     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
1795     __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_5), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1796     __Pyx_GOTREF(((PyObject *)__pyx_t_3));
1797     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
1798     __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1799     __Pyx_GOTREF(__pyx_t_2);
1800     PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
1801     __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
1802     __pyx_t_3 = 0;
1803     __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1804     __Pyx_GOTREF(__pyx_t_3);
1805     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
1806     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
1807     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1808     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1809     goto __pyx_L3;
1810   }
1811   __pyx_L3:;
1812
1813   /* "TabProxies.pyx":72
1814  *     pos = strchr( buffer, '\t' )
1815  *     if pos == NULL: raise ValueError( "malformatted entry at %s" % buffer )
1816  *     pos[0] = '\0'             # <<<<<<<<<<<<<<
1817  *     pos += 1
1818  *     return pos
1819  */
1820   (__pyx_v_pos[0]) = '\x00';
1821
1822   /* "TabProxies.pyx":73
1823  *     if pos == NULL: raise ValueError( "malformatted entry at %s" % buffer )
1824  *     pos[0] = '\0'
1825  *     pos += 1             # <<<<<<<<<<<<<<
1826  *     return pos
1827  * 
1828  */
1829   __pyx_v_pos = (__pyx_v_pos + 1);
1830
1831   /* "TabProxies.pyx":74
1832  *     pos[0] = '\0'
1833  *     pos += 1
1834  *     return pos             # <<<<<<<<<<<<<<
1835  * 
1836  * cdef char *StrOrEmpty( char * buffer ):
1837  */
1838   __pyx_r = __pyx_v_pos;
1839   goto __pyx_L0;
1840
1841   __pyx_r = 0;
1842   goto __pyx_L0;
1843   __pyx_L1_error:;
1844   __Pyx_XDECREF(__pyx_t_2);
1845   __Pyx_XDECREF(__pyx_t_3);
1846   __Pyx_WriteUnraisable("TabProxies.nextItem", __pyx_clineno, __pyx_lineno, __pyx_filename);
1847   __pyx_r = 0;
1848   __pyx_L0:;
1849   __Pyx_RefNannyFinishContext();
1850   return __pyx_r;
1851 }
1852
1853 /* "TabProxies.pyx":76
1854  *     return pos
1855  * 
1856  * cdef char *StrOrEmpty( char * buffer ):             # <<<<<<<<<<<<<<
1857  *      if buffer == NULL: return ""
1858  *      else: return buffer
1859  */
1860
1861 static char *__pyx_f_10TabProxies_StrOrEmpty(char *__pyx_v_buffer) {
1862   char *__pyx_r;
1863   __Pyx_RefNannyDeclarations
1864   int __pyx_t_1;
1865   __Pyx_RefNannySetupContext("StrOrEmpty", 0);
1866
1867   /* "TabProxies.pyx":77
1868  * 
1869  * cdef char *StrOrEmpty( char * buffer ):
1870  *      if buffer == NULL: return ""             # <<<<<<<<<<<<<<
1871  *      else: return buffer
1872  * 
1873  */
1874   __pyx_t_1 = (__pyx_v_buffer == NULL);
1875   if (__pyx_t_1) {
1876     __pyx_r = __pyx_k_6;
1877     goto __pyx_L0;
1878     goto __pyx_L3;
1879   }
1880   /*else*/ {
1881
1882     /* "TabProxies.pyx":78
1883  * cdef char *StrOrEmpty( char * buffer ):
1884  *      if buffer == NULL: return ""
1885  *      else: return buffer             # <<<<<<<<<<<<<<
1886  * 
1887  * cdef int isNew( char * p, char * buffer, size_t nbytes ):
1888  */
1889     __pyx_r = __pyx_v_buffer;
1890     goto __pyx_L0;
1891   }
1892   __pyx_L3:;
1893
1894   __pyx_r = 0;
1895   __pyx_L0:;
1896   __Pyx_RefNannyFinishContext();
1897   return __pyx_r;
1898 }
1899
1900 /* "TabProxies.pyx":80
1901  *      else: return buffer
1902  * 
1903  * cdef int isNew( char * p, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
1904  *      if p == NULL: return 0
1905  *      return not (buffer <= p < buffer + nbytes )
1906  */
1907
1908 static int __pyx_f_10TabProxies_isNew(char *__pyx_v_p, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
1909   int __pyx_r;
1910   __Pyx_RefNannyDeclarations
1911   int __pyx_t_1;
1912   __Pyx_RefNannySetupContext("isNew", 0);
1913
1914   /* "TabProxies.pyx":81
1915  * 
1916  * cdef int isNew( char * p, char * buffer, size_t nbytes ):
1917  *      if p == NULL: return 0             # <<<<<<<<<<<<<<
1918  *      return not (buffer <= p < buffer + nbytes )
1919  * 
1920  */
1921   __pyx_t_1 = (__pyx_v_p == NULL);
1922   if (__pyx_t_1) {
1923     __pyx_r = 0;
1924     goto __pyx_L0;
1925     goto __pyx_L3;
1926   }
1927   __pyx_L3:;
1928
1929   /* "TabProxies.pyx":82
1930  * cdef int isNew( char * p, char * buffer, size_t nbytes ):
1931  *      if p == NULL: return 0
1932  *      return not (buffer <= p < buffer + nbytes )             # <<<<<<<<<<<<<<
1933  * 
1934  * cdef class TupleProxy:
1935  */
1936   __pyx_t_1 = (__pyx_v_buffer <= __pyx_v_p);
1937   if (__pyx_t_1) {
1938     __pyx_t_1 = (__pyx_v_p < (__pyx_v_buffer + __pyx_v_nbytes));
1939   }
1940   __pyx_r = (!__pyx_t_1);
1941   goto __pyx_L0;
1942
1943   __pyx_r = 0;
1944   __pyx_L0:;
1945   __Pyx_RefNannyFinishContext();
1946   return __pyx_r;
1947 }
1948
1949 /* Python wrapper */
1950 static int __pyx_pw_10TabProxies_10TupleProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
1951 static int __pyx_pw_10TabProxies_10TupleProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
1952   int __pyx_r;
1953   __Pyx_RefNannyDeclarations
1954   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
1955   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
1956     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
1957   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
1958   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy___cinit__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
1959   __Pyx_RefNannyFinishContext();
1960   return __pyx_r;
1961 }
1962
1963 /* "TabProxies.pyx":95
1964  *     '''
1965  * 
1966  *     def __cinit__(self ):             # <<<<<<<<<<<<<<
1967  *         self.data = NULL
1968  *         self.fields = NULL
1969  */
1970
1971 static int __pyx_pf_10TabProxies_10TupleProxy___cinit__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
1972   int __pyx_r;
1973   __Pyx_RefNannyDeclarations
1974   __Pyx_RefNannySetupContext("__cinit__", 0);
1975
1976   /* "TabProxies.pyx":96
1977  * 
1978  *     def __cinit__(self ):
1979  *         self.data = NULL             # <<<<<<<<<<<<<<
1980  *         self.fields = NULL
1981  *         self.index = 0
1982  */
1983   __pyx_v_self->data = NULL;
1984
1985   /* "TabProxies.pyx":97
1986  *     def __cinit__(self ):
1987  *         self.data = NULL
1988  *         self.fields = NULL             # <<<<<<<<<<<<<<
1989  *         self.index = 0
1990  *         self.nbytes = 0
1991  */
1992   __pyx_v_self->fields = NULL;
1993
1994   /* "TabProxies.pyx":98
1995  *         self.data = NULL
1996  *         self.fields = NULL
1997  *         self.index = 0             # <<<<<<<<<<<<<<
1998  *         self.nbytes = 0
1999  *         self.is_modified = 0
2000  */
2001   __pyx_v_self->index = 0;
2002
2003   /* "TabProxies.pyx":99
2004  *         self.fields = NULL
2005  *         self.index = 0
2006  *         self.nbytes = 0             # <<<<<<<<<<<<<<
2007  *         self.is_modified = 0
2008  *         self.nfields = 0
2009  */
2010   __pyx_v_self->nbytes = 0;
2011
2012   /* "TabProxies.pyx":100
2013  *         self.index = 0
2014  *         self.nbytes = 0
2015  *         self.is_modified = 0             # <<<<<<<<<<<<<<
2016  *         self.nfields = 0
2017  *         # start counting at field offset
2018  */
2019   __pyx_v_self->is_modified = 0;
2020
2021   /* "TabProxies.pyx":101
2022  *         self.nbytes = 0
2023  *         self.is_modified = 0
2024  *         self.nfields = 0             # <<<<<<<<<<<<<<
2025  *         # start counting at field offset
2026  *         self.offset = 0
2027  */
2028   __pyx_v_self->nfields = 0;
2029
2030   /* "TabProxies.pyx":103
2031  *         self.nfields = 0
2032  *         # start counting at field offset
2033  *         self.offset = 0             # <<<<<<<<<<<<<<
2034  * 
2035  *     def __dealloc__(self):
2036  */
2037   __pyx_v_self->offset = 0;
2038
2039   __pyx_r = 0;
2040   __Pyx_RefNannyFinishContext();
2041   return __pyx_r;
2042 }
2043
2044 /* Python wrapper */
2045 static void __pyx_pw_10TabProxies_10TupleProxy_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
2046 static void __pyx_pw_10TabProxies_10TupleProxy_3__dealloc__(PyObject *__pyx_v_self) {
2047   __Pyx_RefNannyDeclarations
2048   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
2049   __pyx_pf_10TabProxies_10TupleProxy_2__dealloc__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
2050   __Pyx_RefNannyFinishContext();
2051 }
2052
2053 /* "TabProxies.pyx":105
2054  *         self.offset = 0
2055  * 
2056  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
2057  *         cdef int x
2058  *         if self.is_modified:
2059  */
2060
2061 static void __pyx_pf_10TabProxies_10TupleProxy_2__dealloc__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
2062   int __pyx_v_x;
2063   __Pyx_RefNannyDeclarations
2064   int __pyx_t_1;
2065   int __pyx_t_2;
2066   int __pyx_t_3;
2067   __Pyx_RefNannySetupContext("__dealloc__", 0);
2068
2069   /* "TabProxies.pyx":107
2070  *     def __dealloc__(self):
2071  *         cdef int x
2072  *         if self.is_modified:             # <<<<<<<<<<<<<<
2073  *             for x from 0 <= x < self.nfields:
2074  *                 if isNew( self.fields[x], self.data, self.nbytes ):
2075  */
2076   if (__pyx_v_self->is_modified) {
2077
2078     /* "TabProxies.pyx":108
2079  *         cdef int x
2080  *         if self.is_modified:
2081  *             for x from 0 <= x < self.nfields:             # <<<<<<<<<<<<<<
2082  *                 if isNew( self.fields[x], self.data, self.nbytes ):
2083  *                     free( self.fields[x] )
2084  */
2085     __pyx_t_1 = __pyx_v_self->nfields;
2086     for (__pyx_v_x = 0; __pyx_v_x < __pyx_t_1; __pyx_v_x++) {
2087
2088       /* "TabProxies.pyx":109
2089  *         if self.is_modified:
2090  *             for x from 0 <= x < self.nfields:
2091  *                 if isNew( self.fields[x], self.data, self.nbytes ):             # <<<<<<<<<<<<<<
2092  *                     free( self.fields[x] )
2093  *                     self.fields[x] = NULL
2094  */
2095       __pyx_t_2 = __pyx_f_10TabProxies_isNew((__pyx_v_self->fields[__pyx_v_x]), __pyx_v_self->data, __pyx_v_self->nbytes);
2096       if (__pyx_t_2) {
2097
2098         /* "TabProxies.pyx":110
2099  *             for x from 0 <= x < self.nfields:
2100  *                 if isNew( self.fields[x], self.data, self.nbytes ):
2101  *                     free( self.fields[x] )             # <<<<<<<<<<<<<<
2102  *                     self.fields[x] = NULL
2103  * 
2104  */
2105         free((__pyx_v_self->fields[__pyx_v_x]));
2106
2107         /* "TabProxies.pyx":111
2108  *                 if isNew( self.fields[x], self.data, self.nbytes ):
2109  *                     free( self.fields[x] )
2110  *                     self.fields[x] = NULL             # <<<<<<<<<<<<<<
2111  * 
2112  *         if self.data != NULL: free(self.data)
2113  */
2114         (__pyx_v_self->fields[__pyx_v_x]) = NULL;
2115         goto __pyx_L6;
2116       }
2117       __pyx_L6:;
2118     }
2119     goto __pyx_L3;
2120   }
2121   __pyx_L3:;
2122
2123   /* "TabProxies.pyx":113
2124  *                     self.fields[x] = NULL
2125  * 
2126  *         if self.data != NULL: free(self.data)             # <<<<<<<<<<<<<<
2127  *         if self.fields != NULL: free( self.fields )
2128  * 
2129  */
2130   __pyx_t_3 = (__pyx_v_self->data != NULL);
2131   if (__pyx_t_3) {
2132     free(__pyx_v_self->data);
2133     goto __pyx_L7;
2134   }
2135   __pyx_L7:;
2136
2137   /* "TabProxies.pyx":114
2138  * 
2139  *         if self.data != NULL: free(self.data)
2140  *         if self.fields != NULL: free( self.fields )             # <<<<<<<<<<<<<<
2141  * 
2142  *     cdef take( self, char * buffer, size_t nbytes ):
2143  */
2144   __pyx_t_3 = (__pyx_v_self->fields != NULL);
2145   if (__pyx_t_3) {
2146     free(__pyx_v_self->fields);
2147     goto __pyx_L8;
2148   }
2149   __pyx_L8:;
2150
2151   __Pyx_RefNannyFinishContext();
2152 }
2153
2154 /* "TabProxies.pyx":116
2155  *         if self.fields != NULL: free( self.fields )
2156  * 
2157  *     cdef take( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
2158  *         '''start presenting buffer.
2159  * 
2160  */
2161
2162 static PyObject *__pyx_f_10TabProxies_10TupleProxy_take(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
2163   PyObject *__pyx_r = NULL;
2164   __Pyx_RefNannyDeclarations
2165   PyObject *__pyx_t_1 = NULL;
2166   int __pyx_lineno = 0;
2167   const char *__pyx_filename = NULL;
2168   int __pyx_clineno = 0;
2169   __Pyx_RefNannySetupContext("take", 0);
2170
2171   /* "TabProxies.pyx":121
2172  *         Take ownership of the pointer.
2173  *         '''
2174  *         self.data = buffer             # <<<<<<<<<<<<<<
2175  *         self.nbytes = nbytes
2176  *         self.update( buffer, nbytes )
2177  */
2178   __pyx_v_self->data = __pyx_v_buffer;
2179
2180   /* "TabProxies.pyx":122
2181  *         '''
2182  *         self.data = buffer
2183  *         self.nbytes = nbytes             # <<<<<<<<<<<<<<
2184  *         self.update( buffer, nbytes )
2185  * 
2186  */
2187   __pyx_v_self->nbytes = __pyx_v_nbytes;
2188
2189   /* "TabProxies.pyx":123
2190  *         self.data = buffer
2191  *         self.nbytes = nbytes
2192  *         self.update( buffer, nbytes )             # <<<<<<<<<<<<<<
2193  * 
2194  *     cdef present( self, char * buffer, size_t nbytes ):
2195  */
2196   __pyx_t_1 = ((struct __pyx_vtabstruct_10TabProxies_TupleProxy *)__pyx_v_self->__pyx_vtab)->update(__pyx_v_self, __pyx_v_buffer, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2197   __Pyx_GOTREF(__pyx_t_1);
2198   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2199
2200   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
2201   goto __pyx_L0;
2202   __pyx_L1_error:;
2203   __Pyx_XDECREF(__pyx_t_1);
2204   __Pyx_AddTraceback("TabProxies.TupleProxy.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
2205   __pyx_r = 0;
2206   __pyx_L0:;
2207   __Pyx_XGIVEREF(__pyx_r);
2208   __Pyx_RefNannyFinishContext();
2209   return __pyx_r;
2210 }
2211
2212 /* "TabProxies.pyx":125
2213  *         self.update( buffer, nbytes )
2214  * 
2215  *     cdef present( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
2216  *         '''start presenting buffer.
2217  * 
2218  */
2219
2220 static PyObject *__pyx_f_10TabProxies_10TupleProxy_present(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
2221   PyObject *__pyx_r = NULL;
2222   __Pyx_RefNannyDeclarations
2223   PyObject *__pyx_t_1 = NULL;
2224   int __pyx_lineno = 0;
2225   const char *__pyx_filename = NULL;
2226   int __pyx_clineno = 0;
2227   __Pyx_RefNannySetupContext("present", 0);
2228
2229   /* "TabProxies.pyx":130
2230  *         Do not take ownership of the pointer.
2231  *         '''
2232  *         self.update( buffer, nbytes )             # <<<<<<<<<<<<<<
2233  * 
2234  *     cdef copy( self, char * buffer, size_t nbytes ):
2235  */
2236   __pyx_t_1 = ((struct __pyx_vtabstruct_10TabProxies_TupleProxy *)__pyx_v_self->__pyx_vtab)->update(__pyx_v_self, __pyx_v_buffer, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2237   __Pyx_GOTREF(__pyx_t_1);
2238   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2239
2240   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
2241   goto __pyx_L0;
2242   __pyx_L1_error:;
2243   __Pyx_XDECREF(__pyx_t_1);
2244   __Pyx_AddTraceback("TabProxies.TupleProxy.present", __pyx_clineno, __pyx_lineno, __pyx_filename);
2245   __pyx_r = 0;
2246   __pyx_L0:;
2247   __Pyx_XGIVEREF(__pyx_r);
2248   __Pyx_RefNannyFinishContext();
2249   return __pyx_r;
2250 }
2251
2252 /* "TabProxies.pyx":132
2253  *         self.update( buffer, nbytes )
2254  * 
2255  *     cdef copy( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
2256  *         '''start presenting buffer of size *nbytes*.
2257  * 
2258  */
2259
2260 static PyObject *__pyx_f_10TabProxies_10TupleProxy_copy(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
2261   int __pyx_v_s;
2262   PyObject *__pyx_r = NULL;
2263   __Pyx_RefNannyDeclarations
2264   int __pyx_t_1;
2265   PyObject *__pyx_t_2 = NULL;
2266   int __pyx_lineno = 0;
2267   const char *__pyx_filename = NULL;
2268   int __pyx_clineno = 0;
2269   __Pyx_RefNannySetupContext("copy", 0);
2270
2271   /* "TabProxies.pyx":141
2272  *         cdef int s
2273  *         # +1 for '\0'
2274  *         s = sizeof(char) *  (nbytes + 1)             # <<<<<<<<<<<<<<
2275  *         self.data = <char*>malloc( s )
2276  *         if self.data == NULL:
2277  */
2278   __pyx_v_s = ((sizeof(char)) * (__pyx_v_nbytes + 1));
2279
2280   /* "TabProxies.pyx":142
2281  *         # +1 for '\0'
2282  *         s = sizeof(char) *  (nbytes + 1)
2283  *         self.data = <char*>malloc( s )             # <<<<<<<<<<<<<<
2284  *         if self.data == NULL:
2285  *             raise ValueError("out of memory" )
2286  */
2287   __pyx_v_self->data = ((char *)malloc(__pyx_v_s));
2288
2289   /* "TabProxies.pyx":143
2290  *         s = sizeof(char) *  (nbytes + 1)
2291  *         self.data = <char*>malloc( s )
2292  *         if self.data == NULL:             # <<<<<<<<<<<<<<
2293  *             raise ValueError("out of memory" )
2294  *         self.nbytes = nbytes
2295  */
2296   __pyx_t_1 = (__pyx_v_self->data == NULL);
2297   if (__pyx_t_1) {
2298
2299     /* "TabProxies.pyx":144
2300  *         self.data = <char*>malloc( s )
2301  *         if self.data == NULL:
2302  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
2303  *         self.nbytes = nbytes
2304  *         memcpy( <char*>self.data, buffer, s )
2305  */
2306     __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2307     __Pyx_GOTREF(__pyx_t_2);
2308     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
2309     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2310     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2311     goto __pyx_L3;
2312   }
2313   __pyx_L3:;
2314
2315   /* "TabProxies.pyx":145
2316  *         if self.data == NULL:
2317  *             raise ValueError("out of memory" )
2318  *         self.nbytes = nbytes             # <<<<<<<<<<<<<<
2319  *         memcpy( <char*>self.data, buffer, s )
2320  *         self.update( self.data, nbytes )
2321  */
2322   __pyx_v_self->nbytes = __pyx_v_nbytes;
2323
2324   /* "TabProxies.pyx":146
2325  *             raise ValueError("out of memory" )
2326  *         self.nbytes = nbytes
2327  *         memcpy( <char*>self.data, buffer, s )             # <<<<<<<<<<<<<<
2328  *         self.update( self.data, nbytes )
2329  * 
2330  */
2331   memcpy(((char *)__pyx_v_self->data), __pyx_v_buffer, __pyx_v_s);
2332
2333   /* "TabProxies.pyx":147
2334  *         self.nbytes = nbytes
2335  *         memcpy( <char*>self.data, buffer, s )
2336  *         self.update( self.data, nbytes )             # <<<<<<<<<<<<<<
2337  * 
2338  *     cdef int getMaxFields( self, size_t nbytes ):
2339  */
2340   __pyx_t_2 = ((struct __pyx_vtabstruct_10TabProxies_TupleProxy *)__pyx_v_self->__pyx_vtab)->update(__pyx_v_self, __pyx_v_self->data, __pyx_v_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2341   __Pyx_GOTREF(__pyx_t_2);
2342   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2343
2344   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
2345   goto __pyx_L0;
2346   __pyx_L1_error:;
2347   __Pyx_XDECREF(__pyx_t_2);
2348   __Pyx_AddTraceback("TabProxies.TupleProxy.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
2349   __pyx_r = 0;
2350   __pyx_L0:;
2351   __Pyx_XGIVEREF(__pyx_r);
2352   __Pyx_RefNannyFinishContext();
2353   return __pyx_r;
2354 }
2355
2356 /* "TabProxies.pyx":149
2357  *         self.update( self.data, nbytes )
2358  * 
2359  *     cdef int getMaxFields( self, size_t nbytes ):             # <<<<<<<<<<<<<<
2360  *         '''initialize fields.'''
2361  *         return nbytes / 2
2362  */
2363
2364 static int __pyx_f_10TabProxies_10TupleProxy_getMaxFields(CYTHON_UNUSED struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, size_t __pyx_v_nbytes) {
2365   int __pyx_r;
2366   __Pyx_RefNannyDeclarations
2367   __Pyx_RefNannySetupContext("getMaxFields", 0);
2368
2369   /* "TabProxies.pyx":151
2370  *     cdef int getMaxFields( self, size_t nbytes ):
2371  *         '''initialize fields.'''
2372  *         return nbytes / 2             # <<<<<<<<<<<<<<
2373  * 
2374  *     cdef update( self, char * buffer, size_t nbytes ):
2375  */
2376   __pyx_r = (__pyx_v_nbytes / 2);
2377   goto __pyx_L0;
2378
2379   __pyx_r = 0;
2380   __pyx_L0:;
2381   __Pyx_RefNannyFinishContext();
2382   return __pyx_r;
2383 }
2384
2385 /* "TabProxies.pyx":153
2386  *         return nbytes / 2
2387  * 
2388  *     cdef update( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
2389  *         '''update internal data.
2390  * 
2391  */
2392
2393 static PyObject *__pyx_f_10TabProxies_10TupleProxy_update(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
2394   char *__pyx_v_pos;
2395   char *__pyx_v_old_pos;
2396   int __pyx_v_field;
2397   int __pyx_v_max_fields;
2398   int __pyx_v_x;
2399   PyObject *__pyx_r = NULL;
2400   __Pyx_RefNannyDeclarations
2401   int __pyx_t_1;
2402   PyObject *__pyx_t_2 = NULL;
2403   PyObject *__pyx_t_3 = NULL;
2404   int __pyx_t_4;
2405   int __pyx_t_5;
2406   int __pyx_t_6;
2407   int __pyx_t_7;
2408   int __pyx_t_8;
2409   int __pyx_lineno = 0;
2410   const char *__pyx_filename = NULL;
2411   int __pyx_clineno = 0;
2412   __Pyx_RefNannySetupContext("update", 0);
2413
2414   /* "TabProxies.pyx":173
2415  *         cdef int max_fields, x
2416  * 
2417  *         assert strlen(buffer) == nbytes             # <<<<<<<<<<<<<<
2418  * 
2419  *         if buffer[nbytes] != 0:
2420  */
2421   #ifndef CYTHON_WITHOUT_ASSERTIONS
2422   if (unlikely(!(strlen(__pyx_v_buffer) == __pyx_v_nbytes))) {
2423     PyErr_SetNone(PyExc_AssertionError);
2424     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2425   }
2426   #endif
2427
2428   /* "TabProxies.pyx":175
2429  *         assert strlen(buffer) == nbytes
2430  * 
2431  *         if buffer[nbytes] != 0:             # <<<<<<<<<<<<<<
2432  *             raise ValueError( "incomplete line at %s" % buffer )
2433  * 
2434  */
2435   __pyx_t_1 = ((__pyx_v_buffer[__pyx_v_nbytes]) != 0);
2436   if (__pyx_t_1) {
2437
2438     /* "TabProxies.pyx":176
2439  * 
2440  *         if buffer[nbytes] != 0:
2441  *             raise ValueError( "incomplete line at %s" % buffer )             # <<<<<<<<<<<<<<
2442  * 
2443  *         #################################
2444  */
2445     __pyx_t_2 = PyBytes_FromString(__pyx_v_buffer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2446     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
2447     __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2448     __Pyx_GOTREF(((PyObject *)__pyx_t_3));
2449     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
2450     __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2451     __Pyx_GOTREF(__pyx_t_2);
2452     PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
2453     __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
2454     __pyx_t_3 = 0;
2455     __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2456     __Pyx_GOTREF(__pyx_t_3);
2457     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
2458     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
2459     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2460     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2461     goto __pyx_L3;
2462   }
2463   __pyx_L3:;
2464
2465   /* "TabProxies.pyx":180
2466  *         #################################
2467  *         # remove line breaks and feeds and update number of bytes
2468  *         x = nbytes - 1             # <<<<<<<<<<<<<<
2469  *         while x > 0 and (buffer[x] == '\n' or buffer[x] == '\r'):
2470  *             buffer[x] = '\0'
2471  */
2472   __pyx_v_x = (__pyx_v_nbytes - 1);
2473
2474   /* "TabProxies.pyx":181
2475  *         # remove line breaks and feeds and update number of bytes
2476  *         x = nbytes - 1
2477  *         while x > 0 and (buffer[x] == '\n' or buffer[x] == '\r'):             # <<<<<<<<<<<<<<
2478  *             buffer[x] = '\0'
2479  *             x -= 1
2480  */
2481   while (1) {
2482     __pyx_t_1 = (__pyx_v_x > 0);
2483     if (__pyx_t_1) {
2484       __pyx_t_4 = ((__pyx_v_buffer[__pyx_v_x]) == '\n');
2485       if (!__pyx_t_4) {
2486         __pyx_t_5 = ((__pyx_v_buffer[__pyx_v_x]) == '\r');
2487         __pyx_t_6 = __pyx_t_5;
2488       } else {
2489         __pyx_t_6 = __pyx_t_4;
2490       }
2491       __pyx_t_4 = __pyx_t_6;
2492     } else {
2493       __pyx_t_4 = __pyx_t_1;
2494     }
2495     if (!__pyx_t_4) break;
2496
2497     /* "TabProxies.pyx":182
2498  *         x = nbytes - 1
2499  *         while x > 0 and (buffer[x] == '\n' or buffer[x] == '\r'):
2500  *             buffer[x] = '\0'             # <<<<<<<<<<<<<<
2501  *             x -= 1
2502  *         self.nbytes = x + 1
2503  */
2504     (__pyx_v_buffer[__pyx_v_x]) = '\x00';
2505
2506     /* "TabProxies.pyx":183
2507  *         while x > 0 and (buffer[x] == '\n' or buffer[x] == '\r'):
2508  *             buffer[x] = '\0'
2509  *             x -= 1             # <<<<<<<<<<<<<<
2510  *         self.nbytes = x + 1
2511  * 
2512  */
2513     __pyx_v_x = (__pyx_v_x - 1);
2514   }
2515
2516   /* "TabProxies.pyx":184
2517  *             buffer[x] = '\0'
2518  *             x -= 1
2519  *         self.nbytes = x + 1             # <<<<<<<<<<<<<<
2520  * 
2521  *         #################################
2522  */
2523   __pyx_v_self->nbytes = (__pyx_v_x + 1);
2524
2525   /* "TabProxies.pyx":188
2526  *         #################################
2527  *         # clear data
2528  *         if self.fields != NULL: free(self.fields)             # <<<<<<<<<<<<<<
2529  * 
2530  *         for field from 0 <= field < self.nfields:
2531  */
2532   __pyx_t_4 = (__pyx_v_self->fields != NULL);
2533   if (__pyx_t_4) {
2534     free(__pyx_v_self->fields);
2535     goto __pyx_L6;
2536   }
2537   __pyx_L6:;
2538
2539   /* "TabProxies.pyx":190
2540  *         if self.fields != NULL: free(self.fields)
2541  * 
2542  *         for field from 0 <= field < self.nfields:             # <<<<<<<<<<<<<<
2543  *             if isNew( self.fields[field], self.data, self.nbytes ):
2544  *                 free( self.fields[field] )
2545  */
2546   __pyx_t_7 = __pyx_v_self->nfields;
2547   for (__pyx_v_field = 0; __pyx_v_field < __pyx_t_7; __pyx_v_field++) {
2548
2549     /* "TabProxies.pyx":191
2550  * 
2551  *         for field from 0 <= field < self.nfields:
2552  *             if isNew( self.fields[field], self.data, self.nbytes ):             # <<<<<<<<<<<<<<
2553  *                 free( self.fields[field] )
2554  * 
2555  */
2556     __pyx_t_8 = __pyx_f_10TabProxies_isNew((__pyx_v_self->fields[__pyx_v_field]), __pyx_v_self->data, __pyx_v_self->nbytes);
2557     if (__pyx_t_8) {
2558
2559       /* "TabProxies.pyx":192
2560  *         for field from 0 <= field < self.nfields:
2561  *             if isNew( self.fields[field], self.data, self.nbytes ):
2562  *                 free( self.fields[field] )             # <<<<<<<<<<<<<<
2563  * 
2564  *         self.is_modified = self.nfields = 0
2565  */
2566       free((__pyx_v_self->fields[__pyx_v_field]));
2567       goto __pyx_L9;
2568     }
2569     __pyx_L9:;
2570   }
2571
2572   /* "TabProxies.pyx":194
2573  *                 free( self.fields[field] )
2574  * 
2575  *         self.is_modified = self.nfields = 0             # <<<<<<<<<<<<<<
2576  * 
2577  *         #################################
2578  */
2579   __pyx_v_self->is_modified = 0;
2580   __pyx_v_self->nfields = 0;
2581
2582   /* "TabProxies.pyx":198
2583  *         #################################
2584  *         # allocate new
2585  *         max_fields = self.getMaxFields( nbytes )             # <<<<<<<<<<<<<<
2586  *         self.fields = <char **>calloc( max_fields, sizeof(char *) )
2587  *         if self.fields == NULL:
2588  */
2589   __pyx_v_max_fields = ((struct __pyx_vtabstruct_10TabProxies_TupleProxy *)__pyx_v_self->__pyx_vtab)->getMaxFields(__pyx_v_self, __pyx_v_nbytes);
2590
2591   /* "TabProxies.pyx":199
2592  *         # allocate new
2593  *         max_fields = self.getMaxFields( nbytes )
2594  *         self.fields = <char **>calloc( max_fields, sizeof(char *) )             # <<<<<<<<<<<<<<
2595  *         if self.fields == NULL:
2596  *             raise ValueError("out of memory" )
2597  */
2598   __pyx_v_self->fields = ((char **)calloc(__pyx_v_max_fields, (sizeof(char *))));
2599
2600   /* "TabProxies.pyx":200
2601  *         max_fields = self.getMaxFields( nbytes )
2602  *         self.fields = <char **>calloc( max_fields, sizeof(char *) )
2603  *         if self.fields == NULL:             # <<<<<<<<<<<<<<
2604  *             raise ValueError("out of memory" )
2605  * 
2606  */
2607   __pyx_t_4 = (__pyx_v_self->fields == NULL);
2608   if (__pyx_t_4) {
2609
2610     /* "TabProxies.pyx":201
2611  *         self.fields = <char **>calloc( max_fields, sizeof(char *) )
2612  *         if self.fields == NULL:
2613  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
2614  * 
2615  *         #################################
2616  */
2617     __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2618     __Pyx_GOTREF(__pyx_t_3);
2619     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
2620     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2621     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2622     goto __pyx_L10;
2623   }
2624   __pyx_L10:;
2625
2626   /* "TabProxies.pyx":205
2627  *         #################################
2628  *         # start filling
2629  *         field = 0             # <<<<<<<<<<<<<<
2630  *         self.fields[field] = pos = buffer
2631  *         field += 1
2632  */
2633   __pyx_v_field = 0;
2634
2635   /* "TabProxies.pyx":206
2636  *         # start filling
2637  *         field = 0
2638  *         self.fields[field] = pos = buffer             # <<<<<<<<<<<<<<
2639  *         field += 1
2640  *         old_pos = pos
2641  */
2642   (__pyx_v_self->fields[__pyx_v_field]) = __pyx_v_buffer;
2643   __pyx_v_pos = __pyx_v_buffer;
2644
2645   /* "TabProxies.pyx":207
2646  *         field = 0
2647  *         self.fields[field] = pos = buffer
2648  *         field += 1             # <<<<<<<<<<<<<<
2649  *         old_pos = pos
2650  * 
2651  */
2652   __pyx_v_field = (__pyx_v_field + 1);
2653
2654   /* "TabProxies.pyx":208
2655  *         self.fields[field] = pos = buffer
2656  *         field += 1
2657  *         old_pos = pos             # <<<<<<<<<<<<<<
2658  * 
2659  *         while 1:
2660  */
2661   __pyx_v_old_pos = __pyx_v_pos;
2662
2663   /* "TabProxies.pyx":210
2664  *         old_pos = pos
2665  * 
2666  *         while 1:             # <<<<<<<<<<<<<<
2667  * 
2668  *             pos = <char*>memchr( pos, '\t', nbytes )
2669  */
2670   while (1) {
2671     if (!1) break;
2672
2673     /* "TabProxies.pyx":212
2674  *         while 1:
2675  * 
2676  *             pos = <char*>memchr( pos, '\t', nbytes )             # <<<<<<<<<<<<<<
2677  *             if pos == NULL: break
2678  *             pos[0] = '\0'
2679  */
2680     __pyx_v_pos = ((char *)memchr(__pyx_v_pos, '\t', __pyx_v_nbytes));
2681
2682     /* "TabProxies.pyx":213
2683  * 
2684  *             pos = <char*>memchr( pos, '\t', nbytes )
2685  *             if pos == NULL: break             # <<<<<<<<<<<<<<
2686  *             pos[0] = '\0'
2687  *             pos += 1
2688  */
2689     __pyx_t_4 = (__pyx_v_pos == NULL);
2690     if (__pyx_t_4) {
2691       goto __pyx_L12_break;
2692       goto __pyx_L13;
2693     }
2694     __pyx_L13:;
2695
2696     /* "TabProxies.pyx":214
2697  *             pos = <char*>memchr( pos, '\t', nbytes )
2698  *             if pos == NULL: break
2699  *             pos[0] = '\0'             # <<<<<<<<<<<<<<
2700  *             pos += 1
2701  *             self.fields[field] = pos
2702  */
2703     (__pyx_v_pos[0]) = '\x00';
2704
2705     /* "TabProxies.pyx":215
2706  *             if pos == NULL: break
2707  *             pos[0] = '\0'
2708  *             pos += 1             # <<<<<<<<<<<<<<
2709  *             self.fields[field] = pos
2710  *             field += 1
2711  */
2712     __pyx_v_pos = (__pyx_v_pos + 1);
2713
2714     /* "TabProxies.pyx":216
2715  *             pos[0] = '\0'
2716  *             pos += 1
2717  *             self.fields[field] = pos             # <<<<<<<<<<<<<<
2718  *             field += 1
2719  *             if field > max_fields:
2720  */
2721     (__pyx_v_self->fields[__pyx_v_field]) = __pyx_v_pos;
2722
2723     /* "TabProxies.pyx":217
2724  *             pos += 1
2725  *             self.fields[field] = pos
2726  *             field += 1             # <<<<<<<<<<<<<<
2727  *             if field > max_fields:
2728  *                 raise ValueError("row too large - more than %i fields" % max_fields )
2729  */
2730     __pyx_v_field = (__pyx_v_field + 1);
2731
2732     /* "TabProxies.pyx":218
2733  *             self.fields[field] = pos
2734  *             field += 1
2735  *             if field > max_fields:             # <<<<<<<<<<<<<<
2736  *                 raise ValueError("row too large - more than %i fields" % max_fields )
2737  *             nbytes -= pos - old_pos
2738  */
2739     __pyx_t_4 = (__pyx_v_field > __pyx_v_max_fields);
2740     if (__pyx_t_4) {
2741
2742       /* "TabProxies.pyx":219
2743  *             field += 1
2744  *             if field > max_fields:
2745  *                 raise ValueError("row too large - more than %i fields" % max_fields )             # <<<<<<<<<<<<<<
2746  *             nbytes -= pos - old_pos
2747  *             if nbytes < 0: break
2748  */
2749       __pyx_t_3 = PyInt_FromLong(__pyx_v_max_fields); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2750       __Pyx_GOTREF(__pyx_t_3);
2751       __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_11), __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2752       __Pyx_GOTREF(((PyObject *)__pyx_t_2));
2753       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2754       __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2755       __Pyx_GOTREF(__pyx_t_3);
2756       PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
2757       __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
2758       __pyx_t_2 = 0;
2759       __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2760       __Pyx_GOTREF(__pyx_t_2);
2761       __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
2762       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
2763       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2764       {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2765       goto __pyx_L14;
2766     }
2767     __pyx_L14:;
2768
2769     /* "TabProxies.pyx":220
2770  *             if field > max_fields:
2771  *                 raise ValueError("row too large - more than %i fields" % max_fields )
2772  *             nbytes -= pos - old_pos             # <<<<<<<<<<<<<<
2773  *             if nbytes < 0: break
2774  *             old_pos = pos
2775  */
2776     __pyx_v_nbytes = (__pyx_v_nbytes - (__pyx_v_pos - __pyx_v_old_pos));
2777
2778     /* "TabProxies.pyx":221
2779  *                 raise ValueError("row too large - more than %i fields" % max_fields )
2780  *             nbytes -= pos - old_pos
2781  *             if nbytes < 0: break             # <<<<<<<<<<<<<<
2782  *             old_pos = pos
2783  * 
2784  */
2785     __pyx_t_4 = (__pyx_v_nbytes < 0);
2786     if (__pyx_t_4) {
2787       goto __pyx_L12_break;
2788       goto __pyx_L15;
2789     }
2790     __pyx_L15:;
2791
2792     /* "TabProxies.pyx":222
2793  *             nbytes -= pos - old_pos
2794  *             if nbytes < 0: break
2795  *             old_pos = pos             # <<<<<<<<<<<<<<
2796  * 
2797  *         self.nfields = field
2798  */
2799     __pyx_v_old_pos = __pyx_v_pos;
2800   }
2801   __pyx_L12_break:;
2802
2803   /* "TabProxies.pyx":224
2804  *             old_pos = pos
2805  * 
2806  *         self.nfields = field             # <<<<<<<<<<<<<<
2807  * 
2808  *     def _getindex( self, int index ):
2809  */
2810   __pyx_v_self->nfields = __pyx_v_field;
2811
2812   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
2813   goto __pyx_L0;
2814   __pyx_L1_error:;
2815   __Pyx_XDECREF(__pyx_t_2);
2816   __Pyx_XDECREF(__pyx_t_3);
2817   __Pyx_AddTraceback("TabProxies.TupleProxy.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
2818   __pyx_r = 0;
2819   __pyx_L0:;
2820   __Pyx_XGIVEREF(__pyx_r);
2821   __Pyx_RefNannyFinishContext();
2822   return __pyx_r;
2823 }
2824
2825 /* Python wrapper */
2826 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_5_getindex(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
2827 static char __pyx_doc_10TabProxies_10TupleProxy_4_getindex[] = "return item at idx index";
2828 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_5_getindex(PyObject *__pyx_v_self, PyObject *__pyx_arg_index) {
2829   int __pyx_v_index;
2830   PyObject *__pyx_r = 0;
2831   __Pyx_RefNannyDeclarations
2832   __Pyx_RefNannySetupContext("_getindex (wrapper)", 0);
2833   assert(__pyx_arg_index); {
2834     __pyx_v_index = __Pyx_PyInt_AsInt(__pyx_arg_index); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2835   }
2836   goto __pyx_L4_argument_unpacking_done;
2837   __pyx_L3_error:;
2838   __Pyx_AddTraceback("TabProxies.TupleProxy._getindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
2839   __Pyx_RefNannyFinishContext();
2840   return NULL;
2841   __pyx_L4_argument_unpacking_done:;
2842   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_4_getindex(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), ((int)__pyx_v_index));
2843   __Pyx_RefNannyFinishContext();
2844   return __pyx_r;
2845 }
2846
2847 /* "TabProxies.pyx":226
2848  *         self.nfields = field
2849  * 
2850  *     def _getindex( self, int index ):             # <<<<<<<<<<<<<<
2851  *         '''return item at idx index'''
2852  *         cdef int i = index
2853  */
2854
2855 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_4_getindex(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, int __pyx_v_index) {
2856   int __pyx_v_i;
2857   PyObject *__pyx_r = NULL;
2858   __Pyx_RefNannyDeclarations
2859   int __pyx_t_1;
2860   PyObject *__pyx_t_2 = NULL;
2861   PyObject *__pyx_t_3 = NULL;
2862   PyObject *__pyx_t_4 = NULL;
2863   int __pyx_lineno = 0;
2864   const char *__pyx_filename = NULL;
2865   int __pyx_clineno = 0;
2866   __Pyx_RefNannySetupContext("_getindex", 0);
2867
2868   /* "TabProxies.pyx":228
2869  *     def _getindex( self, int index ):
2870  *         '''return item at idx index'''
2871  *         cdef int i = index             # <<<<<<<<<<<<<<
2872  *         if i < 0: i += self.nfields
2873  *         if i < 0: raise IndexError( "list index out of range" )
2874  */
2875   __pyx_v_i = __pyx_v_index;
2876
2877   /* "TabProxies.pyx":229
2878  *         '''return item at idx index'''
2879  *         cdef int i = index
2880  *         if i < 0: i += self.nfields             # <<<<<<<<<<<<<<
2881  *         if i < 0: raise IndexError( "list index out of range" )
2882  *         i += self.offset
2883  */
2884   __pyx_t_1 = (__pyx_v_i < 0);
2885   if (__pyx_t_1) {
2886     __pyx_v_i = (__pyx_v_i + __pyx_v_self->nfields);
2887     goto __pyx_L3;
2888   }
2889   __pyx_L3:;
2890
2891   /* "TabProxies.pyx":230
2892  *         cdef int i = index
2893  *         if i < 0: i += self.nfields
2894  *         if i < 0: raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
2895  *         i += self.offset
2896  *         if i >= self.nfields:
2897  */
2898   __pyx_t_1 = (__pyx_v_i < 0);
2899   if (__pyx_t_1) {
2900     __pyx_t_2 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2901     __Pyx_GOTREF(__pyx_t_2);
2902     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
2903     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2904     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2905     goto __pyx_L4;
2906   }
2907   __pyx_L4:;
2908
2909   /* "TabProxies.pyx":231
2910  *         if i < 0: i += self.nfields
2911  *         if i < 0: raise IndexError( "list index out of range" )
2912  *         i += self.offset             # <<<<<<<<<<<<<<
2913  *         if i >= self.nfields:
2914  *             raise IndexError( "list index out of range %i >= %i" % (i, self.nfields ))
2915  */
2916   __pyx_v_i = (__pyx_v_i + __pyx_v_self->offset);
2917
2918   /* "TabProxies.pyx":232
2919  *         if i < 0: raise IndexError( "list index out of range" )
2920  *         i += self.offset
2921  *         if i >= self.nfields:             # <<<<<<<<<<<<<<
2922  *             raise IndexError( "list index out of range %i >= %i" % (i, self.nfields ))
2923  *         return self.fields[i]
2924  */
2925   __pyx_t_1 = (__pyx_v_i >= __pyx_v_self->nfields);
2926   if (__pyx_t_1) {
2927
2928     /* "TabProxies.pyx":233
2929  *         i += self.offset
2930  *         if i >= self.nfields:
2931  *             raise IndexError( "list index out of range %i >= %i" % (i, self.nfields ))             # <<<<<<<<<<<<<<
2932  *         return self.fields[i]
2933  * 
2934  */
2935     __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2936     __Pyx_GOTREF(__pyx_t_2);
2937     __pyx_t_3 = PyInt_FromLong(__pyx_v_self->nfields); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2938     __Pyx_GOTREF(__pyx_t_3);
2939     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2940     __Pyx_GOTREF(__pyx_t_4);
2941     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
2942     __Pyx_GIVEREF(__pyx_t_2);
2943     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
2944     __Pyx_GIVEREF(__pyx_t_3);
2945     __pyx_t_2 = 0;
2946     __pyx_t_3 = 0;
2947     __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_14), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2948     __Pyx_GOTREF(((PyObject *)__pyx_t_3));
2949     __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
2950     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2951     __Pyx_GOTREF(__pyx_t_4);
2952     PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
2953     __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
2954     __pyx_t_3 = 0;
2955     __pyx_t_3 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2956     __Pyx_GOTREF(__pyx_t_3);
2957     __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
2958     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
2959     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2960     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2961     goto __pyx_L5;
2962   }
2963   __pyx_L5:;
2964
2965   /* "TabProxies.pyx":234
2966  *         if i >= self.nfields:
2967  *             raise IndexError( "list index out of range %i >= %i" % (i, self.nfields ))
2968  *         return self.fields[i]             # <<<<<<<<<<<<<<
2969  * 
2970  *     def __getitem__( self, key ):
2971  */
2972   __Pyx_XDECREF(__pyx_r);
2973   __pyx_t_3 = PyBytes_FromString((__pyx_v_self->fields[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2974   __Pyx_GOTREF(((PyObject *)__pyx_t_3));
2975   __pyx_r = ((PyObject *)__pyx_t_3);
2976   __pyx_t_3 = 0;
2977   goto __pyx_L0;
2978
2979   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
2980   goto __pyx_L0;
2981   __pyx_L1_error:;
2982   __Pyx_XDECREF(__pyx_t_2);
2983   __Pyx_XDECREF(__pyx_t_3);
2984   __Pyx_XDECREF(__pyx_t_4);
2985   __Pyx_AddTraceback("TabProxies.TupleProxy._getindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
2986   __pyx_r = NULL;
2987   __pyx_L0:;
2988   __Pyx_XGIVEREF(__pyx_r);
2989   __Pyx_RefNannyFinishContext();
2990   return __pyx_r;
2991 }
2992
2993 /* Python wrapper */
2994 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
2995 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
2996   PyObject *__pyx_r = 0;
2997   __Pyx_RefNannyDeclarations
2998   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
2999   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_6__getitem__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key));
3000   __Pyx_RefNannyFinishContext();
3001   return __pyx_r;
3002 }
3003
3004 /* "TabProxies.pyx":236
3005  *         return self.fields[i]
3006  * 
3007  *     def __getitem__( self, key ):             # <<<<<<<<<<<<<<
3008  *         if type(key) == int: return self._getindex( key )
3009  *         # slice object
3010  */
3011
3012 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_6__getitem__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_key) {
3013   PyObject *__pyx_v_start = NULL;
3014   PyObject *__pyx_v_end = NULL;
3015   PyObject *__pyx_v_step = NULL;
3016   PyObject *__pyx_v_result = NULL;
3017   PyObject *__pyx_v_index = NULL;
3018   PyObject *__pyx_r = NULL;
3019   __Pyx_RefNannyDeclarations
3020   PyObject *__pyx_t_1 = NULL;
3021   int __pyx_t_2;
3022   PyObject *__pyx_t_3 = NULL;
3023   PyObject *__pyx_t_4 = NULL;
3024   PyObject *__pyx_t_5 = NULL;
3025   PyObject *__pyx_t_6 = NULL;
3026   PyObject *(*__pyx_t_7)(PyObject *);
3027   Py_ssize_t __pyx_t_8;
3028   PyObject *(*__pyx_t_9)(PyObject *);
3029   int __pyx_t_10;
3030   int __pyx_lineno = 0;
3031   const char *__pyx_filename = NULL;
3032   int __pyx_clineno = 0;
3033   __Pyx_RefNannySetupContext("__getitem__", 0);
3034
3035   /* "TabProxies.pyx":237
3036  * 
3037  *     def __getitem__( self, key ):
3038  *         if type(key) == int: return self._getindex( key )             # <<<<<<<<<<<<<<
3039  *         # slice object
3040  *         start, end, step = key.indices( self.nfields )
3041  */
3042   __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_key)), ((PyObject *)((PyObject*)(&PyInt_Type))), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3043   __Pyx_GOTREF(__pyx_t_1);
3044   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3045   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3046   if (__pyx_t_2) {
3047     __Pyx_XDECREF(__pyx_r);
3048     __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3049     __Pyx_GOTREF(__pyx_t_1);
3050     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3051     __Pyx_GOTREF(__pyx_t_3);
3052     __Pyx_INCREF(__pyx_v_key);
3053     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
3054     __Pyx_GIVEREF(__pyx_v_key);
3055     __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3056     __Pyx_GOTREF(__pyx_t_4);
3057     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3058     __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
3059     __pyx_r = __pyx_t_4;
3060     __pyx_t_4 = 0;
3061     goto __pyx_L0;
3062     goto __pyx_L3;
3063   }
3064   __pyx_L3:;
3065
3066   /* "TabProxies.pyx":239
3067  *         if type(key) == int: return self._getindex( key )
3068  *         # slice object
3069  *         start, end, step = key.indices( self.nfields )             # <<<<<<<<<<<<<<
3070  *         result = []
3071  *         for index in range( start, end, step ):
3072  */
3073   __pyx_t_4 = PyObject_GetAttr(__pyx_v_key, __pyx_n_s__indices); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3074   __Pyx_GOTREF(__pyx_t_4);
3075   __pyx_t_3 = PyInt_FromLong(__pyx_v_self->nfields); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3076   __Pyx_GOTREF(__pyx_t_3);
3077   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3078   __Pyx_GOTREF(__pyx_t_1);
3079   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
3080   __Pyx_GIVEREF(__pyx_t_3);
3081   __pyx_t_3 = 0;
3082   __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3083   __Pyx_GOTREF(__pyx_t_3);
3084   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3085   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
3086   if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
3087     PyObject* sequence = __pyx_t_3;
3088     if (likely(PyTuple_CheckExact(sequence))) {
3089       if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) {
3090         if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
3091         else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
3092         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3093       }
3094       __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
3095       __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
3096       __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
3097     } else {
3098       if (unlikely(PyList_GET_SIZE(sequence) != 3)) {
3099         if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
3100         else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
3101         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3102       }
3103       __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
3104       __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
3105       __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
3106     }
3107     __Pyx_INCREF(__pyx_t_1);
3108     __Pyx_INCREF(__pyx_t_4);
3109     __Pyx_INCREF(__pyx_t_5);
3110     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3111   } else {
3112     Py_ssize_t index = -1;
3113     __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3114     __Pyx_GOTREF(__pyx_t_6);
3115     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3116     __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
3117     index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
3118     __Pyx_GOTREF(__pyx_t_1);
3119     index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
3120     __Pyx_GOTREF(__pyx_t_4);
3121     index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
3122     __Pyx_GOTREF(__pyx_t_5);
3123     if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3124     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3125     goto __pyx_L5_unpacking_done;
3126     __pyx_L4_unpacking_failed:;
3127     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3128     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
3129     if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
3130     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3131     __pyx_L5_unpacking_done:;
3132   }
3133   __pyx_v_start = __pyx_t_1;
3134   __pyx_t_1 = 0;
3135   __pyx_v_end = __pyx_t_4;
3136   __pyx_t_4 = 0;
3137   __pyx_v_step = __pyx_t_5;
3138   __pyx_t_5 = 0;
3139
3140   /* "TabProxies.pyx":240
3141  *         # slice object
3142  *         start, end, step = key.indices( self.nfields )
3143  *         result = []             # <<<<<<<<<<<<<<
3144  *         for index in range( start, end, step ):
3145  *             result.append( self._getindex( index ) )
3146  */
3147   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3148   __Pyx_GOTREF(__pyx_t_3);
3149   __pyx_v_result = __pyx_t_3;
3150   __pyx_t_3 = 0;
3151
3152   /* "TabProxies.pyx":241
3153  *         start, end, step = key.indices( self.nfields )
3154  *         result = []
3155  *         for index in range( start, end, step ):             # <<<<<<<<<<<<<<
3156  *             result.append( self._getindex( index ) )
3157  *         return result
3158  */
3159   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3160   __Pyx_GOTREF(__pyx_t_3);
3161   __Pyx_INCREF(__pyx_v_start);
3162   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_start);
3163   __Pyx_GIVEREF(__pyx_v_start);
3164   __Pyx_INCREF(__pyx_v_end);
3165   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_end);
3166   __Pyx_GIVEREF(__pyx_v_end);
3167   __Pyx_INCREF(__pyx_v_step);
3168   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_step);
3169   __Pyx_GIVEREF(__pyx_v_step);
3170   __pyx_t_5 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3171   __Pyx_GOTREF(__pyx_t_5);
3172   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
3173   if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
3174     __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
3175     __pyx_t_9 = NULL;
3176   } else {
3177     __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3178     __Pyx_GOTREF(__pyx_t_3);
3179     __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext;
3180   }
3181   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3182   for (;;) {
3183     if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_3)) {
3184       if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
3185       __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++;
3186     } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_3)) {
3187       if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
3188       __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++;
3189     } else {
3190       __pyx_t_5 = __pyx_t_9(__pyx_t_3);
3191       if (unlikely(!__pyx_t_5)) {
3192         if (PyErr_Occurred()) {
3193           if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
3194           else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3195         }
3196         break;
3197       }
3198       __Pyx_GOTREF(__pyx_t_5);
3199     }
3200     __Pyx_XDECREF(__pyx_v_index);
3201     __pyx_v_index = __pyx_t_5;
3202     __pyx_t_5 = 0;
3203
3204     /* "TabProxies.pyx":242
3205  *         result = []
3206  *         for index in range( start, end, step ):
3207  *             result.append( self._getindex( index ) )             # <<<<<<<<<<<<<<
3208  *         return result
3209  * 
3210  */
3211     __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3212     __Pyx_GOTREF(__pyx_t_5);
3213     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3214     __Pyx_GOTREF(__pyx_t_4);
3215     __Pyx_INCREF(__pyx_v_index);
3216     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_index);
3217     __Pyx_GIVEREF(__pyx_v_index);
3218     __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3219     __Pyx_GOTREF(__pyx_t_1);
3220     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3221     __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
3222     __pyx_t_10 = PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3223     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3224   }
3225   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3226
3227   /* "TabProxies.pyx":243
3228  *         for index in range( start, end, step ):
3229  *             result.append( self._getindex( index ) )
3230  *         return result             # <<<<<<<<<<<<<<
3231  * 
3232  *     def _setindex( self, index, value ):
3233  */
3234   __Pyx_XDECREF(__pyx_r);
3235   __Pyx_INCREF(((PyObject *)__pyx_v_result));
3236   __pyx_r = ((PyObject *)__pyx_v_result);
3237   goto __pyx_L0;
3238
3239   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
3240   goto __pyx_L0;
3241   __pyx_L1_error:;
3242   __Pyx_XDECREF(__pyx_t_1);
3243   __Pyx_XDECREF(__pyx_t_3);
3244   __Pyx_XDECREF(__pyx_t_4);
3245   __Pyx_XDECREF(__pyx_t_5);
3246   __Pyx_XDECREF(__pyx_t_6);
3247   __Pyx_AddTraceback("TabProxies.TupleProxy.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3248   __pyx_r = NULL;
3249   __pyx_L0:;
3250   __Pyx_XDECREF(__pyx_v_start);
3251   __Pyx_XDECREF(__pyx_v_end);
3252   __Pyx_XDECREF(__pyx_v_step);
3253   __Pyx_XDECREF(__pyx_v_result);
3254   __Pyx_XDECREF(__pyx_v_index);
3255   __Pyx_XGIVEREF(__pyx_r);
3256   __Pyx_RefNannyFinishContext();
3257   return __pyx_r;
3258 }
3259
3260 /* Python wrapper */
3261 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_9_setindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3262 static char __pyx_doc_10TabProxies_10TupleProxy_8_setindex[] = "set item at idx index.";
3263 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_9_setindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3264   PyObject *__pyx_v_index = 0;
3265   PyObject *__pyx_v_value = 0;
3266   static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__value,0};
3267   PyObject *__pyx_r = 0;
3268   __Pyx_RefNannyDeclarations
3269   __Pyx_RefNannySetupContext("_setindex (wrapper)", 0);
3270   {
3271     PyObject* values[2] = {0,0};
3272     if (unlikely(__pyx_kwds)) {
3273       Py_ssize_t kw_args;
3274       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3275       switch (pos_args) {
3276         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3277         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3278         case  0: break;
3279         default: goto __pyx_L5_argtuple_error;
3280       }
3281       kw_args = PyDict_Size(__pyx_kwds);
3282       switch (pos_args) {
3283         case  0:
3284         values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
3285         if (likely(values[0])) kw_args--;
3286         else goto __pyx_L5_argtuple_error;
3287         case  1:
3288         values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
3289         if (likely(values[1])) kw_args--;
3290         else {
3291           __Pyx_RaiseArgtupleInvalid("_setindex", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3292         }
3293       }
3294       if (unlikely(kw_args > 0)) {
3295         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_setindex") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3296       }
3297     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
3298       goto __pyx_L5_argtuple_error;
3299     } else {
3300       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3301       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3302     }
3303     __pyx_v_index = values[0];
3304     __pyx_v_value = values[1];
3305   }
3306   goto __pyx_L4_argument_unpacking_done;
3307   __pyx_L5_argtuple_error:;
3308   __Pyx_RaiseArgtupleInvalid("_setindex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3309   __pyx_L3_error:;
3310   __Pyx_AddTraceback("TabProxies.TupleProxy._setindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
3311   __Pyx_RefNannyFinishContext();
3312   return NULL;
3313   __pyx_L4_argument_unpacking_done:;
3314   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_8_setindex(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), __pyx_v_index, __pyx_v_value);
3315   __Pyx_RefNannyFinishContext();
3316   return __pyx_r;
3317 }
3318
3319 /* "TabProxies.pyx":245
3320  *         return result
3321  * 
3322  *     def _setindex( self, index, value ):             # <<<<<<<<<<<<<<
3323  *         '''set item at idx index.'''
3324  *         cdef int idx = index
3325  */
3326
3327 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_8_setindex(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
3328   int __pyx_v_idx;
3329   char *__pyx_v_tmp;
3330   PyObject *__pyx_r = NULL;
3331   __Pyx_RefNannyDeclarations
3332   int __pyx_t_1;
3333   int __pyx_t_2;
3334   PyObject *__pyx_t_3 = NULL;
3335   char *__pyx_t_4;
3336   int __pyx_lineno = 0;
3337   const char *__pyx_filename = NULL;
3338   int __pyx_clineno = 0;
3339   __Pyx_RefNannySetupContext("_setindex", 0);
3340   __Pyx_INCREF(__pyx_v_value);
3341
3342   /* "TabProxies.pyx":247
3343  *     def _setindex( self, index, value ):
3344  *         '''set item at idx index.'''
3345  *         cdef int idx = index             # <<<<<<<<<<<<<<
3346  *         if idx < 0: raise IndexError( "list index out of range" )
3347  *         if idx >= self.nfields:
3348  */
3349   __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_index); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3350   __pyx_v_idx = __pyx_t_1;
3351
3352   /* "TabProxies.pyx":248
3353  *         '''set item at idx index.'''
3354  *         cdef int idx = index
3355  *         if idx < 0: raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
3356  *         if idx >= self.nfields:
3357  *             raise IndexError( "list index out of range" )
3358  */
3359   __pyx_t_2 = (__pyx_v_idx < 0);
3360   if (__pyx_t_2) {
3361     __pyx_t_3 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3362     __Pyx_GOTREF(__pyx_t_3);
3363     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
3364     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3365     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3366     goto __pyx_L3;
3367   }
3368   __pyx_L3:;
3369
3370   /* "TabProxies.pyx":249
3371  *         cdef int idx = index
3372  *         if idx < 0: raise IndexError( "list index out of range" )
3373  *         if idx >= self.nfields:             # <<<<<<<<<<<<<<
3374  *             raise IndexError( "list index out of range" )
3375  * 
3376  */
3377   __pyx_t_2 = (__pyx_v_idx >= __pyx_v_self->nfields);
3378   if (__pyx_t_2) {
3379
3380     /* "TabProxies.pyx":250
3381  *         if idx < 0: raise IndexError( "list index out of range" )
3382  *         if idx >= self.nfields:
3383  *             raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
3384  * 
3385  *         if isNew( self.fields[idx], self.data, self.nbytes ):
3386  */
3387     __pyx_t_3 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3388     __Pyx_GOTREF(__pyx_t_3);
3389     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
3390     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3391     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3392     goto __pyx_L4;
3393   }
3394   __pyx_L4:;
3395
3396   /* "TabProxies.pyx":252
3397  *             raise IndexError( "list index out of range" )
3398  * 
3399  *         if isNew( self.fields[idx], self.data, self.nbytes ):             # <<<<<<<<<<<<<<
3400  *             free( self.fields[idx] )
3401  * 
3402  */
3403   __pyx_t_1 = __pyx_f_10TabProxies_isNew((__pyx_v_self->fields[__pyx_v_idx]), __pyx_v_self->data, __pyx_v_self->nbytes);
3404   if (__pyx_t_1) {
3405
3406     /* "TabProxies.pyx":253
3407  * 
3408  *         if isNew( self.fields[idx], self.data, self.nbytes ):
3409  *             free( self.fields[idx] )             # <<<<<<<<<<<<<<
3410  * 
3411  *         self.is_modified = 1
3412  */
3413     free((__pyx_v_self->fields[__pyx_v_idx]));
3414     goto __pyx_L5;
3415   }
3416   __pyx_L5:;
3417
3418   /* "TabProxies.pyx":255
3419  *             free( self.fields[idx] )
3420  * 
3421  *         self.is_modified = 1             # <<<<<<<<<<<<<<
3422  * 
3423  *         if value == None:
3424  */
3425   __pyx_v_self->is_modified = 1;
3426
3427   /* "TabProxies.pyx":257
3428  *         self.is_modified = 1
3429  * 
3430  *         if value == None:             # <<<<<<<<<<<<<<
3431  *             self.fields[idx] = NULL
3432  *             return
3433  */
3434   __pyx_t_3 = PyObject_RichCompare(__pyx_v_value, Py_None, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3435   __Pyx_GOTREF(__pyx_t_3);
3436   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3437   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3438   if (__pyx_t_2) {
3439
3440     /* "TabProxies.pyx":258
3441  * 
3442  *         if value == None:
3443  *             self.fields[idx] = NULL             # <<<<<<<<<<<<<<
3444  *             return
3445  * 
3446  */
3447     (__pyx_v_self->fields[__pyx_v_idx]) = NULL;
3448
3449     /* "TabProxies.pyx":259
3450  *         if value == None:
3451  *             self.fields[idx] = NULL
3452  *             return             # <<<<<<<<<<<<<<
3453  * 
3454  *         # conversion with error checking
3455  */
3456     __Pyx_XDECREF(__pyx_r);
3457     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
3458     goto __pyx_L0;
3459     goto __pyx_L6;
3460   }
3461   __pyx_L6:;
3462
3463   /* "TabProxies.pyx":262
3464  * 
3465  *         # conversion with error checking
3466  *         value = _force_bytes(value)             # <<<<<<<<<<<<<<
3467  *         cdef char * tmp = <char*>value
3468  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )
3469  */
3470   __pyx_t_3 = ((PyObject *)__pyx_f_10TabProxies__force_bytes(__pyx_v_value)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3471   __Pyx_GOTREF(__pyx_t_3);
3472   __Pyx_DECREF(__pyx_v_value);
3473   __pyx_v_value = __pyx_t_3;
3474   __pyx_t_3 = 0;
3475
3476   /* "TabProxies.pyx":263
3477  *         # conversion with error checking
3478  *         value = _force_bytes(value)
3479  *         cdef char * tmp = <char*>value             # <<<<<<<<<<<<<<
3480  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )
3481  *         if self.fields[idx] == NULL:
3482  */
3483   __pyx_t_4 = PyBytes_AsString(__pyx_v_value); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3484   __pyx_v_tmp = ((char *)__pyx_t_4);
3485
3486   /* "TabProxies.pyx":264
3487  *         value = _force_bytes(value)
3488  *         cdef char * tmp = <char*>value
3489  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )             # <<<<<<<<<<<<<<
3490  *         if self.fields[idx] == NULL:
3491  *             raise ValueError("out of memory" )
3492  */
3493   (__pyx_v_self->fields[__pyx_v_idx]) = ((char *)malloc(((strlen(__pyx_v_tmp) + 1) * (sizeof(char)))));
3494
3495   /* "TabProxies.pyx":265
3496  *         cdef char * tmp = <char*>value
3497  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )
3498  *         if self.fields[idx] == NULL:             # <<<<<<<<<<<<<<
3499  *             raise ValueError("out of memory" )
3500  *         strcpy( self.fields[idx], tmp )
3501  */
3502   __pyx_t_2 = ((__pyx_v_self->fields[__pyx_v_idx]) == NULL);
3503   if (__pyx_t_2) {
3504
3505     /* "TabProxies.pyx":266
3506  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )
3507  *         if self.fields[idx] == NULL:
3508  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
3509  *         strcpy( self.fields[idx], tmp )
3510  * 
3511  */
3512     __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3513     __Pyx_GOTREF(__pyx_t_3);
3514     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
3515     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3516     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3517     goto __pyx_L7;
3518   }
3519   __pyx_L7:;
3520
3521   /* "TabProxies.pyx":267
3522  *         if self.fields[idx] == NULL:
3523  *             raise ValueError("out of memory" )
3524  *         strcpy( self.fields[idx], tmp )             # <<<<<<<<<<<<<<
3525  * 
3526  *     def __setitem__(self, index, value ):
3527  */
3528   strcpy((__pyx_v_self->fields[__pyx_v_idx]), __pyx_v_tmp);
3529
3530   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
3531   goto __pyx_L0;
3532   __pyx_L1_error:;
3533   __Pyx_XDECREF(__pyx_t_3);
3534   __Pyx_AddTraceback("TabProxies.TupleProxy._setindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
3535   __pyx_r = NULL;
3536   __pyx_L0:;
3537   __Pyx_XDECREF(__pyx_v_value);
3538   __Pyx_XGIVEREF(__pyx_r);
3539   __Pyx_RefNannyFinishContext();
3540   return __pyx_r;
3541 }
3542
3543 /* Python wrapper */
3544 static int __pyx_pw_10TabProxies_10TupleProxy_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
3545 static char __pyx_doc_10TabProxies_10TupleProxy_10__setitem__[] = "set item at *index* to *value*";
3546 struct wrapperbase __pyx_wrapperbase_10TabProxies_10TupleProxy_10__setitem__;
3547 static int __pyx_pw_10TabProxies_10TupleProxy_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
3548   int __pyx_r;
3549   __Pyx_RefNannyDeclarations
3550   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
3551   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_10__setitem__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));
3552   __Pyx_RefNannyFinishContext();
3553   return __pyx_r;
3554 }
3555
3556 /* "TabProxies.pyx":269
3557  *         strcpy( self.fields[idx], tmp )
3558  * 
3559  *     def __setitem__(self, index, value ):             # <<<<<<<<<<<<<<
3560  *         '''set item at *index* to *value*'''
3561  *         cdef int i = index
3562  */
3563
3564 static int __pyx_pf_10TabProxies_10TupleProxy_10__setitem__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
3565   int __pyx_v_i;
3566   int __pyx_r;
3567   __Pyx_RefNannyDeclarations
3568   int __pyx_t_1;
3569   int __pyx_t_2;
3570   PyObject *__pyx_t_3 = NULL;
3571   PyObject *__pyx_t_4 = NULL;
3572   PyObject *__pyx_t_5 = NULL;
3573   int __pyx_lineno = 0;
3574   const char *__pyx_filename = NULL;
3575   int __pyx_clineno = 0;
3576   __Pyx_RefNannySetupContext("__setitem__", 0);
3577
3578   /* "TabProxies.pyx":271
3579  *     def __setitem__(self, index, value ):
3580  *         '''set item at *index* to *value*'''
3581  *         cdef int i = index             # <<<<<<<<<<<<<<
3582  *         if i < 0: i += self.nfields
3583  *         i += self.offset
3584  */
3585   __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_index); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3586   __pyx_v_i = __pyx_t_1;
3587
3588   /* "TabProxies.pyx":272
3589  *         '''set item at *index* to *value*'''
3590  *         cdef int i = index
3591  *         if i < 0: i += self.nfields             # <<<<<<<<<<<<<<
3592  *         i += self.offset
3593  * 
3594  */
3595   __pyx_t_2 = (__pyx_v_i < 0);
3596   if (__pyx_t_2) {
3597     __pyx_v_i = (__pyx_v_i + __pyx_v_self->nfields);
3598     goto __pyx_L3;
3599   }
3600   __pyx_L3:;
3601
3602   /* "TabProxies.pyx":273
3603  *         cdef int i = index
3604  *         if i < 0: i += self.nfields
3605  *         i += self.offset             # <<<<<<<<<<<<<<
3606  * 
3607  *         self._setindex( i, value )
3608  */
3609   __pyx_v_i = (__pyx_v_i + __pyx_v_self->offset);
3610
3611   /* "TabProxies.pyx":275
3612  *         i += self.offset
3613  * 
3614  *         self._setindex( i, value )             # <<<<<<<<<<<<<<
3615  * 
3616  *     def __len__(self):
3617  */
3618   __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3619   __Pyx_GOTREF(__pyx_t_3);
3620   __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3621   __Pyx_GOTREF(__pyx_t_4);
3622   __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3623   __Pyx_GOTREF(__pyx_t_5);
3624   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
3625   __Pyx_GIVEREF(__pyx_t_4);
3626   __Pyx_INCREF(__pyx_v_value);
3627   PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_value);
3628   __Pyx_GIVEREF(__pyx_v_value);
3629   __pyx_t_4 = 0;
3630   __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3631   __Pyx_GOTREF(__pyx_t_4);
3632   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3633   __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
3634   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3635
3636   __pyx_r = 0;
3637   goto __pyx_L0;
3638   __pyx_L1_error:;
3639   __Pyx_XDECREF(__pyx_t_3);
3640   __Pyx_XDECREF(__pyx_t_4);
3641   __Pyx_XDECREF(__pyx_t_5);
3642   __Pyx_AddTraceback("TabProxies.TupleProxy.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3643   __pyx_r = -1;
3644   __pyx_L0:;
3645   __Pyx_RefNannyFinishContext();
3646   return __pyx_r;
3647 }
3648
3649 /* Python wrapper */
3650 static Py_ssize_t __pyx_pw_10TabProxies_10TupleProxy_13__len__(PyObject *__pyx_v_self); /*proto*/
3651 static Py_ssize_t __pyx_pw_10TabProxies_10TupleProxy_13__len__(PyObject *__pyx_v_self) {
3652   Py_ssize_t __pyx_r;
3653   __Pyx_RefNannyDeclarations
3654   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
3655   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_12__len__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
3656   __Pyx_RefNannyFinishContext();
3657   return __pyx_r;
3658 }
3659
3660 /* "TabProxies.pyx":277
3661  *         self._setindex( i, value )
3662  * 
3663  *     def __len__(self):             # <<<<<<<<<<<<<<
3664  *         return self.nfields
3665  * 
3666  */
3667
3668 static Py_ssize_t __pyx_pf_10TabProxies_10TupleProxy_12__len__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
3669   Py_ssize_t __pyx_r;
3670   __Pyx_RefNannyDeclarations
3671   __Pyx_RefNannySetupContext("__len__", 0);
3672
3673   /* "TabProxies.pyx":278
3674  * 
3675  *     def __len__(self):
3676  *         return self.nfields             # <<<<<<<<<<<<<<
3677  * 
3678  *     def __iter__(self):
3679  */
3680   __pyx_r = __pyx_v_self->nfields;
3681   goto __pyx_L0;
3682
3683   __pyx_r = 0;
3684   __pyx_L0:;
3685   __Pyx_RefNannyFinishContext();
3686   return __pyx_r;
3687 }
3688
3689 /* Python wrapper */
3690 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_15__iter__(PyObject *__pyx_v_self); /*proto*/
3691 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_15__iter__(PyObject *__pyx_v_self) {
3692   PyObject *__pyx_r = 0;
3693   __Pyx_RefNannyDeclarations
3694   __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
3695   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_14__iter__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
3696   __Pyx_RefNannyFinishContext();
3697   return __pyx_r;
3698 }
3699
3700 /* "TabProxies.pyx":280
3701  *         return self.nfields
3702  * 
3703  *     def __iter__(self):             # <<<<<<<<<<<<<<
3704  *         self.index = 0
3705  *         return self
3706  */
3707
3708 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_14__iter__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
3709   PyObject *__pyx_r = NULL;
3710   __Pyx_RefNannyDeclarations
3711   __Pyx_RefNannySetupContext("__iter__", 0);
3712
3713   /* "TabProxies.pyx":281
3714  * 
3715  *     def __iter__(self):
3716  *         self.index = 0             # <<<<<<<<<<<<<<
3717  *         return self
3718  * 
3719  */
3720   __pyx_v_self->index = 0;
3721
3722   /* "TabProxies.pyx":282
3723  *     def __iter__(self):
3724  *         self.index = 0
3725  *         return self             # <<<<<<<<<<<<<<
3726  * 
3727  *     def __next__(self):
3728  */
3729   __Pyx_XDECREF(__pyx_r);
3730   __Pyx_INCREF(((PyObject *)__pyx_v_self));
3731   __pyx_r = ((PyObject *)__pyx_v_self);
3732   goto __pyx_L0;
3733
3734   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
3735   __pyx_L0:;
3736   __Pyx_XGIVEREF(__pyx_r);
3737   __Pyx_RefNannyFinishContext();
3738   return __pyx_r;
3739 }
3740
3741 /* Python wrapper */
3742 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_17__next__(PyObject *__pyx_v_self); /*proto*/
3743 static char __pyx_doc_10TabProxies_10TupleProxy_16__next__[] = "python version of next().\n        ";
3744 struct wrapperbase __pyx_wrapperbase_10TabProxies_10TupleProxy_16__next__;
3745 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_17__next__(PyObject *__pyx_v_self) {
3746   PyObject *__pyx_r = 0;
3747   __Pyx_RefNannyDeclarations
3748   __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
3749   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_16__next__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
3750   __Pyx_RefNannyFinishContext();
3751   return __pyx_r;
3752 }
3753
3754 /* "TabProxies.pyx":284
3755  *         return self
3756  * 
3757  *     def __next__(self):             # <<<<<<<<<<<<<<
3758  *         """python version of next().
3759  *         """
3760  */
3761
3762 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_16__next__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
3763   char *__pyx_v_retval;
3764   PyObject *__pyx_r = NULL;
3765   __Pyx_RefNannyDeclarations
3766   int __pyx_t_1;
3767   PyObject *__pyx_t_2 = NULL;
3768   int __pyx_lineno = 0;
3769   const char *__pyx_filename = NULL;
3770   int __pyx_clineno = 0;
3771   __Pyx_RefNannySetupContext("__next__", 0);
3772
3773   /* "TabProxies.pyx":287
3774  *         """python version of next().
3775  *         """
3776  *         if self.index >= self.nfields:             # <<<<<<<<<<<<<<
3777  *             raise StopIteration
3778  *         cdef char * retval = self.fields[self.index]
3779  */
3780   __pyx_t_1 = (__pyx_v_self->index >= __pyx_v_self->nfields);
3781   if (__pyx_t_1) {
3782
3783     /* "TabProxies.pyx":288
3784  *         """
3785  *         if self.index >= self.nfields:
3786  *             raise StopIteration             # <<<<<<<<<<<<<<
3787  *         cdef char * retval = self.fields[self.index]
3788  *         self.index += 1
3789  */
3790     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
3791     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3792     goto __pyx_L3;
3793   }
3794   __pyx_L3:;
3795
3796   /* "TabProxies.pyx":289
3797  *         if self.index >= self.nfields:
3798  *             raise StopIteration
3799  *         cdef char * retval = self.fields[self.index]             # <<<<<<<<<<<<<<
3800  *         self.index += 1
3801  *         if retval == NULL: return None
3802  */
3803   __pyx_v_retval = (__pyx_v_self->fields[__pyx_v_self->index]);
3804
3805   /* "TabProxies.pyx":290
3806  *             raise StopIteration
3807  *         cdef char * retval = self.fields[self.index]
3808  *         self.index += 1             # <<<<<<<<<<<<<<
3809  *         if retval == NULL: return None
3810  *         else: return retval
3811  */
3812   __pyx_v_self->index = (__pyx_v_self->index + 1);
3813
3814   /* "TabProxies.pyx":291
3815  *         cdef char * retval = self.fields[self.index]
3816  *         self.index += 1
3817  *         if retval == NULL: return None             # <<<<<<<<<<<<<<
3818  *         else: return retval
3819  * 
3820  */
3821   __pyx_t_1 = (__pyx_v_retval == NULL);
3822   if (__pyx_t_1) {
3823     __Pyx_XDECREF(__pyx_r);
3824     __Pyx_INCREF(Py_None);
3825     __pyx_r = Py_None;
3826     goto __pyx_L0;
3827     goto __pyx_L4;
3828   }
3829   /*else*/ {
3830
3831     /* "TabProxies.pyx":292
3832  *         self.index += 1
3833  *         if retval == NULL: return None
3834  *         else: return retval             # <<<<<<<<<<<<<<
3835  * 
3836  *     def __str__(self):
3837  */
3838     __Pyx_XDECREF(__pyx_r);
3839     __pyx_t_2 = PyBytes_FromString(__pyx_v_retval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3840     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
3841     __pyx_r = ((PyObject *)__pyx_t_2);
3842     __pyx_t_2 = 0;
3843     goto __pyx_L0;
3844   }
3845   __pyx_L4:;
3846
3847   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
3848   goto __pyx_L0;
3849   __pyx_L1_error:;
3850   __Pyx_XDECREF(__pyx_t_2);
3851   __Pyx_AddTraceback("TabProxies.TupleProxy.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3852   __pyx_r = NULL;
3853   __pyx_L0:;
3854   __Pyx_XGIVEREF(__pyx_r);
3855   __Pyx_RefNannyFinishContext();
3856   return __pyx_r;
3857 }
3858
3859 /* Python wrapper */
3860 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_19__str__(PyObject *__pyx_v_self); /*proto*/
3861 static char __pyx_doc_10TabProxies_10TupleProxy_18__str__[] = "return original data";
3862 struct wrapperbase __pyx_wrapperbase_10TabProxies_10TupleProxy_18__str__;
3863 static PyObject *__pyx_pw_10TabProxies_10TupleProxy_19__str__(PyObject *__pyx_v_self) {
3864   PyObject *__pyx_r = 0;
3865   __Pyx_RefNannyDeclarations
3866   __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
3867   __pyx_r = __pyx_pf_10TabProxies_10TupleProxy_18__str__(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self));
3868   __Pyx_RefNannyFinishContext();
3869   return __pyx_r;
3870 }
3871
3872 /* "TabProxies.pyx":294
3873  *         else: return retval
3874  * 
3875  *     def __str__(self):             # <<<<<<<<<<<<<<
3876  *         '''return original data'''
3877  *         # copy and replace \0 bytes with \t characters
3878  */
3879
3880 static PyObject *__pyx_pf_10TabProxies_10TupleProxy_18__str__(struct __pyx_obj_10TabProxies_TupleProxy *__pyx_v_self) {
3881   PyObject *__pyx_v_result = NULL;
3882   long __pyx_v_x;
3883   char *__pyx_v_cpy;
3884   PyObject *__pyx_r = NULL;
3885   __Pyx_RefNannyDeclarations
3886   PyObject *__pyx_t_1 = NULL;
3887   int __pyx_t_2;
3888   long __pyx_t_3;
3889   char *__pyx_t_4;
3890   PyObject *__pyx_t_5 = NULL;
3891   PyObject *__pyx_t_6 = NULL;
3892   int __pyx_t_7;
3893   int __pyx_lineno = 0;
3894   const char *__pyx_filename = NULL;
3895   int __pyx_clineno = 0;
3896   __Pyx_RefNannySetupContext("__str__", 0);
3897
3898   /* "TabProxies.pyx":297
3899  *         '''return original data'''
3900  *         # copy and replace \0 bytes with \t characters
3901  *         if self.is_modified:             # <<<<<<<<<<<<<<
3902  *             # todo: treat NULL values
3903  *             result = []
3904  */
3905   if (__pyx_v_self->is_modified) {
3906
3907     /* "TabProxies.pyx":299
3908  *         if self.is_modified:
3909  *             # todo: treat NULL values
3910  *             result = []             # <<<<<<<<<<<<<<
3911  *             for x in xrange( 0, self.nfields ):
3912  *                 result.append( StrOrEmpty( self.fields[x]).decode('ascii') )
3913  */
3914     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3915     __Pyx_GOTREF(__pyx_t_1);
3916     __pyx_v_result = ((PyObject *)__pyx_t_1);
3917     __pyx_t_1 = 0;
3918
3919     /* "TabProxies.pyx":300
3920  *             # todo: treat NULL values
3921  *             result = []
3922  *             for x in xrange( 0, self.nfields ):             # <<<<<<<<<<<<<<
3923  *                 result.append( StrOrEmpty( self.fields[x]).decode('ascii') )
3924  *             return "\t".join( result )
3925  */
3926     __pyx_t_2 = __pyx_v_self->nfields;
3927     for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
3928       __pyx_v_x = __pyx_t_3;
3929
3930       /* "TabProxies.pyx":301
3931  *             result = []
3932  *             for x in xrange( 0, self.nfields ):
3933  *                 result.append( StrOrEmpty( self.fields[x]).decode('ascii') )             # <<<<<<<<<<<<<<
3934  *             return "\t".join( result )
3935  *         else:
3936  */
3937       __pyx_t_4 = __pyx_f_10TabProxies_StrOrEmpty((__pyx_v_self->fields[__pyx_v_x]));
3938       __pyx_t_1 = ((PyObject *)PyUnicode_DecodeASCII(__pyx_t_4, strlen(__pyx_t_4), NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3939       __Pyx_GOTREF(((PyObject *)__pyx_t_1));
3940       __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3941       __Pyx_GOTREF(__pyx_t_5);
3942       __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
3943       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3944     }
3945
3946     /* "TabProxies.pyx":302
3947  *             for x in xrange( 0, self.nfields ):
3948  *                 result.append( StrOrEmpty( self.fields[x]).decode('ascii') )
3949  *             return "\t".join( result )             # <<<<<<<<<<<<<<
3950  *         else:
3951  *             cpy = <char*>calloc( sizeof(char), self.nbytes+1 )
3952  */
3953     __Pyx_XDECREF(__pyx_r);
3954     __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_18), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3955     __Pyx_GOTREF(__pyx_t_5);
3956     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3957     __Pyx_GOTREF(__pyx_t_1);
3958     __Pyx_INCREF(__pyx_v_result);
3959     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_result);
3960     __Pyx_GIVEREF(__pyx_v_result);
3961     __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3962     __Pyx_GOTREF(__pyx_t_6);
3963     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3964     __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
3965     __pyx_r = __pyx_t_6;
3966     __pyx_t_6 = 0;
3967     goto __pyx_L0;
3968     goto __pyx_L3;
3969   }
3970   /*else*/ {
3971
3972     /* "TabProxies.pyx":304
3973  *             return "\t".join( result )
3974  *         else:
3975  *             cpy = <char*>calloc( sizeof(char), self.nbytes+1 )             # <<<<<<<<<<<<<<
3976  *             if cpy == NULL:
3977  *                 raise ValueError("out of memory" )
3978  */
3979     __pyx_v_cpy = ((char *)calloc((sizeof(char)), (__pyx_v_self->nbytes + 1)));
3980
3981     /* "TabProxies.pyx":305
3982  *         else:
3983  *             cpy = <char*>calloc( sizeof(char), self.nbytes+1 )
3984  *             if cpy == NULL:             # <<<<<<<<<<<<<<
3985  *                 raise ValueError("out of memory" )
3986  *             memcpy( cpy, self.data, self.nbytes+1)
3987  */
3988     __pyx_t_7 = (__pyx_v_cpy == NULL);
3989     if (__pyx_t_7) {
3990
3991       /* "TabProxies.pyx":306
3992  *             cpy = <char*>calloc( sizeof(char), self.nbytes+1 )
3993  *             if cpy == NULL:
3994  *                 raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
3995  *             memcpy( cpy, self.data, self.nbytes+1)
3996  *             for x from 0 <= x < self.nbytes:
3997  */
3998       __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_19), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3999       __Pyx_GOTREF(__pyx_t_6);
4000       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
4001       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4002       {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4003       goto __pyx_L6;
4004     }
4005     __pyx_L6:;
4006
4007     /* "TabProxies.pyx":307
4008  *             if cpy == NULL:
4009  *                 raise ValueError("out of memory" )
4010  *             memcpy( cpy, self.data, self.nbytes+1)             # <<<<<<<<<<<<<<
4011  *             for x from 0 <= x < self.nbytes:
4012  *                 if cpy[x] == '\0': cpy[x] = '\t'
4013  */
4014     memcpy(__pyx_v_cpy, __pyx_v_self->data, (__pyx_v_self->nbytes + 1));
4015
4016     /* "TabProxies.pyx":308
4017  *                 raise ValueError("out of memory" )
4018  *             memcpy( cpy, self.data, self.nbytes+1)
4019  *             for x from 0 <= x < self.nbytes:             # <<<<<<<<<<<<<<
4020  *                 if cpy[x] == '\0': cpy[x] = '\t'
4021  *             result = cpy[:self.nbytes]
4022  */
4023     __pyx_t_2 = __pyx_v_self->nbytes;
4024     for (__pyx_v_x = 0; __pyx_v_x < __pyx_t_2; __pyx_v_x++) {
4025
4026       /* "TabProxies.pyx":309
4027  *             memcpy( cpy, self.data, self.nbytes+1)
4028  *             for x from 0 <= x < self.nbytes:
4029  *                 if cpy[x] == '\0': cpy[x] = '\t'             # <<<<<<<<<<<<<<
4030  *             result = cpy[:self.nbytes]
4031  *             free(cpy)
4032  */
4033       __pyx_t_7 = ((__pyx_v_cpy[__pyx_v_x]) == '\x00');
4034       if (__pyx_t_7) {
4035         (__pyx_v_cpy[__pyx_v_x]) = '\t';
4036         goto __pyx_L9;
4037       }
4038       __pyx_L9:;
4039     }
4040
4041     /* "TabProxies.pyx":310
4042  *             for x from 0 <= x < self.nbytes:
4043  *                 if cpy[x] == '\0': cpy[x] = '\t'
4044  *             result = cpy[:self.nbytes]             # <<<<<<<<<<<<<<
4045  *             free(cpy)
4046  *             return result.decode('ascii')
4047  */
4048     __pyx_t_6 = PyBytes_FromStringAndSize(__pyx_v_cpy + 0, __pyx_v_self->nbytes - 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4049     __Pyx_GOTREF(((PyObject *)__pyx_t_6));
4050     __pyx_v_result = ((PyObject *)__pyx_t_6);
4051     __pyx_t_6 = 0;
4052
4053     /* "TabProxies.pyx":311
4054  *                 if cpy[x] == '\0': cpy[x] = '\t'
4055  *             result = cpy[:self.nbytes]
4056  *             free(cpy)             # <<<<<<<<<<<<<<
4057  *             return result.decode('ascii')
4058  * 
4059  */
4060     free(__pyx_v_cpy);
4061
4062     /* "TabProxies.pyx":312
4063  *             result = cpy[:self.nbytes]
4064  *             free(cpy)
4065  *             return result.decode('ascii')             # <<<<<<<<<<<<<<
4066  * 
4067  * def toDot( v ):
4068  */
4069     __Pyx_XDECREF(__pyx_r);
4070     __pyx_t_6 = PyObject_GetAttr(__pyx_v_result, __pyx_n_s__decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4071     __Pyx_GOTREF(__pyx_t_6);
4072     __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4073     __Pyx_GOTREF(__pyx_t_1);
4074     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4075     __pyx_r = __pyx_t_1;
4076     __pyx_t_1 = 0;
4077     goto __pyx_L0;
4078   }
4079   __pyx_L3:;
4080
4081   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4082   goto __pyx_L0;
4083   __pyx_L1_error:;
4084   __Pyx_XDECREF(__pyx_t_1);
4085   __Pyx_XDECREF(__pyx_t_5);
4086   __Pyx_XDECREF(__pyx_t_6);
4087   __Pyx_AddTraceback("TabProxies.TupleProxy.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4088   __pyx_r = NULL;
4089   __pyx_L0:;
4090   __Pyx_XDECREF(__pyx_v_result);
4091   __Pyx_XGIVEREF(__pyx_r);
4092   __Pyx_RefNannyFinishContext();
4093   return __pyx_r;
4094 }
4095
4096 /* Python wrapper */
4097 static PyObject *__pyx_pw_10TabProxies_1toDot(PyObject *__pyx_self, PyObject *__pyx_v_v); /*proto*/
4098 static char __pyx_doc_10TabProxies_toDot[] = "convert value to '.' if None";
4099 static PyMethodDef __pyx_mdef_10TabProxies_1toDot = {__Pyx_NAMESTR("toDot"), (PyCFunction)__pyx_pw_10TabProxies_1toDot, METH_O, __Pyx_DOCSTR(__pyx_doc_10TabProxies_toDot)};
4100 static PyObject *__pyx_pw_10TabProxies_1toDot(PyObject *__pyx_self, PyObject *__pyx_v_v) {
4101   PyObject *__pyx_r = 0;
4102   __Pyx_RefNannyDeclarations
4103   __Pyx_RefNannySetupContext("toDot (wrapper)", 0);
4104   __pyx_self = __pyx_self;
4105   __pyx_r = __pyx_pf_10TabProxies_toDot(__pyx_self, ((PyObject *)__pyx_v_v));
4106   __Pyx_RefNannyFinishContext();
4107   return __pyx_r;
4108 }
4109
4110 /* "TabProxies.pyx":314
4111  *             return result.decode('ascii')
4112  * 
4113  * def toDot( v ):             # <<<<<<<<<<<<<<
4114  *     '''convert value to '.' if None'''
4115  *     if v == None: return "."
4116  */
4117
4118 static PyObject *__pyx_pf_10TabProxies_toDot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v) {
4119   PyObject *__pyx_r = NULL;
4120   __Pyx_RefNannyDeclarations
4121   PyObject *__pyx_t_1 = NULL;
4122   int __pyx_t_2;
4123   PyObject *__pyx_t_3 = NULL;
4124   int __pyx_lineno = 0;
4125   const char *__pyx_filename = NULL;
4126   int __pyx_clineno = 0;
4127   __Pyx_RefNannySetupContext("toDot", 0);
4128
4129   /* "TabProxies.pyx":316
4130  * def toDot( v ):
4131  *     '''convert value to '.' if None'''
4132  *     if v == None: return "."             # <<<<<<<<<<<<<<
4133  *     else: return str(v)
4134  * 
4135  */
4136   __pyx_t_1 = PyObject_RichCompare(__pyx_v_v, Py_None, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4137   __Pyx_GOTREF(__pyx_t_1);
4138   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4139   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4140   if (__pyx_t_2) {
4141     __Pyx_XDECREF(__pyx_r);
4142     __Pyx_INCREF(((PyObject *)__pyx_kp_s_21));
4143     __pyx_r = ((PyObject *)__pyx_kp_s_21);
4144     goto __pyx_L0;
4145     goto __pyx_L3;
4146   }
4147   /*else*/ {
4148
4149     /* "TabProxies.pyx":317
4150  *     '''convert value to '.' if None'''
4151  *     if v == None: return "."
4152  *     else: return str(v)             # <<<<<<<<<<<<<<
4153  * 
4154  * def quote( v ):
4155  */
4156     __Pyx_XDECREF(__pyx_r);
4157     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4158     __Pyx_GOTREF(__pyx_t_1);
4159     __Pyx_INCREF(__pyx_v_v);
4160     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_v);
4161     __Pyx_GIVEREF(__pyx_v_v);
4162     __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4163     __Pyx_GOTREF(__pyx_t_3);
4164     __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
4165     __pyx_r = __pyx_t_3;
4166     __pyx_t_3 = 0;
4167     goto __pyx_L0;
4168   }
4169   __pyx_L3:;
4170
4171   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4172   goto __pyx_L0;
4173   __pyx_L1_error:;
4174   __Pyx_XDECREF(__pyx_t_1);
4175   __Pyx_XDECREF(__pyx_t_3);
4176   __Pyx_AddTraceback("TabProxies.toDot", __pyx_clineno, __pyx_lineno, __pyx_filename);
4177   __pyx_r = NULL;
4178   __pyx_L0:;
4179   __Pyx_XGIVEREF(__pyx_r);
4180   __Pyx_RefNannyFinishContext();
4181   return __pyx_r;
4182 }
4183
4184 /* Python wrapper */
4185 static PyObject *__pyx_pw_10TabProxies_3quote(PyObject *__pyx_self, PyObject *__pyx_v_v); /*proto*/
4186 static char __pyx_doc_10TabProxies_2quote[] = "return a quoted attribute.";
4187 static PyMethodDef __pyx_mdef_10TabProxies_3quote = {__Pyx_NAMESTR("quote"), (PyCFunction)__pyx_pw_10TabProxies_3quote, METH_O, __Pyx_DOCSTR(__pyx_doc_10TabProxies_2quote)};
4188 static PyObject *__pyx_pw_10TabProxies_3quote(PyObject *__pyx_self, PyObject *__pyx_v_v) {
4189   PyObject *__pyx_r = 0;
4190   __Pyx_RefNannyDeclarations
4191   __Pyx_RefNannySetupContext("quote (wrapper)", 0);
4192   __pyx_self = __pyx_self;
4193   __pyx_r = __pyx_pf_10TabProxies_2quote(__pyx_self, ((PyObject *)__pyx_v_v));
4194   __Pyx_RefNannyFinishContext();
4195   return __pyx_r;
4196 }
4197
4198 /* "TabProxies.pyx":319
4199  *     else: return str(v)
4200  * 
4201  * def quote( v ):             # <<<<<<<<<<<<<<
4202  *     '''return a quoted attribute.'''
4203  *     if type(v) in types.StringTypes:
4204  */
4205
4206 static PyObject *__pyx_pf_10TabProxies_2quote(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v) {
4207   PyObject *__pyx_r = NULL;
4208   __Pyx_RefNannyDeclarations
4209   PyObject *__pyx_t_1 = NULL;
4210   PyObject *__pyx_t_2 = NULL;
4211   int __pyx_t_3;
4212   int __pyx_lineno = 0;
4213   const char *__pyx_filename = NULL;
4214   int __pyx_clineno = 0;
4215   __Pyx_RefNannySetupContext("quote", 0);
4216
4217   /* "TabProxies.pyx":321
4218  * def quote( v ):
4219  *     '''return a quoted attribute.'''
4220  *     if type(v) in types.StringTypes:             # <<<<<<<<<<<<<<
4221  *         return '"%s"' % v
4222  *     else:
4223  */
4224   __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__types); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4225   __Pyx_GOTREF(__pyx_t_1);
4226   __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__StringTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4227   __Pyx_GOTREF(__pyx_t_2);
4228   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4229   __pyx_t_3 = ((PySequence_Contains(__pyx_t_2, ((PyObject *)Py_TYPE(__pyx_v_v))))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4230   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4231   if (__pyx_t_3) {
4232
4233     /* "TabProxies.pyx":322
4234  *     '''return a quoted attribute.'''
4235  *     if type(v) in types.StringTypes:
4236  *         return '"%s"' % v             # <<<<<<<<<<<<<<
4237  *     else:
4238  *         return str(v)
4239  */
4240     __Pyx_XDECREF(__pyx_r);
4241     __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_22), __pyx_v_v); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4242     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
4243     __pyx_r = ((PyObject *)__pyx_t_2);
4244     __pyx_t_2 = 0;
4245     goto __pyx_L0;
4246     goto __pyx_L3;
4247   }
4248   /*else*/ {
4249
4250     /* "TabProxies.pyx":324
4251  *         return '"%s"' % v
4252  *     else:
4253  *         return str(v)             # <<<<<<<<<<<<<<
4254  * 
4255  * cdef class GTFProxy( TupleProxy ):
4256  */
4257     __Pyx_XDECREF(__pyx_r);
4258     __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4259     __Pyx_GOTREF(__pyx_t_2);
4260     __Pyx_INCREF(__pyx_v_v);
4261     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_v);
4262     __Pyx_GIVEREF(__pyx_v_v);
4263     __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4264     __Pyx_GOTREF(__pyx_t_1);
4265     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4266     __pyx_r = __pyx_t_1;
4267     __pyx_t_1 = 0;
4268     goto __pyx_L0;
4269   }
4270   __pyx_L3:;
4271
4272   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4273   goto __pyx_L0;
4274   __pyx_L1_error:;
4275   __Pyx_XDECREF(__pyx_t_1);
4276   __Pyx_XDECREF(__pyx_t_2);
4277   __Pyx_AddTraceback("TabProxies.quote", __pyx_clineno, __pyx_lineno, __pyx_filename);
4278   __pyx_r = NULL;
4279   __pyx_L0:;
4280   __Pyx_XGIVEREF(__pyx_r);
4281   __Pyx_RefNannyFinishContext();
4282   return __pyx_r;
4283 }
4284
4285 /* Python wrapper */
4286 static int __pyx_pw_10TabProxies_8GTFProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4287 static int __pyx_pw_10TabProxies_8GTFProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4288   int __pyx_r;
4289   __Pyx_RefNannyDeclarations
4290   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
4291   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
4292     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
4293   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
4294   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy___cinit__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4295   __Pyx_RefNannyFinishContext();
4296   return __pyx_r;
4297 }
4298
4299 /* "TabProxies.pyx":339
4300  *     '''
4301  * 
4302  *     def __cinit__(self ):             # <<<<<<<<<<<<<<
4303  *         # automatically calls TupleProxy.__cinit__
4304  *         self.hasOwnAttributes = False
4305  */
4306
4307 static int __pyx_pf_10TabProxies_8GTFProxy___cinit__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4308   int __pyx_r;
4309   __Pyx_RefNannyDeclarations
4310   __Pyx_RefNannySetupContext("__cinit__", 0);
4311
4312   /* "TabProxies.pyx":341
4313  *     def __cinit__(self ):
4314  *         # automatically calls TupleProxy.__cinit__
4315  *         self.hasOwnAttributes = False             # <<<<<<<<<<<<<<
4316  *         self._attributes = NULL
4317  * 
4318  */
4319   __pyx_v_self->hasOwnAttributes = 0;
4320
4321   /* "TabProxies.pyx":342
4322  *         # automatically calls TupleProxy.__cinit__
4323  *         self.hasOwnAttributes = False
4324  *         self._attributes = NULL             # <<<<<<<<<<<<<<
4325  * 
4326  *     def __dealloc__(self):
4327  */
4328   __pyx_v_self->_attributes = NULL;
4329
4330   __pyx_r = 0;
4331   __Pyx_RefNannyFinishContext();
4332   return __pyx_r;
4333 }
4334
4335 /* Python wrapper */
4336 static void __pyx_pw_10TabProxies_8GTFProxy_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
4337 static void __pyx_pw_10TabProxies_8GTFProxy_3__dealloc__(PyObject *__pyx_v_self) {
4338   __Pyx_RefNannyDeclarations
4339   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
4340   __pyx_pf_10TabProxies_8GTFProxy_2__dealloc__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4341   __Pyx_RefNannyFinishContext();
4342 }
4343
4344 /* "TabProxies.pyx":344
4345  *         self._attributes = NULL
4346  * 
4347  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
4348  *         # automatically calls TupleProxy.__dealloc__
4349  *         if self.hasOwnAttributes:
4350  */
4351
4352 static void __pyx_pf_10TabProxies_8GTFProxy_2__dealloc__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4353   __Pyx_RefNannyDeclarations
4354   __Pyx_RefNannySetupContext("__dealloc__", 0);
4355
4356   /* "TabProxies.pyx":346
4357  *     def __dealloc__(self):
4358  *         # automatically calls TupleProxy.__dealloc__
4359  *         if self.hasOwnAttributes:             # <<<<<<<<<<<<<<
4360  *             free(self._attributes)
4361  * 
4362  */
4363   if (__pyx_v_self->hasOwnAttributes) {
4364
4365     /* "TabProxies.pyx":347
4366  *         # automatically calls TupleProxy.__dealloc__
4367  *         if self.hasOwnAttributes:
4368  *             free(self._attributes)             # <<<<<<<<<<<<<<
4369  * 
4370  *     cdef int getMaxFields( self, size_t nbytes ):
4371  */
4372     free(__pyx_v_self->_attributes);
4373     goto __pyx_L3;
4374   }
4375   __pyx_L3:;
4376
4377   __Pyx_RefNannyFinishContext();
4378 }
4379
4380 /* "TabProxies.pyx":349
4381  *             free(self._attributes)
4382  * 
4383  *     cdef int getMaxFields( self, size_t nbytes ):             # <<<<<<<<<<<<<<
4384  *         '''return max number of fields.'''
4385  *         return 9
4386  */
4387
4388 static int __pyx_f_10TabProxies_8GTFProxy_getMaxFields(CYTHON_UNUSED struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, CYTHON_UNUSED size_t __pyx_v_nbytes) {
4389   int __pyx_r;
4390   __Pyx_RefNannyDeclarations
4391   __Pyx_RefNannySetupContext("getMaxFields", 0);
4392
4393   /* "TabProxies.pyx":351
4394  *     cdef int getMaxFields( self, size_t nbytes ):
4395  *         '''return max number of fields.'''
4396  *         return 9             # <<<<<<<<<<<<<<
4397  * 
4398  *     property contig:
4399  */
4400   __pyx_r = 9;
4401   goto __pyx_L0;
4402
4403   __pyx_r = 0;
4404   __pyx_L0:;
4405   __Pyx_RefNannyFinishContext();
4406   return __pyx_r;
4407 }
4408
4409 /* Python wrapper */
4410 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6contig_1__get__(PyObject *__pyx_v_self); /*proto*/
4411 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6contig_1__get__(PyObject *__pyx_v_self) {
4412   PyObject *__pyx_r = 0;
4413   __Pyx_RefNannyDeclarations
4414   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4415   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6contig___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4416   __Pyx_RefNannyFinishContext();
4417   return __pyx_r;
4418 }
4419
4420 /* "TabProxies.pyx":355
4421  *     property contig:
4422  *        '''contig of feature.'''
4423  *        def __get__( self ): return self._getindex( 0 )             # <<<<<<<<<<<<<<
4424  *        def __set__( self, value ): self._setindex( 0, value )
4425  * 
4426  */
4427
4428 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6contig___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4429   PyObject *__pyx_r = NULL;
4430   __Pyx_RefNannyDeclarations
4431   PyObject *__pyx_t_1 = NULL;
4432   PyObject *__pyx_t_2 = NULL;
4433   int __pyx_lineno = 0;
4434   const char *__pyx_filename = NULL;
4435   int __pyx_clineno = 0;
4436   __Pyx_RefNannySetupContext("__get__", 0);
4437   __Pyx_XDECREF(__pyx_r);
4438   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4439   __Pyx_GOTREF(__pyx_t_1);
4440   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_23), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4441   __Pyx_GOTREF(__pyx_t_2);
4442   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4443   __pyx_r = __pyx_t_2;
4444   __pyx_t_2 = 0;
4445   goto __pyx_L0;
4446
4447   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4448   goto __pyx_L0;
4449   __pyx_L1_error:;
4450   __Pyx_XDECREF(__pyx_t_1);
4451   __Pyx_XDECREF(__pyx_t_2);
4452   __Pyx_AddTraceback("TabProxies.GTFProxy.contig.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4453   __pyx_r = NULL;
4454   __pyx_L0:;
4455   __Pyx_XGIVEREF(__pyx_r);
4456   __Pyx_RefNannyFinishContext();
4457   return __pyx_r;
4458 }
4459
4460 /* Python wrapper */
4461 static int __pyx_pw_10TabProxies_8GTFProxy_6contig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
4462 static int __pyx_pw_10TabProxies_8GTFProxy_6contig_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
4463   int __pyx_r;
4464   __Pyx_RefNannyDeclarations
4465   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
4466   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6contig_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
4467   __Pyx_RefNannyFinishContext();
4468   return __pyx_r;
4469 }
4470
4471 /* "TabProxies.pyx":356
4472  *        '''contig of feature.'''
4473  *        def __get__( self ): return self._getindex( 0 )
4474  *        def __set__( self, value ): self._setindex( 0, value )             # <<<<<<<<<<<<<<
4475  * 
4476  *     property source:
4477  */
4478
4479 static int __pyx_pf_10TabProxies_8GTFProxy_6contig_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
4480   int __pyx_r;
4481   __Pyx_RefNannyDeclarations
4482   PyObject *__pyx_t_1 = NULL;
4483   PyObject *__pyx_t_2 = NULL;
4484   PyObject *__pyx_t_3 = NULL;
4485   int __pyx_lineno = 0;
4486   const char *__pyx_filename = NULL;
4487   int __pyx_clineno = 0;
4488   __Pyx_RefNannySetupContext("__set__", 0);
4489   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4490   __Pyx_GOTREF(__pyx_t_1);
4491   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4492   __Pyx_GOTREF(__pyx_t_2);
4493   __Pyx_INCREF(__pyx_int_0);
4494   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
4495   __Pyx_GIVEREF(__pyx_int_0);
4496   __Pyx_INCREF(__pyx_v_value);
4497   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
4498   __Pyx_GIVEREF(__pyx_v_value);
4499   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4500   __Pyx_GOTREF(__pyx_t_3);
4501   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4502   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4503   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4504
4505   __pyx_r = 0;
4506   goto __pyx_L0;
4507   __pyx_L1_error:;
4508   __Pyx_XDECREF(__pyx_t_1);
4509   __Pyx_XDECREF(__pyx_t_2);
4510   __Pyx_XDECREF(__pyx_t_3);
4511   __Pyx_AddTraceback("TabProxies.GTFProxy.contig.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4512   __pyx_r = -1;
4513   __pyx_L0:;
4514   __Pyx_RefNannyFinishContext();
4515   return __pyx_r;
4516 }
4517
4518 /* Python wrapper */
4519 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6source_1__get__(PyObject *__pyx_v_self); /*proto*/
4520 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6source_1__get__(PyObject *__pyx_v_self) {
4521   PyObject *__pyx_r = 0;
4522   __Pyx_RefNannyDeclarations
4523   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4524   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6source___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4525   __Pyx_RefNannyFinishContext();
4526   return __pyx_r;
4527 }
4528
4529 /* "TabProxies.pyx":360
4530  *     property source:
4531  *        '''feature source.'''
4532  *        def __get__( self ): return self._getindex( 1 )             # <<<<<<<<<<<<<<
4533  *        def __set__( self, value ): self._setindex( 1, value )
4534  * 
4535  */
4536
4537 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6source___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4538   PyObject *__pyx_r = NULL;
4539   __Pyx_RefNannyDeclarations
4540   PyObject *__pyx_t_1 = NULL;
4541   PyObject *__pyx_t_2 = NULL;
4542   int __pyx_lineno = 0;
4543   const char *__pyx_filename = NULL;
4544   int __pyx_clineno = 0;
4545   __Pyx_RefNannySetupContext("__get__", 0);
4546   __Pyx_XDECREF(__pyx_r);
4547   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4548   __Pyx_GOTREF(__pyx_t_1);
4549   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4550   __Pyx_GOTREF(__pyx_t_2);
4551   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4552   __pyx_r = __pyx_t_2;
4553   __pyx_t_2 = 0;
4554   goto __pyx_L0;
4555
4556   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4557   goto __pyx_L0;
4558   __pyx_L1_error:;
4559   __Pyx_XDECREF(__pyx_t_1);
4560   __Pyx_XDECREF(__pyx_t_2);
4561   __Pyx_AddTraceback("TabProxies.GTFProxy.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4562   __pyx_r = NULL;
4563   __pyx_L0:;
4564   __Pyx_XGIVEREF(__pyx_r);
4565   __Pyx_RefNannyFinishContext();
4566   return __pyx_r;
4567 }
4568
4569 /* Python wrapper */
4570 static int __pyx_pw_10TabProxies_8GTFProxy_6source_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
4571 static int __pyx_pw_10TabProxies_8GTFProxy_6source_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
4572   int __pyx_r;
4573   __Pyx_RefNannyDeclarations
4574   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
4575   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6source_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
4576   __Pyx_RefNannyFinishContext();
4577   return __pyx_r;
4578 }
4579
4580 /* "TabProxies.pyx":361
4581  *        '''feature source.'''
4582  *        def __get__( self ): return self._getindex( 1 )
4583  *        def __set__( self, value ): self._setindex( 1, value )             # <<<<<<<<<<<<<<
4584  * 
4585  *     property feature:
4586  */
4587
4588 static int __pyx_pf_10TabProxies_8GTFProxy_6source_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
4589   int __pyx_r;
4590   __Pyx_RefNannyDeclarations
4591   PyObject *__pyx_t_1 = NULL;
4592   PyObject *__pyx_t_2 = NULL;
4593   PyObject *__pyx_t_3 = NULL;
4594   int __pyx_lineno = 0;
4595   const char *__pyx_filename = NULL;
4596   int __pyx_clineno = 0;
4597   __Pyx_RefNannySetupContext("__set__", 0);
4598   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4599   __Pyx_GOTREF(__pyx_t_1);
4600   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4601   __Pyx_GOTREF(__pyx_t_2);
4602   __Pyx_INCREF(__pyx_int_1);
4603   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_1);
4604   __Pyx_GIVEREF(__pyx_int_1);
4605   __Pyx_INCREF(__pyx_v_value);
4606   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
4607   __Pyx_GIVEREF(__pyx_v_value);
4608   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4609   __Pyx_GOTREF(__pyx_t_3);
4610   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4611   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4612   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4613
4614   __pyx_r = 0;
4615   goto __pyx_L0;
4616   __pyx_L1_error:;
4617   __Pyx_XDECREF(__pyx_t_1);
4618   __Pyx_XDECREF(__pyx_t_2);
4619   __Pyx_XDECREF(__pyx_t_3);
4620   __Pyx_AddTraceback("TabProxies.GTFProxy.source.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4621   __pyx_r = -1;
4622   __pyx_L0:;
4623   __Pyx_RefNannyFinishContext();
4624   return __pyx_r;
4625 }
4626
4627 /* Python wrapper */
4628 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_7feature_1__get__(PyObject *__pyx_v_self); /*proto*/
4629 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_7feature_1__get__(PyObject *__pyx_v_self) {
4630   PyObject *__pyx_r = 0;
4631   __Pyx_RefNannyDeclarations
4632   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4633   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_7feature___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4634   __Pyx_RefNannyFinishContext();
4635   return __pyx_r;
4636 }
4637
4638 /* "TabProxies.pyx":365
4639  *     property feature:
4640  *        '''feature name.'''
4641  *        def __get__( self ): return self._getindex( 2 )             # <<<<<<<<<<<<<<
4642  *        def __set__( self, value ): self._setindex( 2, value )
4643  * 
4644  */
4645
4646 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_7feature___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4647   PyObject *__pyx_r = NULL;
4648   __Pyx_RefNannyDeclarations
4649   PyObject *__pyx_t_1 = NULL;
4650   PyObject *__pyx_t_2 = NULL;
4651   int __pyx_lineno = 0;
4652   const char *__pyx_filename = NULL;
4653   int __pyx_clineno = 0;
4654   __Pyx_RefNannySetupContext("__get__", 0);
4655   __Pyx_XDECREF(__pyx_r);
4656   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4657   __Pyx_GOTREF(__pyx_t_1);
4658   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_25), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4659   __Pyx_GOTREF(__pyx_t_2);
4660   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4661   __pyx_r = __pyx_t_2;
4662   __pyx_t_2 = 0;
4663   goto __pyx_L0;
4664
4665   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4666   goto __pyx_L0;
4667   __pyx_L1_error:;
4668   __Pyx_XDECREF(__pyx_t_1);
4669   __Pyx_XDECREF(__pyx_t_2);
4670   __Pyx_AddTraceback("TabProxies.GTFProxy.feature.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4671   __pyx_r = NULL;
4672   __pyx_L0:;
4673   __Pyx_XGIVEREF(__pyx_r);
4674   __Pyx_RefNannyFinishContext();
4675   return __pyx_r;
4676 }
4677
4678 /* Python wrapper */
4679 static int __pyx_pw_10TabProxies_8GTFProxy_7feature_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
4680 static int __pyx_pw_10TabProxies_8GTFProxy_7feature_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
4681   int __pyx_r;
4682   __Pyx_RefNannyDeclarations
4683   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
4684   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_7feature_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
4685   __Pyx_RefNannyFinishContext();
4686   return __pyx_r;
4687 }
4688
4689 /* "TabProxies.pyx":366
4690  *        '''feature name.'''
4691  *        def __get__( self ): return self._getindex( 2 )
4692  *        def __set__( self, value ): self._setindex( 2, value )             # <<<<<<<<<<<<<<
4693  * 
4694  *     property start:
4695  */
4696
4697 static int __pyx_pf_10TabProxies_8GTFProxy_7feature_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
4698   int __pyx_r;
4699   __Pyx_RefNannyDeclarations
4700   PyObject *__pyx_t_1 = NULL;
4701   PyObject *__pyx_t_2 = NULL;
4702   PyObject *__pyx_t_3 = NULL;
4703   int __pyx_lineno = 0;
4704   const char *__pyx_filename = NULL;
4705   int __pyx_clineno = 0;
4706   __Pyx_RefNannySetupContext("__set__", 0);
4707   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4708   __Pyx_GOTREF(__pyx_t_1);
4709   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4710   __Pyx_GOTREF(__pyx_t_2);
4711   __Pyx_INCREF(__pyx_int_2);
4712   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_2);
4713   __Pyx_GIVEREF(__pyx_int_2);
4714   __Pyx_INCREF(__pyx_v_value);
4715   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
4716   __Pyx_GIVEREF(__pyx_v_value);
4717   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4718   __Pyx_GOTREF(__pyx_t_3);
4719   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4720   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4721   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4722
4723   __pyx_r = 0;
4724   goto __pyx_L0;
4725   __pyx_L1_error:;
4726   __Pyx_XDECREF(__pyx_t_1);
4727   __Pyx_XDECREF(__pyx_t_2);
4728   __Pyx_XDECREF(__pyx_t_3);
4729   __Pyx_AddTraceback("TabProxies.GTFProxy.feature.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4730   __pyx_r = -1;
4731   __pyx_L0:;
4732   __Pyx_RefNannyFinishContext();
4733   return __pyx_r;
4734 }
4735
4736 /* Python wrapper */
4737 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
4738 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5start_1__get__(PyObject *__pyx_v_self) {
4739   PyObject *__pyx_r = 0;
4740   __Pyx_RefNannyDeclarations
4741   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4742   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5start___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4743   __Pyx_RefNannyFinishContext();
4744   return __pyx_r;
4745 }
4746
4747 /* "TabProxies.pyx":370
4748  *     property start:
4749  *        '''feature start (in 0-based open/closed coordinates).'''
4750  *        def __get__( self ): return int( self._getindex( 3 )) - 1             # <<<<<<<<<<<<<<
4751  *        def __set__( self, value ): self._setindex( 3, str(value+1) )
4752  * 
4753  */
4754
4755 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5start___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4756   PyObject *__pyx_r = NULL;
4757   __Pyx_RefNannyDeclarations
4758   PyObject *__pyx_t_1 = NULL;
4759   PyObject *__pyx_t_2 = NULL;
4760   int __pyx_lineno = 0;
4761   const char *__pyx_filename = NULL;
4762   int __pyx_clineno = 0;
4763   __Pyx_RefNannySetupContext("__get__", 0);
4764   __Pyx_XDECREF(__pyx_r);
4765   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4766   __Pyx_GOTREF(__pyx_t_1);
4767   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4768   __Pyx_GOTREF(__pyx_t_2);
4769   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4770   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4771   __Pyx_GOTREF(__pyx_t_1);
4772   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
4773   __Pyx_GIVEREF(__pyx_t_2);
4774   __pyx_t_2 = 0;
4775   __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4776   __Pyx_GOTREF(__pyx_t_2);
4777   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
4778   __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4779   __Pyx_GOTREF(__pyx_t_1);
4780   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4781   __pyx_r = __pyx_t_1;
4782   __pyx_t_1 = 0;
4783   goto __pyx_L0;
4784
4785   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4786   goto __pyx_L0;
4787   __pyx_L1_error:;
4788   __Pyx_XDECREF(__pyx_t_1);
4789   __Pyx_XDECREF(__pyx_t_2);
4790   __Pyx_AddTraceback("TabProxies.GTFProxy.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4791   __pyx_r = NULL;
4792   __pyx_L0:;
4793   __Pyx_XGIVEREF(__pyx_r);
4794   __Pyx_RefNannyFinishContext();
4795   return __pyx_r;
4796 }
4797
4798 /* Python wrapper */
4799 static int __pyx_pw_10TabProxies_8GTFProxy_5start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
4800 static int __pyx_pw_10TabProxies_8GTFProxy_5start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
4801   int __pyx_r;
4802   __Pyx_RefNannyDeclarations
4803   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
4804   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5start_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
4805   __Pyx_RefNannyFinishContext();
4806   return __pyx_r;
4807 }
4808
4809 /* "TabProxies.pyx":371
4810  *        '''feature start (in 0-based open/closed coordinates).'''
4811  *        def __get__( self ): return int( self._getindex( 3 )) - 1
4812  *        def __set__( self, value ): self._setindex( 3, str(value+1) )             # <<<<<<<<<<<<<<
4813  * 
4814  *     property end:
4815  */
4816
4817 static int __pyx_pf_10TabProxies_8GTFProxy_5start_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
4818   int __pyx_r;
4819   __Pyx_RefNannyDeclarations
4820   PyObject *__pyx_t_1 = NULL;
4821   PyObject *__pyx_t_2 = NULL;
4822   PyObject *__pyx_t_3 = NULL;
4823   int __pyx_lineno = 0;
4824   const char *__pyx_filename = NULL;
4825   int __pyx_clineno = 0;
4826   __Pyx_RefNannySetupContext("__set__", 0);
4827   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4828   __Pyx_GOTREF(__pyx_t_1);
4829   __pyx_t_2 = PyNumber_Add(__pyx_v_value, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4830   __Pyx_GOTREF(__pyx_t_2);
4831   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4832   __Pyx_GOTREF(__pyx_t_3);
4833   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
4834   __Pyx_GIVEREF(__pyx_t_2);
4835   __pyx_t_2 = 0;
4836   __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4837   __Pyx_GOTREF(__pyx_t_2);
4838   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
4839   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4840   __Pyx_GOTREF(__pyx_t_3);
4841   __Pyx_INCREF(__pyx_int_3);
4842   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_3);
4843   __Pyx_GIVEREF(__pyx_int_3);
4844   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
4845   __Pyx_GIVEREF(__pyx_t_2);
4846   __pyx_t_2 = 0;
4847   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4848   __Pyx_GOTREF(__pyx_t_2);
4849   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4850   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
4851   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4852
4853   __pyx_r = 0;
4854   goto __pyx_L0;
4855   __pyx_L1_error:;
4856   __Pyx_XDECREF(__pyx_t_1);
4857   __Pyx_XDECREF(__pyx_t_2);
4858   __Pyx_XDECREF(__pyx_t_3);
4859   __Pyx_AddTraceback("TabProxies.GTFProxy.start.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4860   __pyx_r = -1;
4861   __pyx_L0:;
4862   __Pyx_RefNannyFinishContext();
4863   return __pyx_r;
4864 }
4865
4866 /* Python wrapper */
4867 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_3end_1__get__(PyObject *__pyx_v_self); /*proto*/
4868 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_3end_1__get__(PyObject *__pyx_v_self) {
4869   PyObject *__pyx_r = 0;
4870   __Pyx_RefNannyDeclarations
4871   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4872   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_3end___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4873   __Pyx_RefNannyFinishContext();
4874   return __pyx_r;
4875 }
4876
4877 /* "TabProxies.pyx":375
4878  *     property end:
4879  *        '''feature end (in 0-based open/closed coordinates).'''
4880  *        def __get__( self ): return int( self._getindex( 4 ) )             # <<<<<<<<<<<<<<
4881  *        def __set__( self, value ): self._setindex( 4, str(value) )
4882  * 
4883  */
4884
4885 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_3end___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
4886   PyObject *__pyx_r = NULL;
4887   __Pyx_RefNannyDeclarations
4888   PyObject *__pyx_t_1 = NULL;
4889   PyObject *__pyx_t_2 = NULL;
4890   int __pyx_lineno = 0;
4891   const char *__pyx_filename = NULL;
4892   int __pyx_clineno = 0;
4893   __Pyx_RefNannySetupContext("__get__", 0);
4894   __Pyx_XDECREF(__pyx_r);
4895   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4896   __Pyx_GOTREF(__pyx_t_1);
4897   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_27), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4898   __Pyx_GOTREF(__pyx_t_2);
4899   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4900   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4901   __Pyx_GOTREF(__pyx_t_1);
4902   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
4903   __Pyx_GIVEREF(__pyx_t_2);
4904   __pyx_t_2 = 0;
4905   __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4906   __Pyx_GOTREF(__pyx_t_2);
4907   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
4908   __pyx_r = __pyx_t_2;
4909   __pyx_t_2 = 0;
4910   goto __pyx_L0;
4911
4912   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
4913   goto __pyx_L0;
4914   __pyx_L1_error:;
4915   __Pyx_XDECREF(__pyx_t_1);
4916   __Pyx_XDECREF(__pyx_t_2);
4917   __Pyx_AddTraceback("TabProxies.GTFProxy.end.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4918   __pyx_r = NULL;
4919   __pyx_L0:;
4920   __Pyx_XGIVEREF(__pyx_r);
4921   __Pyx_RefNannyFinishContext();
4922   return __pyx_r;
4923 }
4924
4925 /* Python wrapper */
4926 static int __pyx_pw_10TabProxies_8GTFProxy_3end_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
4927 static int __pyx_pw_10TabProxies_8GTFProxy_3end_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
4928   int __pyx_r;
4929   __Pyx_RefNannyDeclarations
4930   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
4931   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_3end_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
4932   __Pyx_RefNannyFinishContext();
4933   return __pyx_r;
4934 }
4935
4936 /* "TabProxies.pyx":376
4937  *        '''feature end (in 0-based open/closed coordinates).'''
4938  *        def __get__( self ): return int( self._getindex( 4 ) )
4939  *        def __set__( self, value ): self._setindex( 4, str(value) )             # <<<<<<<<<<<<<<
4940  * 
4941  *     property score:
4942  */
4943
4944 static int __pyx_pf_10TabProxies_8GTFProxy_3end_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
4945   int __pyx_r;
4946   __Pyx_RefNannyDeclarations
4947   PyObject *__pyx_t_1 = NULL;
4948   PyObject *__pyx_t_2 = NULL;
4949   PyObject *__pyx_t_3 = NULL;
4950   int __pyx_lineno = 0;
4951   const char *__pyx_filename = NULL;
4952   int __pyx_clineno = 0;
4953   __Pyx_RefNannySetupContext("__set__", 0);
4954   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4955   __Pyx_GOTREF(__pyx_t_1);
4956   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4957   __Pyx_GOTREF(__pyx_t_2);
4958   __Pyx_INCREF(__pyx_v_value);
4959   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
4960   __Pyx_GIVEREF(__pyx_v_value);
4961   __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4962   __Pyx_GOTREF(__pyx_t_3);
4963   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4964   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4965   __Pyx_GOTREF(__pyx_t_2);
4966   __Pyx_INCREF(__pyx_int_4);
4967   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_4);
4968   __Pyx_GIVEREF(__pyx_int_4);
4969   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
4970   __Pyx_GIVEREF(__pyx_t_3);
4971   __pyx_t_3 = 0;
4972   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4973   __Pyx_GOTREF(__pyx_t_3);
4974   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4975   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4976   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4977
4978   __pyx_r = 0;
4979   goto __pyx_L0;
4980   __pyx_L1_error:;
4981   __Pyx_XDECREF(__pyx_t_1);
4982   __Pyx_XDECREF(__pyx_t_2);
4983   __Pyx_XDECREF(__pyx_t_3);
4984   __Pyx_AddTraceback("TabProxies.GTFProxy.end.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4985   __pyx_r = -1;
4986   __pyx_L0:;
4987   __Pyx_RefNannyFinishContext();
4988   return __pyx_r;
4989 }
4990
4991 /* Python wrapper */
4992 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5score_1__get__(PyObject *__pyx_v_self); /*proto*/
4993 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5score_1__get__(PyObject *__pyx_v_self) {
4994   PyObject *__pyx_r = 0;
4995   __Pyx_RefNannyDeclarations
4996   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4997   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5score___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
4998   __Pyx_RefNannyFinishContext();
4999   return __pyx_r;
5000 }
5001
5002 /* "TabProxies.pyx":380
5003  *     property score:
5004  *        '''feature score.'''
5005  *        def __get__( self ):             # <<<<<<<<<<<<<<
5006  *            v = self._getindex(5)
5007  *            if v == "" or v[0] == '.':
5008  */
5009
5010 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5score___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5011   PyObject *__pyx_v_v = NULL;
5012   PyObject *__pyx_r = NULL;
5013   __Pyx_RefNannyDeclarations
5014   PyObject *__pyx_t_1 = NULL;
5015   PyObject *__pyx_t_2 = NULL;
5016   int __pyx_t_3;
5017   int __pyx_t_4;
5018   int __pyx_t_5;
5019   double __pyx_t_6;
5020   int __pyx_lineno = 0;
5021   const char *__pyx_filename = NULL;
5022   int __pyx_clineno = 0;
5023   __Pyx_RefNannySetupContext("__get__", 0);
5024
5025   /* "TabProxies.pyx":381
5026  *        '''feature score.'''
5027  *        def __get__( self ):
5028  *            v = self._getindex(5)             # <<<<<<<<<<<<<<
5029  *            if v == "" or v[0] == '.':
5030  *                return None
5031  */
5032   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5033   __Pyx_GOTREF(__pyx_t_1);
5034   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_28), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5035   __Pyx_GOTREF(__pyx_t_2);
5036   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5037   __pyx_v_v = __pyx_t_2;
5038   __pyx_t_2 = 0;
5039
5040   /* "TabProxies.pyx":382
5041  *        def __get__( self ):
5042  *            v = self._getindex(5)
5043  *            if v == "" or v[0] == '.':             # <<<<<<<<<<<<<<
5044  *                return None
5045  *            else:
5046  */
5047   __pyx_t_3 = __Pyx_PyString_Equals(__pyx_v_v, ((PyObject *)__pyx_kp_s_6), Py_EQ); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5048   if (!__pyx_t_3) {
5049     __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5050     __Pyx_GOTREF(__pyx_t_2);
5051     __pyx_t_4 = __Pyx_PyString_Equals(__pyx_t_2, ((PyObject *)__pyx_kp_s_21), Py_EQ); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5052     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5053     __pyx_t_5 = __pyx_t_4;
5054   } else {
5055     __pyx_t_5 = __pyx_t_3;
5056   }
5057   if (__pyx_t_5) {
5058
5059     /* "TabProxies.pyx":383
5060  *            v = self._getindex(5)
5061  *            if v == "" or v[0] == '.':
5062  *                return None             # <<<<<<<<<<<<<<
5063  *            else:
5064  *                return float(v)
5065  */
5066     __Pyx_XDECREF(__pyx_r);
5067     __Pyx_INCREF(Py_None);
5068     __pyx_r = Py_None;
5069     goto __pyx_L0;
5070     goto __pyx_L3;
5071   }
5072   /*else*/ {
5073
5074     /* "TabProxies.pyx":385
5075  *                return None
5076  *            else:
5077  *                return float(v)             # <<<<<<<<<<<<<<
5078  * 
5079  *        def __set__( self, value ): self._setindex( 5, value )
5080  */
5081     __Pyx_XDECREF(__pyx_r);
5082     __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_v_v); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5083     __pyx_t_2 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5084     __Pyx_GOTREF(__pyx_t_2);
5085     __pyx_r = __pyx_t_2;
5086     __pyx_t_2 = 0;
5087     goto __pyx_L0;
5088   }
5089   __pyx_L3:;
5090
5091   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5092   goto __pyx_L0;
5093   __pyx_L1_error:;
5094   __Pyx_XDECREF(__pyx_t_1);
5095   __Pyx_XDECREF(__pyx_t_2);
5096   __Pyx_AddTraceback("TabProxies.GTFProxy.score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5097   __pyx_r = NULL;
5098   __pyx_L0:;
5099   __Pyx_XDECREF(__pyx_v_v);
5100   __Pyx_XGIVEREF(__pyx_r);
5101   __Pyx_RefNannyFinishContext();
5102   return __pyx_r;
5103 }
5104
5105 /* Python wrapper */
5106 static int __pyx_pw_10TabProxies_8GTFProxy_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
5107 static int __pyx_pw_10TabProxies_8GTFProxy_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
5108   int __pyx_r;
5109   __Pyx_RefNannyDeclarations
5110   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
5111   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5score_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
5112   __Pyx_RefNannyFinishContext();
5113   return __pyx_r;
5114 }
5115
5116 /* "TabProxies.pyx":387
5117  *                return float(v)
5118  * 
5119  *        def __set__( self, value ): self._setindex( 5, value )             # <<<<<<<<<<<<<<
5120  * 
5121  *     property strand:
5122  */
5123
5124 static int __pyx_pf_10TabProxies_8GTFProxy_5score_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
5125   int __pyx_r;
5126   __Pyx_RefNannyDeclarations
5127   PyObject *__pyx_t_1 = NULL;
5128   PyObject *__pyx_t_2 = NULL;
5129   PyObject *__pyx_t_3 = NULL;
5130   int __pyx_lineno = 0;
5131   const char *__pyx_filename = NULL;
5132   int __pyx_clineno = 0;
5133   __Pyx_RefNannySetupContext("__set__", 0);
5134   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5135   __Pyx_GOTREF(__pyx_t_1);
5136   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5137   __Pyx_GOTREF(__pyx_t_2);
5138   __Pyx_INCREF(__pyx_int_5);
5139   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_5);
5140   __Pyx_GIVEREF(__pyx_int_5);
5141   __Pyx_INCREF(__pyx_v_value);
5142   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
5143   __Pyx_GIVEREF(__pyx_v_value);
5144   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5145   __Pyx_GOTREF(__pyx_t_3);
5146   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5147   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
5148   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5149
5150   __pyx_r = 0;
5151   goto __pyx_L0;
5152   __pyx_L1_error:;
5153   __Pyx_XDECREF(__pyx_t_1);
5154   __Pyx_XDECREF(__pyx_t_2);
5155   __Pyx_XDECREF(__pyx_t_3);
5156   __Pyx_AddTraceback("TabProxies.GTFProxy.score.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5157   __pyx_r = -1;
5158   __pyx_L0:;
5159   __Pyx_RefNannyFinishContext();
5160   return __pyx_r;
5161 }
5162
5163 /* Python wrapper */
5164 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6strand_1__get__(PyObject *__pyx_v_self); /*proto*/
5165 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_6strand_1__get__(PyObject *__pyx_v_self) {
5166   PyObject *__pyx_r = 0;
5167   __Pyx_RefNannyDeclarations
5168   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5169   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6strand___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
5170   __Pyx_RefNannyFinishContext();
5171   return __pyx_r;
5172 }
5173
5174 /* "TabProxies.pyx":391
5175  *     property strand:
5176  *        '''feature strand.'''
5177  *        def __get__( self ): return self._getindex( 6 )             # <<<<<<<<<<<<<<
5178  *        def __set__( self, value ): self._setindex( 6, value )
5179  * 
5180  */
5181
5182 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6strand___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5183   PyObject *__pyx_r = NULL;
5184   __Pyx_RefNannyDeclarations
5185   PyObject *__pyx_t_1 = NULL;
5186   PyObject *__pyx_t_2 = NULL;
5187   int __pyx_lineno = 0;
5188   const char *__pyx_filename = NULL;
5189   int __pyx_clineno = 0;
5190   __Pyx_RefNannySetupContext("__get__", 0);
5191   __Pyx_XDECREF(__pyx_r);
5192   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5193   __Pyx_GOTREF(__pyx_t_1);
5194   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5195   __Pyx_GOTREF(__pyx_t_2);
5196   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5197   __pyx_r = __pyx_t_2;
5198   __pyx_t_2 = 0;
5199   goto __pyx_L0;
5200
5201   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5202   goto __pyx_L0;
5203   __pyx_L1_error:;
5204   __Pyx_XDECREF(__pyx_t_1);
5205   __Pyx_XDECREF(__pyx_t_2);
5206   __Pyx_AddTraceback("TabProxies.GTFProxy.strand.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5207   __pyx_r = NULL;
5208   __pyx_L0:;
5209   __Pyx_XGIVEREF(__pyx_r);
5210   __Pyx_RefNannyFinishContext();
5211   return __pyx_r;
5212 }
5213
5214 /* Python wrapper */
5215 static int __pyx_pw_10TabProxies_8GTFProxy_6strand_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
5216 static int __pyx_pw_10TabProxies_8GTFProxy_6strand_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
5217   int __pyx_r;
5218   __Pyx_RefNannyDeclarations
5219   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
5220   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6strand_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
5221   __Pyx_RefNannyFinishContext();
5222   return __pyx_r;
5223 }
5224
5225 /* "TabProxies.pyx":392
5226  *        '''feature strand.'''
5227  *        def __get__( self ): return self._getindex( 6 )
5228  *        def __set__( self, value ): self._setindex( 6, value )             # <<<<<<<<<<<<<<
5229  * 
5230  *     property frame:
5231  */
5232
5233 static int __pyx_pf_10TabProxies_8GTFProxy_6strand_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
5234   int __pyx_r;
5235   __Pyx_RefNannyDeclarations
5236   PyObject *__pyx_t_1 = NULL;
5237   PyObject *__pyx_t_2 = NULL;
5238   PyObject *__pyx_t_3 = NULL;
5239   int __pyx_lineno = 0;
5240   const char *__pyx_filename = NULL;
5241   int __pyx_clineno = 0;
5242   __Pyx_RefNannySetupContext("__set__", 0);
5243   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5244   __Pyx_GOTREF(__pyx_t_1);
5245   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5246   __Pyx_GOTREF(__pyx_t_2);
5247   __Pyx_INCREF(__pyx_int_6);
5248   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_6);
5249   __Pyx_GIVEREF(__pyx_int_6);
5250   __Pyx_INCREF(__pyx_v_value);
5251   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
5252   __Pyx_GIVEREF(__pyx_v_value);
5253   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5254   __Pyx_GOTREF(__pyx_t_3);
5255   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5256   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
5257   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5258
5259   __pyx_r = 0;
5260   goto __pyx_L0;
5261   __pyx_L1_error:;
5262   __Pyx_XDECREF(__pyx_t_1);
5263   __Pyx_XDECREF(__pyx_t_2);
5264   __Pyx_XDECREF(__pyx_t_3);
5265   __Pyx_AddTraceback("TabProxies.GTFProxy.strand.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5266   __pyx_r = -1;
5267   __pyx_L0:;
5268   __Pyx_RefNannyFinishContext();
5269   return __pyx_r;
5270 }
5271
5272 /* Python wrapper */
5273 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5frame_1__get__(PyObject *__pyx_v_self); /*proto*/
5274 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5frame_1__get__(PyObject *__pyx_v_self) {
5275   PyObject *__pyx_r = 0;
5276   __Pyx_RefNannyDeclarations
5277   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5278   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5frame___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
5279   __Pyx_RefNannyFinishContext();
5280   return __pyx_r;
5281 }
5282
5283 /* "TabProxies.pyx":396
5284  *     property frame:
5285  *        '''feature frame.'''
5286  *        def __get__( self ): return self._getindex( 7 )             # <<<<<<<<<<<<<<
5287  *        def __set__( self, value ): self._setindex( 7, value )
5288  * 
5289  */
5290
5291 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_5frame___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5292   PyObject *__pyx_r = NULL;
5293   __Pyx_RefNannyDeclarations
5294   PyObject *__pyx_t_1 = NULL;
5295   PyObject *__pyx_t_2 = NULL;
5296   int __pyx_lineno = 0;
5297   const char *__pyx_filename = NULL;
5298   int __pyx_clineno = 0;
5299   __Pyx_RefNannySetupContext("__get__", 0);
5300   __Pyx_XDECREF(__pyx_r);
5301   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5302   __Pyx_GOTREF(__pyx_t_1);
5303   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5304   __Pyx_GOTREF(__pyx_t_2);
5305   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5306   __pyx_r = __pyx_t_2;
5307   __pyx_t_2 = 0;
5308   goto __pyx_L0;
5309
5310   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5311   goto __pyx_L0;
5312   __pyx_L1_error:;
5313   __Pyx_XDECREF(__pyx_t_1);
5314   __Pyx_XDECREF(__pyx_t_2);
5315   __Pyx_AddTraceback("TabProxies.GTFProxy.frame.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5316   __pyx_r = NULL;
5317   __pyx_L0:;
5318   __Pyx_XGIVEREF(__pyx_r);
5319   __Pyx_RefNannyFinishContext();
5320   return __pyx_r;
5321 }
5322
5323 /* Python wrapper */
5324 static int __pyx_pw_10TabProxies_8GTFProxy_5frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
5325 static int __pyx_pw_10TabProxies_8GTFProxy_5frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
5326   int __pyx_r;
5327   __Pyx_RefNannyDeclarations
5328   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
5329   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_5frame_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
5330   __Pyx_RefNannyFinishContext();
5331   return __pyx_r;
5332 }
5333
5334 /* "TabProxies.pyx":397
5335  *        '''feature frame.'''
5336  *        def __get__( self ): return self._getindex( 7 )
5337  *        def __set__( self, value ): self._setindex( 7, value )             # <<<<<<<<<<<<<<
5338  * 
5339  *     property attributes:
5340  */
5341
5342 static int __pyx_pf_10TabProxies_8GTFProxy_5frame_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
5343   int __pyx_r;
5344   __Pyx_RefNannyDeclarations
5345   PyObject *__pyx_t_1 = NULL;
5346   PyObject *__pyx_t_2 = NULL;
5347   PyObject *__pyx_t_3 = NULL;
5348   int __pyx_lineno = 0;
5349   const char *__pyx_filename = NULL;
5350   int __pyx_clineno = 0;
5351   __Pyx_RefNannySetupContext("__set__", 0);
5352   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5353   __Pyx_GOTREF(__pyx_t_1);
5354   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5355   __Pyx_GOTREF(__pyx_t_2);
5356   __Pyx_INCREF(__pyx_int_7);
5357   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_7);
5358   __Pyx_GIVEREF(__pyx_int_7);
5359   __Pyx_INCREF(__pyx_v_value);
5360   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
5361   __Pyx_GIVEREF(__pyx_v_value);
5362   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5363   __Pyx_GOTREF(__pyx_t_3);
5364   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5365   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
5366   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5367
5368   __pyx_r = 0;
5369   goto __pyx_L0;
5370   __pyx_L1_error:;
5371   __Pyx_XDECREF(__pyx_t_1);
5372   __Pyx_XDECREF(__pyx_t_2);
5373   __Pyx_XDECREF(__pyx_t_3);
5374   __Pyx_AddTraceback("TabProxies.GTFProxy.frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5375   __pyx_r = -1;
5376   __pyx_L0:;
5377   __Pyx_RefNannyFinishContext();
5378   return __pyx_r;
5379 }
5380
5381 /* Python wrapper */
5382 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_10attributes_1__get__(PyObject *__pyx_v_self); /*proto*/
5383 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_10attributes_1__get__(PyObject *__pyx_v_self) {
5384   PyObject *__pyx_r = 0;
5385   __Pyx_RefNannyDeclarations
5386   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5387   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_10attributes___get__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
5388   __Pyx_RefNannyFinishContext();
5389   return __pyx_r;
5390 }
5391
5392 /* "TabProxies.pyx":401
5393  *     property attributes:
5394  *        '''feature attributes (as a string).'''
5395  *        def __get__( self ):             # <<<<<<<<<<<<<<
5396  *            if self.hasOwnAttributes:
5397  *                return self._attributes
5398  */
5399
5400 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_10attributes___get__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5401   PyObject *__pyx_r = NULL;
5402   __Pyx_RefNannyDeclarations
5403   PyObject *__pyx_t_1 = NULL;
5404   PyObject *__pyx_t_2 = NULL;
5405   int __pyx_lineno = 0;
5406   const char *__pyx_filename = NULL;
5407   int __pyx_clineno = 0;
5408   __Pyx_RefNannySetupContext("__get__", 0);
5409
5410   /* "TabProxies.pyx":402
5411  *        '''feature attributes (as a string).'''
5412  *        def __get__( self ):
5413  *            if self.hasOwnAttributes:             # <<<<<<<<<<<<<<
5414  *                return self._attributes
5415  *            else:
5416  */
5417   if (__pyx_v_self->hasOwnAttributes) {
5418
5419     /* "TabProxies.pyx":403
5420  *        def __get__( self ):
5421  *            if self.hasOwnAttributes:
5422  *                return self._attributes             # <<<<<<<<<<<<<<
5423  *            else:
5424  *                return self._getindex( 8 )
5425  */
5426     __Pyx_XDECREF(__pyx_r);
5427     __pyx_t_1 = PyBytes_FromString(__pyx_v_self->_attributes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5428     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
5429     __pyx_r = ((PyObject *)__pyx_t_1);
5430     __pyx_t_1 = 0;
5431     goto __pyx_L0;
5432     goto __pyx_L3;
5433   }
5434   /*else*/ {
5435
5436     /* "TabProxies.pyx":405
5437  *                return self._attributes
5438  *            else:
5439  *                return self._getindex( 8 )             # <<<<<<<<<<<<<<
5440  *        def __set__( self, value ):
5441  *            if self.hasOwnAttributes:
5442  */
5443     __Pyx_XDECREF(__pyx_r);
5444     __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___getindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5445     __Pyx_GOTREF(__pyx_t_1);
5446     __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_31), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5447     __Pyx_GOTREF(__pyx_t_2);
5448     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5449     __pyx_r = __pyx_t_2;
5450     __pyx_t_2 = 0;
5451     goto __pyx_L0;
5452   }
5453   __pyx_L3:;
5454
5455   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5456   goto __pyx_L0;
5457   __pyx_L1_error:;
5458   __Pyx_XDECREF(__pyx_t_1);
5459   __Pyx_XDECREF(__pyx_t_2);
5460   __Pyx_AddTraceback("TabProxies.GTFProxy.attributes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5461   __pyx_r = NULL;
5462   __pyx_L0:;
5463   __Pyx_XGIVEREF(__pyx_r);
5464   __Pyx_RefNannyFinishContext();
5465   return __pyx_r;
5466 }
5467
5468 /* Python wrapper */
5469 static int __pyx_pw_10TabProxies_8GTFProxy_10attributes_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
5470 static int __pyx_pw_10TabProxies_8GTFProxy_10attributes_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
5471   int __pyx_r;
5472   __Pyx_RefNannyDeclarations
5473   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
5474   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_10attributes_2__set__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_value));
5475   __Pyx_RefNannyFinishContext();
5476   return __pyx_r;
5477 }
5478
5479 /* "TabProxies.pyx":406
5480  *            else:
5481  *                return self._getindex( 8 )
5482  *        def __set__( self, value ):             # <<<<<<<<<<<<<<
5483  *            if self.hasOwnAttributes:
5484  *                free(self._attributes)
5485  */
5486
5487 static int __pyx_pf_10TabProxies_8GTFProxy_10attributes_2__set__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_value) {
5488   int __pyx_r;
5489   __Pyx_RefNannyDeclarations
5490   PyObject *__pyx_t_1 = NULL;
5491   PyObject *__pyx_t_2 = NULL;
5492   PyObject *__pyx_t_3 = NULL;
5493   int __pyx_lineno = 0;
5494   const char *__pyx_filename = NULL;
5495   int __pyx_clineno = 0;
5496   __Pyx_RefNannySetupContext("__set__", 0);
5497
5498   /* "TabProxies.pyx":407
5499  *                return self._getindex( 8 )
5500  *        def __set__( self, value ):
5501  *            if self.hasOwnAttributes:             # <<<<<<<<<<<<<<
5502  *                free(self._attributes)
5503  *                self._attributes = NULL
5504  */
5505   if (__pyx_v_self->hasOwnAttributes) {
5506
5507     /* "TabProxies.pyx":408
5508  *        def __set__( self, value ):
5509  *            if self.hasOwnAttributes:
5510  *                free(self._attributes)             # <<<<<<<<<<<<<<
5511  *                self._attributes = NULL
5512  *                self.hasOwnAttributes = False
5513  */
5514     free(__pyx_v_self->_attributes);
5515
5516     /* "TabProxies.pyx":409
5517  *            if self.hasOwnAttributes:
5518  *                free(self._attributes)
5519  *                self._attributes = NULL             # <<<<<<<<<<<<<<
5520  *                self.hasOwnAttributes = False
5521  *            self._setindex(8, value )
5522  */
5523     __pyx_v_self->_attributes = NULL;
5524
5525     /* "TabProxies.pyx":410
5526  *                free(self._attributes)
5527  *                self._attributes = NULL
5528  *                self.hasOwnAttributes = False             # <<<<<<<<<<<<<<
5529  *            self._setindex(8, value )
5530  * 
5531  */
5532     __pyx_v_self->hasOwnAttributes = 0;
5533     goto __pyx_L3;
5534   }
5535   __pyx_L3:;
5536
5537   /* "TabProxies.pyx":411
5538  *                self._attributes = NULL
5539  *                self.hasOwnAttributes = False
5540  *            self._setindex(8, value )             # <<<<<<<<<<<<<<
5541  * 
5542  *     cdef char * getAttributes( self ):
5543  */
5544   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___setindex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5545   __Pyx_GOTREF(__pyx_t_1);
5546   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5547   __Pyx_GOTREF(__pyx_t_2);
5548   __Pyx_INCREF(__pyx_int_8);
5549   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_8);
5550   __Pyx_GIVEREF(__pyx_int_8);
5551   __Pyx_INCREF(__pyx_v_value);
5552   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
5553   __Pyx_GIVEREF(__pyx_v_value);
5554   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5555   __Pyx_GOTREF(__pyx_t_3);
5556   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5557   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
5558   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5559
5560   __pyx_r = 0;
5561   goto __pyx_L0;
5562   __pyx_L1_error:;
5563   __Pyx_XDECREF(__pyx_t_1);
5564   __Pyx_XDECREF(__pyx_t_2);
5565   __Pyx_XDECREF(__pyx_t_3);
5566   __Pyx_AddTraceback("TabProxies.GTFProxy.attributes.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5567   __pyx_r = -1;
5568   __pyx_L0:;
5569   __Pyx_RefNannyFinishContext();
5570   return __pyx_r;
5571 }
5572
5573 /* "TabProxies.pyx":413
5574  *            self._setindex(8, value )
5575  * 
5576  *     cdef char * getAttributes( self ):             # <<<<<<<<<<<<<<
5577  *        '''return pointer to attributes.'''
5578  *        if self.hasOwnAttributes:
5579  */
5580
5581 static char *__pyx_f_10TabProxies_8GTFProxy_getAttributes(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5582   char *__pyx_r;
5583   __Pyx_RefNannyDeclarations
5584   __Pyx_RefNannySetupContext("getAttributes", 0);
5585
5586   /* "TabProxies.pyx":415
5587  *     cdef char * getAttributes( self ):
5588  *        '''return pointer to attributes.'''
5589  *        if self.hasOwnAttributes:             # <<<<<<<<<<<<<<
5590  *            return self._attributes
5591  *        else:
5592  */
5593   if (__pyx_v_self->hasOwnAttributes) {
5594
5595     /* "TabProxies.pyx":416
5596  *        '''return pointer to attributes.'''
5597  *        if self.hasOwnAttributes:
5598  *            return self._attributes             # <<<<<<<<<<<<<<
5599  *        else:
5600  *            return self.fields[ 8 ]
5601  */
5602     __pyx_r = __pyx_v_self->_attributes;
5603     goto __pyx_L0;
5604     goto __pyx_L3;
5605   }
5606   /*else*/ {
5607
5608     /* "TabProxies.pyx":418
5609  *            return self._attributes
5610  *        else:
5611  *            return self.fields[ 8 ]             # <<<<<<<<<<<<<<
5612  * 
5613  *     def asDict( self ):
5614  */
5615     __pyx_r = (__pyx_v_self->__pyx_base.fields[8]);
5616     goto __pyx_L0;
5617   }
5618   __pyx_L3:;
5619
5620   __pyx_r = 0;
5621   __pyx_L0:;
5622   __Pyx_RefNannyFinishContext();
5623   return __pyx_r;
5624 }
5625
5626 /* Python wrapper */
5627 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5asDict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
5628 static char __pyx_doc_10TabProxies_8GTFProxy_4asDict[] = "parse attributes - return as dict\n        ";
5629 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_5asDict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
5630   PyObject *__pyx_r = 0;
5631   __Pyx_RefNannyDeclarations
5632   __Pyx_RefNannySetupContext("asDict (wrapper)", 0);
5633   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_4asDict(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
5634   __Pyx_RefNannyFinishContext();
5635   return __pyx_r;
5636 }
5637
5638 /* "TabProxies.pyx":420
5639  *            return self.fields[ 8 ]
5640  * 
5641  *     def asDict( self ):             # <<<<<<<<<<<<<<
5642  *         """parse attributes - return as dict
5643  *         """
5644  */
5645
5646 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_4asDict(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
5647   PyObject *__pyx_v_attributes = NULL;
5648   PyObject *__pyx_v_fields = NULL;
5649   PyObject *__pyx_v_result = NULL;
5650   PyObject *__pyx_v_f = NULL;
5651   PyObject *__pyx_v_d = NULL;
5652   PyObject *__pyx_v_n = NULL;
5653   PyObject *__pyx_v_v = NULL;
5654   PyObject *__pyx_v_x = NULL;
5655   PyObject *__pyx_r = NULL;
5656   __Pyx_RefNannyDeclarations
5657   PyObject *__pyx_t_1 = NULL;
5658   PyObject *__pyx_t_2 = NULL;
5659   PyObject *__pyx_t_3 = NULL;
5660   Py_ssize_t __pyx_t_4;
5661   PyObject *(*__pyx_t_5)(PyObject *);
5662   PyObject *__pyx_t_6 = NULL;
5663   Py_ssize_t __pyx_t_7;
5664   PyObject *__pyx_t_8 = NULL;
5665   int __pyx_t_9;
5666   int __pyx_t_10;
5667   int __pyx_t_11;
5668   PyObject *__pyx_t_12 = NULL;
5669   PyObject *__pyx_t_13 = NULL;
5670   PyObject *__pyx_t_14 = NULL;
5671   double __pyx_t_15;
5672   int __pyx_t_16;
5673   int __pyx_lineno = 0;
5674   const char *__pyx_filename = NULL;
5675   int __pyx_clineno = 0;
5676   __Pyx_RefNannySetupContext("asDict", 0);
5677
5678   /* "TabProxies.pyx":425
5679  * 
5680  *         # remove comments
5681  *         attributes = self.attributes             # <<<<<<<<<<<<<<
5682  * 
5683  *         # separate into fields
5684  */
5685   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__attributes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5686   __Pyx_GOTREF(__pyx_t_1);
5687   __pyx_v_attributes = __pyx_t_1;
5688   __pyx_t_1 = 0;
5689
5690   /* "TabProxies.pyx":428
5691  * 
5692  *         # separate into fields
5693  *         fields = [ x.strip() for x in attributes.split(";")[:-1]]             # <<<<<<<<<<<<<<
5694  * 
5695  *         result = {}
5696  */
5697   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5698   __Pyx_GOTREF(__pyx_t_1);
5699   __pyx_t_2 = PyObject_GetAttr(__pyx_v_attributes, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5700   __Pyx_GOTREF(__pyx_t_2);
5701   __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_33), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5702   __Pyx_GOTREF(__pyx_t_3);
5703   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5704   __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_t_3, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5705   __Pyx_GOTREF(__pyx_t_2);
5706   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5707   if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
5708     __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
5709     __pyx_t_5 = NULL;
5710   } else {
5711     __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5712     __Pyx_GOTREF(__pyx_t_3);
5713     __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
5714   }
5715   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5716   for (;;) {
5717     if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
5718       if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
5719       __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
5720     } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
5721       if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
5722       __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
5723     } else {
5724       __pyx_t_2 = __pyx_t_5(__pyx_t_3);
5725       if (unlikely(!__pyx_t_2)) {
5726         if (PyErr_Occurred()) {
5727           if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
5728           else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5729         }
5730         break;
5731       }
5732       __Pyx_GOTREF(__pyx_t_2);
5733     }
5734     __Pyx_XDECREF(__pyx_v_x);
5735     __pyx_v_x = __pyx_t_2;
5736     __pyx_t_2 = 0;
5737     __pyx_t_2 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__strip); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5738     __Pyx_GOTREF(__pyx_t_2);
5739     __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5740     __Pyx_GOTREF(__pyx_t_6);
5741     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5742     if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5743     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5744   }
5745   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5746   __Pyx_INCREF(((PyObject *)__pyx_t_1));
5747   __pyx_v_fields = __pyx_t_1;
5748   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
5749
5750   /* "TabProxies.pyx":430
5751  *         fields = [ x.strip() for x in attributes.split(";")[:-1]]
5752  * 
5753  *         result = {}             # <<<<<<<<<<<<<<
5754  * 
5755  *         for f in fields:
5756  */
5757   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5758   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
5759   __pyx_v_result = __pyx_t_1;
5760   __pyx_t_1 = 0;
5761
5762   /* "TabProxies.pyx":432
5763  *         result = {}
5764  * 
5765  *         for f in fields:             # <<<<<<<<<<<<<<
5766  * 
5767  *             d = [ x.strip() for x in f.split(" ")]
5768  */
5769   __pyx_t_1 = ((PyObject *)__pyx_v_fields); __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
5770   for (;;) {
5771     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
5772     __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++;
5773     __Pyx_XDECREF(__pyx_v_f);
5774     __pyx_v_f = __pyx_t_3;
5775     __pyx_t_3 = 0;
5776
5777     /* "TabProxies.pyx":434
5778  *         for f in fields:
5779  * 
5780  *             d = [ x.strip() for x in f.split(" ")]             # <<<<<<<<<<<<<<
5781  * 
5782  *             n,v = d[0], d[1]
5783  */
5784     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5785     __Pyx_GOTREF(__pyx_t_3);
5786     __pyx_t_6 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5787     __Pyx_GOTREF(__pyx_t_6);
5788     __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_35), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5789     __Pyx_GOTREF(__pyx_t_2);
5790     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5791     if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
5792       __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0;
5793       __pyx_t_5 = NULL;
5794     } else {
5795       __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5796       __Pyx_GOTREF(__pyx_t_6);
5797       __pyx_t_5 = Py_TYPE(__pyx_t_6)->tp_iternext;
5798     }
5799     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5800     for (;;) {
5801       if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_6)) {
5802         if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
5803         __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++;
5804       } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_6)) {
5805         if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
5806         __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++;
5807       } else {
5808         __pyx_t_2 = __pyx_t_5(__pyx_t_6);
5809         if (unlikely(!__pyx_t_2)) {
5810           if (PyErr_Occurred()) {
5811             if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
5812             else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5813           }
5814           break;
5815         }
5816         __Pyx_GOTREF(__pyx_t_2);
5817       }
5818       __Pyx_XDECREF(__pyx_v_x);
5819       __pyx_v_x = __pyx_t_2;
5820       __pyx_t_2 = 0;
5821       __pyx_t_2 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__strip); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5822       __Pyx_GOTREF(__pyx_t_2);
5823       __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5824       __Pyx_GOTREF(__pyx_t_8);
5825       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5826       if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5827       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5828     }
5829     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5830     __Pyx_INCREF(((PyObject *)__pyx_t_3));
5831     __Pyx_XDECREF(((PyObject *)__pyx_v_d));
5832     __pyx_v_d = __pyx_t_3;
5833     __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
5834
5835     /* "TabProxies.pyx":436
5836  *             d = [ x.strip() for x in f.split(" ")]
5837  * 
5838  *             n,v = d[0], d[1]             # <<<<<<<<<<<<<<
5839  *             if len(d) > 2: v = d[1:]
5840  * 
5841  */
5842     __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_d), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5843     __Pyx_GOTREF(__pyx_t_3);
5844     __pyx_t_6 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_d), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5845     __Pyx_GOTREF(__pyx_t_6);
5846     __Pyx_XDECREF(__pyx_v_n);
5847     __pyx_v_n = __pyx_t_3;
5848     __pyx_t_3 = 0;
5849     __Pyx_XDECREF(__pyx_v_v);
5850     __pyx_v_v = __pyx_t_6;
5851     __pyx_t_6 = 0;
5852
5853     /* "TabProxies.pyx":437
5854  * 
5855  *             n,v = d[0], d[1]
5856  *             if len(d) > 2: v = d[1:]             # <<<<<<<<<<<<<<
5857  * 
5858  *             if v[0] == '"' and v[-1] == '"':
5859  */
5860     __pyx_t_7 = PyList_GET_SIZE(((PyObject *)__pyx_v_d)); 
5861     __pyx_t_9 = (__pyx_t_7 > 2);
5862     if (__pyx_t_9) {
5863       __pyx_t_6 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_v_d), 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5864       __Pyx_GOTREF(((PyObject *)__pyx_t_6));
5865       __Pyx_DECREF(__pyx_v_v);
5866       __pyx_v_v = ((PyObject *)__pyx_t_6);
5867       __pyx_t_6 = 0;
5868       goto __pyx_L9;
5869     }
5870     __pyx_L9:;
5871
5872     /* "TabProxies.pyx":439
5873  *             if len(d) > 2: v = d[1:]
5874  * 
5875  *             if v[0] == '"' and v[-1] == '"':             # <<<<<<<<<<<<<<
5876  *                 v = v[1:-1]
5877  *             else:
5878  */
5879     __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_v, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5880     __Pyx_GOTREF(__pyx_t_6);
5881     __pyx_t_9 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_kp_s_36), Py_EQ); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5882     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5883     if (__pyx_t_9) {
5884       __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_v, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5885       __Pyx_GOTREF(__pyx_t_6);
5886       __pyx_t_10 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_kp_s_36), Py_EQ); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5887       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5888       __pyx_t_11 = __pyx_t_10;
5889     } else {
5890       __pyx_t_11 = __pyx_t_9;
5891     }
5892     if (__pyx_t_11) {
5893
5894       /* "TabProxies.pyx":440
5895  * 
5896  *             if v[0] == '"' and v[-1] == '"':
5897  *                 v = v[1:-1]             # <<<<<<<<<<<<<<
5898  *             else:
5899  *                 ## try to convert to a value
5900  */
5901       __pyx_t_6 = __Pyx_PySequence_GetSlice(__pyx_v_v, 1, -1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5902       __Pyx_GOTREF(__pyx_t_6);
5903       __Pyx_DECREF(__pyx_v_v);
5904       __pyx_v_v = __pyx_t_6;
5905       __pyx_t_6 = 0;
5906       goto __pyx_L10;
5907     }
5908     /*else*/ {
5909
5910       /* "TabProxies.pyx":443
5911  *             else:
5912  *                 ## try to convert to a value
5913  *                 try:             # <<<<<<<<<<<<<<
5914  *                     v = float( v )
5915  *                     v = int( v )
5916  */
5917       {
5918         __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
5919         __Pyx_XGOTREF(__pyx_t_12);
5920         __Pyx_XGOTREF(__pyx_t_13);
5921         __Pyx_XGOTREF(__pyx_t_14);
5922         /*try:*/ {
5923
5924           /* "TabProxies.pyx":444
5925  *                 ## try to convert to a value
5926  *                 try:
5927  *                     v = float( v )             # <<<<<<<<<<<<<<
5928  *                     v = int( v )
5929  *                 except ValueError:
5930  */
5931           __pyx_t_15 = __Pyx_PyObject_AsDouble(__pyx_v_v); if (unlikely(__pyx_t_15 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
5932           __pyx_t_6 = PyFloat_FromDouble(__pyx_t_15); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
5933           __Pyx_GOTREF(__pyx_t_6);
5934           __Pyx_DECREF(__pyx_v_v);
5935           __pyx_v_v = __pyx_t_6;
5936           __pyx_t_6 = 0;
5937
5938           /* "TabProxies.pyx":445
5939  *                 try:
5940  *                     v = float( v )
5941  *                     v = int( v )             # <<<<<<<<<<<<<<
5942  *                 except ValueError:
5943  *                     pass
5944  */
5945           __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
5946           __Pyx_GOTREF(__pyx_t_6);
5947           __Pyx_INCREF(__pyx_v_v);
5948           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_v);
5949           __Pyx_GIVEREF(__pyx_v_v);
5950           __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
5951           __Pyx_GOTREF(__pyx_t_3);
5952           __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
5953           __Pyx_DECREF(__pyx_v_v);
5954           __pyx_v_v = __pyx_t_3;
5955           __pyx_t_3 = 0;
5956         }
5957         __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
5958         __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
5959         __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
5960         goto __pyx_L18_try_end;
5961         __pyx_L11_error:;
5962         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
5963         __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
5964         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
5965         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5966
5967         /* "TabProxies.pyx":446
5968  *                     v = float( v )
5969  *                     v = int( v )
5970  *                 except ValueError:             # <<<<<<<<<<<<<<
5971  *                     pass
5972  *                 except TypeError:
5973  */
5974         __pyx_t_16 = PyErr_ExceptionMatches(__pyx_builtin_ValueError);
5975         if (__pyx_t_16) {
5976           PyErr_Restore(0,0,0);
5977           goto __pyx_L12_exception_handled;
5978         }
5979
5980         /* "TabProxies.pyx":448
5981  *                 except ValueError:
5982  *                     pass
5983  *                 except TypeError:             # <<<<<<<<<<<<<<
5984  *                     pass
5985  * 
5986  */
5987         __pyx_t_16 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
5988         if (__pyx_t_16) {
5989           PyErr_Restore(0,0,0);
5990           goto __pyx_L12_exception_handled;
5991         }
5992         __Pyx_XGIVEREF(__pyx_t_12);
5993         __Pyx_XGIVEREF(__pyx_t_13);
5994         __Pyx_XGIVEREF(__pyx_t_14);
5995         __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
5996         goto __pyx_L1_error;
5997         __pyx_L12_exception_handled:;
5998         __Pyx_XGIVEREF(__pyx_t_12);
5999         __Pyx_XGIVEREF(__pyx_t_13);
6000         __Pyx_XGIVEREF(__pyx_t_14);
6001         __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
6002         __pyx_L18_try_end:;
6003       }
6004     }
6005     __pyx_L10:;
6006
6007     /* "TabProxies.pyx":451
6008  *                     pass
6009  * 
6010  *             result[n] = v             # <<<<<<<<<<<<<<
6011  * 
6012  *         return result
6013  */
6014     if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_n, __pyx_v_v) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6015   }
6016   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6017
6018   /* "TabProxies.pyx":453
6019  *             result[n] = v
6020  * 
6021  *         return result             # <<<<<<<<<<<<<<
6022  * 
6023  *     def fromDict( self, d ):
6024  */
6025   __Pyx_XDECREF(__pyx_r);
6026   __Pyx_INCREF(((PyObject *)__pyx_v_result));
6027   __pyx_r = ((PyObject *)__pyx_v_result);
6028   goto __pyx_L0;
6029
6030   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6031   goto __pyx_L0;
6032   __pyx_L1_error:;
6033   __Pyx_XDECREF(__pyx_t_1);
6034   __Pyx_XDECREF(__pyx_t_2);
6035   __Pyx_XDECREF(__pyx_t_3);
6036   __Pyx_XDECREF(__pyx_t_6);
6037   __Pyx_XDECREF(__pyx_t_8);
6038   __Pyx_AddTraceback("TabProxies.GTFProxy.asDict", __pyx_clineno, __pyx_lineno, __pyx_filename);
6039   __pyx_r = NULL;
6040   __pyx_L0:;
6041   __Pyx_XDECREF(__pyx_v_attributes);
6042   __Pyx_XDECREF(__pyx_v_fields);
6043   __Pyx_XDECREF(__pyx_v_result);
6044   __Pyx_XDECREF(__pyx_v_f);
6045   __Pyx_XDECREF(__pyx_v_d);
6046   __Pyx_XDECREF(__pyx_v_n);
6047   __Pyx_XDECREF(__pyx_v_v);
6048   __Pyx_XDECREF(__pyx_v_x);
6049   __Pyx_XGIVEREF(__pyx_r);
6050   __Pyx_RefNannyFinishContext();
6051   return __pyx_r;
6052 }
6053
6054 /* Python wrapper */
6055 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_7fromDict(PyObject *__pyx_v_self, PyObject *__pyx_v_d); /*proto*/
6056 static char __pyx_doc_10TabProxies_8GTFProxy_6fromDict[] = "set attributes from a dictionary.";
6057 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_7fromDict(PyObject *__pyx_v_self, PyObject *__pyx_v_d) {
6058   PyObject *__pyx_r = 0;
6059   __Pyx_RefNannyDeclarations
6060   __Pyx_RefNannySetupContext("fromDict (wrapper)", 0);
6061   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_6fromDict(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_d));
6062   __Pyx_RefNannyFinishContext();
6063   return __pyx_r;
6064 }
6065
6066 /* "TabProxies.pyx":455
6067  *         return result
6068  * 
6069  *     def fromDict( self, d ):             # <<<<<<<<<<<<<<
6070  *         '''set attributes from a dictionary.'''
6071  *         cdef char * p
6072  */
6073
6074 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_6fromDict(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_d) {
6075   char *__pyx_v_p;
6076   int __pyx_v_l;
6077   PyObject *__pyx_v_aa = NULL;
6078   PyObject *__pyx_v_k = NULL;
6079   PyObject *__pyx_v_v = NULL;
6080   PyObject *__pyx_v_a = NULL;
6081   PyObject *__pyx_r = NULL;
6082   __Pyx_RefNannyDeclarations
6083   PyObject *__pyx_t_1 = NULL;
6084   PyObject *__pyx_t_2 = NULL;
6085   Py_ssize_t __pyx_t_3;
6086   PyObject *(*__pyx_t_4)(PyObject *);
6087   PyObject *__pyx_t_5 = NULL;
6088   PyObject *__pyx_t_6 = NULL;
6089   PyObject *__pyx_t_7 = NULL;
6090   PyObject *(*__pyx_t_8)(PyObject *);
6091   int __pyx_t_9;
6092   int __pyx_t_10;
6093   char *__pyx_t_11;
6094   int __pyx_lineno = 0;
6095   const char *__pyx_filename = NULL;
6096   int __pyx_clineno = 0;
6097   __Pyx_RefNannySetupContext("fromDict", 0);
6098
6099   /* "TabProxies.pyx":461
6100  * 
6101  *         # clean up if this field is set twice
6102  *         if self.hasOwnAttributes:             # <<<<<<<<<<<<<<
6103  *             free(self._attributes)
6104  * 
6105  */
6106   if (__pyx_v_self->hasOwnAttributes) {
6107
6108     /* "TabProxies.pyx":462
6109  *         # clean up if this field is set twice
6110  *         if self.hasOwnAttributes:
6111  *             free(self._attributes)             # <<<<<<<<<<<<<<
6112  * 
6113  *         aa = []
6114  */
6115     free(__pyx_v_self->_attributes);
6116     goto __pyx_L3;
6117   }
6118   __pyx_L3:;
6119
6120   /* "TabProxies.pyx":464
6121  *             free(self._attributes)
6122  * 
6123  *         aa = []             # <<<<<<<<<<<<<<
6124  *         for k,v in d.items():
6125  *             if type(v) in types.StringTypes:
6126  */
6127   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6128   __Pyx_GOTREF(__pyx_t_1);
6129   __pyx_v_aa = __pyx_t_1;
6130   __pyx_t_1 = 0;
6131
6132   /* "TabProxies.pyx":465
6133  * 
6134  *         aa = []
6135  *         for k,v in d.items():             # <<<<<<<<<<<<<<
6136  *             if type(v) in types.StringTypes:
6137  *                 aa.append( '%s "%s"' % (k,v) )
6138  */
6139   __pyx_t_1 = PyObject_GetAttr(__pyx_v_d, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6140   __Pyx_GOTREF(__pyx_t_1);
6141   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6142   __Pyx_GOTREF(__pyx_t_2);
6143   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6144   if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
6145     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
6146     __pyx_t_4 = NULL;
6147   } else {
6148     __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6149     __Pyx_GOTREF(__pyx_t_1);
6150     __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
6151   }
6152   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6153   for (;;) {
6154     if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
6155       if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
6156       __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++;
6157     } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
6158       if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
6159       __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++;
6160     } else {
6161       __pyx_t_2 = __pyx_t_4(__pyx_t_1);
6162       if (unlikely(!__pyx_t_2)) {
6163         if (PyErr_Occurred()) {
6164           if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
6165           else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6166         }
6167         break;
6168       }
6169       __Pyx_GOTREF(__pyx_t_2);
6170     }
6171     if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
6172       PyObject* sequence = __pyx_t_2;
6173       if (likely(PyTuple_CheckExact(sequence))) {
6174         if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
6175           if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
6176           else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
6177           {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6178         }
6179         __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
6180         __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
6181       } else {
6182         if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
6183           if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
6184           else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
6185           {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6186         }
6187         __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
6188         __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
6189       }
6190       __Pyx_INCREF(__pyx_t_5);
6191       __Pyx_INCREF(__pyx_t_6);
6192       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6193     } else {
6194       Py_ssize_t index = -1;
6195       __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6196       __Pyx_GOTREF(__pyx_t_7);
6197       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6198       __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
6199       index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
6200       __Pyx_GOTREF(__pyx_t_5);
6201       index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
6202       __Pyx_GOTREF(__pyx_t_6);
6203       if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6204       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6205       goto __pyx_L7_unpacking_done;
6206       __pyx_L6_unpacking_failed:;
6207       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6208       if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
6209       if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
6210       {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6211       __pyx_L7_unpacking_done:;
6212     }
6213     __Pyx_XDECREF(__pyx_v_k);
6214     __pyx_v_k = __pyx_t_5;
6215     __pyx_t_5 = 0;
6216     __Pyx_XDECREF(__pyx_v_v);
6217     __pyx_v_v = __pyx_t_6;
6218     __pyx_t_6 = 0;
6219
6220     /* "TabProxies.pyx":466
6221  *         aa = []
6222  *         for k,v in d.items():
6223  *             if type(v) in types.StringTypes:             # <<<<<<<<<<<<<<
6224  *                 aa.append( '%s "%s"' % (k,v) )
6225  *             else:
6226  */
6227     __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__types); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6228     __Pyx_GOTREF(__pyx_t_2);
6229     __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__StringTypes); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6230     __Pyx_GOTREF(__pyx_t_6);
6231     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6232     __pyx_t_9 = ((PySequence_Contains(__pyx_t_6, ((PyObject *)Py_TYPE(__pyx_v_v))))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6233     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6234     if (__pyx_t_9) {
6235
6236       /* "TabProxies.pyx":467
6237  *         for k,v in d.items():
6238  *             if type(v) in types.StringTypes:
6239  *                 aa.append( '%s "%s"' % (k,v) )             # <<<<<<<<<<<<<<
6240  *             else:
6241  *                 aa.append( '%s %s' % (k,str(v)) )
6242  */
6243       __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6244       __Pyx_GOTREF(__pyx_t_6);
6245       __Pyx_INCREF(__pyx_v_k);
6246       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_k);
6247       __Pyx_GIVEREF(__pyx_v_k);
6248       __Pyx_INCREF(__pyx_v_v);
6249       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_v);
6250       __Pyx_GIVEREF(__pyx_v_v);
6251       __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6252       __Pyx_GOTREF(((PyObject *)__pyx_t_2));
6253       __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
6254       __pyx_t_10 = PyList_Append(__pyx_v_aa, ((PyObject *)__pyx_t_2)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6255       __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
6256       goto __pyx_L8;
6257     }
6258     /*else*/ {
6259
6260       /* "TabProxies.pyx":469
6261  *                 aa.append( '%s "%s"' % (k,v) )
6262  *             else:
6263  *                 aa.append( '%s %s' % (k,str(v)) )             # <<<<<<<<<<<<<<
6264  * 
6265  *         a = "; ".join( aa ) + ";"
6266  */
6267       __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6268       __Pyx_GOTREF(__pyx_t_2);
6269       __Pyx_INCREF(__pyx_v_v);
6270       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_v);
6271       __Pyx_GIVEREF(__pyx_v_v);
6272       __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6273       __Pyx_GOTREF(__pyx_t_6);
6274       __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
6275       __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6276       __Pyx_GOTREF(__pyx_t_2);
6277       __Pyx_INCREF(__pyx_v_k);
6278       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_k);
6279       __Pyx_GIVEREF(__pyx_v_k);
6280       PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
6281       __Pyx_GIVEREF(__pyx_t_6);
6282       __pyx_t_6 = 0;
6283       __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_38), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6284       __Pyx_GOTREF(((PyObject *)__pyx_t_6));
6285       __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
6286       __pyx_t_10 = PyList_Append(__pyx_v_aa, ((PyObject *)__pyx_t_6)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6287       __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
6288     }
6289     __pyx_L8:;
6290   }
6291   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6292
6293   /* "TabProxies.pyx":471
6294  *                 aa.append( '%s %s' % (k,str(v)) )
6295  * 
6296  *         a = "; ".join( aa ) + ";"             # <<<<<<<<<<<<<<
6297  *         p = a
6298  *         l = len(a)
6299  */
6300   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_39), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6301   __Pyx_GOTREF(__pyx_t_1);
6302   __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6303   __Pyx_GOTREF(__pyx_t_6);
6304   __Pyx_INCREF(((PyObject *)__pyx_v_aa));
6305   PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_aa));
6306   __Pyx_GIVEREF(((PyObject *)__pyx_v_aa));
6307   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6308   __Pyx_GOTREF(__pyx_t_2);
6309   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6310   __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
6311   __pyx_t_6 = PyNumber_Add(__pyx_t_2, ((PyObject *)__pyx_kp_s_32)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6312   __Pyx_GOTREF(__pyx_t_6);
6313   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6314   __pyx_v_a = __pyx_t_6;
6315   __pyx_t_6 = 0;
6316
6317   /* "TabProxies.pyx":472
6318  * 
6319  *         a = "; ".join( aa ) + ";"
6320  *         p = a             # <<<<<<<<<<<<<<
6321  *         l = len(a)
6322  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )
6323  */
6324   __pyx_t_11 = PyBytes_AsString(__pyx_v_a); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6325   __pyx_v_p = __pyx_t_11;
6326
6327   /* "TabProxies.pyx":473
6328  *         a = "; ".join( aa ) + ";"
6329  *         p = a
6330  *         l = len(a)             # <<<<<<<<<<<<<<
6331  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )
6332  *         if self._attributes == NULL:
6333  */
6334   __pyx_t_3 = PyObject_Length(__pyx_v_a); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6335   __pyx_v_l = __pyx_t_3;
6336
6337   /* "TabProxies.pyx":474
6338  *         p = a
6339  *         l = len(a)
6340  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )             # <<<<<<<<<<<<<<
6341  *         if self._attributes == NULL:
6342  *             raise ValueError("out of memory" )
6343  */
6344   __pyx_v_self->_attributes = ((char *)calloc((__pyx_v_l + 1), (sizeof(char))));
6345
6346   /* "TabProxies.pyx":475
6347  *         l = len(a)
6348  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )
6349  *         if self._attributes == NULL:             # <<<<<<<<<<<<<<
6350  *             raise ValueError("out of memory" )
6351  *         memcpy( self._attributes, p, l )
6352  */
6353   __pyx_t_9 = (__pyx_v_self->_attributes == NULL);
6354   if (__pyx_t_9) {
6355
6356     /* "TabProxies.pyx":476
6357  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )
6358  *         if self._attributes == NULL:
6359  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
6360  *         memcpy( self._attributes, p, l )
6361  * 
6362  */
6363     __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6364     __Pyx_GOTREF(__pyx_t_6);
6365     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
6366     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6367     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6368     goto __pyx_L9;
6369   }
6370   __pyx_L9:;
6371
6372   /* "TabProxies.pyx":477
6373  *         if self._attributes == NULL:
6374  *             raise ValueError("out of memory" )
6375  *         memcpy( self._attributes, p, l )             # <<<<<<<<<<<<<<
6376  * 
6377  *         self.hasOwnAttributes = True
6378  */
6379   memcpy(__pyx_v_self->_attributes, __pyx_v_p, __pyx_v_l);
6380
6381   /* "TabProxies.pyx":479
6382  *         memcpy( self._attributes, p, l )
6383  * 
6384  *         self.hasOwnAttributes = True             # <<<<<<<<<<<<<<
6385  *         self.is_modified = True
6386  * 
6387  */
6388   __pyx_v_self->hasOwnAttributes = 1;
6389
6390   /* "TabProxies.pyx":480
6391  * 
6392  *         self.hasOwnAttributes = True
6393  *         self.is_modified = True             # <<<<<<<<<<<<<<
6394  * 
6395  *     def __str__(self):
6396  */
6397   __pyx_v_self->__pyx_base.is_modified = 1;
6398
6399   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6400   goto __pyx_L0;
6401   __pyx_L1_error:;
6402   __Pyx_XDECREF(__pyx_t_1);
6403   __Pyx_XDECREF(__pyx_t_2);
6404   __Pyx_XDECREF(__pyx_t_5);
6405   __Pyx_XDECREF(__pyx_t_6);
6406   __Pyx_XDECREF(__pyx_t_7);
6407   __Pyx_AddTraceback("TabProxies.GTFProxy.fromDict", __pyx_clineno, __pyx_lineno, __pyx_filename);
6408   __pyx_r = NULL;
6409   __pyx_L0:;
6410   __Pyx_XDECREF(__pyx_v_aa);
6411   __Pyx_XDECREF(__pyx_v_k);
6412   __Pyx_XDECREF(__pyx_v_v);
6413   __Pyx_XDECREF(__pyx_v_a);
6414   __Pyx_XGIVEREF(__pyx_r);
6415   __Pyx_RefNannyFinishContext();
6416   return __pyx_r;
6417 }
6418
6419 /* Python wrapper */
6420 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_9__str__(PyObject *__pyx_v_self); /*proto*/
6421 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_9__str__(PyObject *__pyx_v_self) {
6422   PyObject *__pyx_r = 0;
6423   __Pyx_RefNannyDeclarations
6424   __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
6425   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_8__str__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
6426   __Pyx_RefNannyFinishContext();
6427   return __pyx_r;
6428 }
6429
6430 /* "TabProxies.pyx":482
6431  *         self.is_modified = True
6432  * 
6433  *     def __str__(self):             # <<<<<<<<<<<<<<
6434  *         cdef char * cpy
6435  *         cdef int x
6436  */
6437
6438 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_8__str__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
6439   PyObject *__pyx_r = NULL;
6440   __Pyx_RefNannyDeclarations
6441   PyObject *__pyx_t_1 = NULL;
6442   PyObject *__pyx_t_2 = NULL;
6443   PyObject *__pyx_t_3 = NULL;
6444   PyObject *__pyx_t_4 = NULL;
6445   PyObject *__pyx_t_5 = NULL;
6446   PyObject *__pyx_t_6 = NULL;
6447   PyObject *__pyx_t_7 = NULL;
6448   PyObject *__pyx_t_8 = NULL;
6449   PyObject *__pyx_t_9 = NULL;
6450   PyObject *__pyx_t_10 = NULL;
6451   PyObject *__pyx_t_11 = NULL;
6452   int __pyx_lineno = 0;
6453   const char *__pyx_filename = NULL;
6454   int __pyx_clineno = 0;
6455   __Pyx_RefNannySetupContext("__str__", 0);
6456
6457   /* "TabProxies.pyx":486
6458  *         cdef int x
6459  * 
6460  *         if self.is_modified:             # <<<<<<<<<<<<<<
6461  *             return "\t".join(
6462  *                 (self.contig,
6463  */
6464   if (__pyx_v_self->__pyx_base.is_modified) {
6465
6466     /* "TabProxies.pyx":487
6467  * 
6468  *         if self.is_modified:
6469  *             return "\t".join(             # <<<<<<<<<<<<<<
6470  *                 (self.contig,
6471  *                  self.source,
6472  */
6473     __Pyx_XDECREF(__pyx_r);
6474     __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_18), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6475     __Pyx_GOTREF(__pyx_t_1);
6476
6477     /* "TabProxies.pyx":488
6478  *         if self.is_modified:
6479  *             return "\t".join(
6480  *                 (self.contig,             # <<<<<<<<<<<<<<
6481  *                  self.source,
6482  *                  self.feature,
6483  */
6484     __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__contig); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6485     __Pyx_GOTREF(__pyx_t_2);
6486
6487     /* "TabProxies.pyx":489
6488  *             return "\t".join(
6489  *                 (self.contig,
6490  *                  self.source,             # <<<<<<<<<<<<<<
6491  *                  self.feature,
6492  *                  str(self.start+1),
6493  */
6494     __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6495     __Pyx_GOTREF(__pyx_t_3);
6496
6497     /* "TabProxies.pyx":490
6498  *                 (self.contig,
6499  *                  self.source,
6500  *                  self.feature,             # <<<<<<<<<<<<<<
6501  *                  str(self.start+1),
6502  *                  str(self.end),
6503  */
6504     __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__feature); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6505     __Pyx_GOTREF(__pyx_t_4);
6506
6507     /* "TabProxies.pyx":491
6508  *                  self.source,
6509  *                  self.feature,
6510  *                  str(self.start+1),             # <<<<<<<<<<<<<<
6511  *                  str(self.end),
6512  *                  toDot(self.score),
6513  */
6514     __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__start); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6515     __Pyx_GOTREF(__pyx_t_5);
6516     __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6517     __Pyx_GOTREF(__pyx_t_6);
6518     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6519     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6520     __Pyx_GOTREF(__pyx_t_5);
6521     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
6522     __Pyx_GIVEREF(__pyx_t_6);
6523     __pyx_t_6 = 0;
6524     __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6525     __Pyx_GOTREF(__pyx_t_6);
6526     __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
6527
6528     /* "TabProxies.pyx":492
6529  *                  self.feature,
6530  *                  str(self.start+1),
6531  *                  str(self.end),             # <<<<<<<<<<<<<<
6532  *                  toDot(self.score),
6533  *                  self.strand,
6534  */
6535     __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__end); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6536     __Pyx_GOTREF(__pyx_t_5);
6537     __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6538     __Pyx_GOTREF(__pyx_t_7);
6539     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
6540     __Pyx_GIVEREF(__pyx_t_5);
6541     __pyx_t_5 = 0;
6542     __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6543     __Pyx_GOTREF(__pyx_t_5);
6544     __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
6545
6546     /* "TabProxies.pyx":493
6547  *                  str(self.start+1),
6548  *                  str(self.end),
6549  *                  toDot(self.score),             # <<<<<<<<<<<<<<
6550  *                  self.strand,
6551  *                  self.frame,
6552  */
6553     __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__toDot); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6554     __Pyx_GOTREF(__pyx_t_7);
6555     __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__score); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6556     __Pyx_GOTREF(__pyx_t_8);
6557     __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6558     __Pyx_GOTREF(__pyx_t_9);
6559     PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
6560     __Pyx_GIVEREF(__pyx_t_8);
6561     __pyx_t_8 = 0;
6562     __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6563     __Pyx_GOTREF(__pyx_t_8);
6564     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6565     __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
6566
6567     /* "TabProxies.pyx":494
6568  *                  str(self.end),
6569  *                  toDot(self.score),
6570  *                  self.strand,             # <<<<<<<<<<<<<<
6571  *                  self.frame,
6572  *                  self.attributes ) )
6573  */
6574     __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__strand); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6575     __Pyx_GOTREF(__pyx_t_9);
6576
6577     /* "TabProxies.pyx":495
6578  *                  toDot(self.score),
6579  *                  self.strand,
6580  *                  self.frame,             # <<<<<<<<<<<<<<
6581  *                  self.attributes ) )
6582  *         else:
6583  */
6584     __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__frame); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6585     __Pyx_GOTREF(__pyx_t_7);
6586
6587     /* "TabProxies.pyx":496
6588  *                  self.strand,
6589  *                  self.frame,
6590  *                  self.attributes ) )             # <<<<<<<<<<<<<<
6591  *         else:
6592  *             return TupleProxy.__str__(self)
6593  */
6594     __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__attributes); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6595     __Pyx_GOTREF(__pyx_t_10);
6596     __pyx_t_11 = PyTuple_New(9); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6597     __Pyx_GOTREF(__pyx_t_11);
6598     PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2);
6599     __Pyx_GIVEREF(__pyx_t_2);
6600     PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_3);
6601     __Pyx_GIVEREF(__pyx_t_3);
6602     PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_4);
6603     __Pyx_GIVEREF(__pyx_t_4);
6604     PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_6);
6605     __Pyx_GIVEREF(__pyx_t_6);
6606     PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_t_5);
6607     __Pyx_GIVEREF(__pyx_t_5);
6608     PyTuple_SET_ITEM(__pyx_t_11, 5, __pyx_t_8);
6609     __Pyx_GIVEREF(__pyx_t_8);
6610     PyTuple_SET_ITEM(__pyx_t_11, 6, __pyx_t_9);
6611     __Pyx_GIVEREF(__pyx_t_9);
6612     PyTuple_SET_ITEM(__pyx_t_11, 7, __pyx_t_7);
6613     __Pyx_GIVEREF(__pyx_t_7);
6614     PyTuple_SET_ITEM(__pyx_t_11, 8, __pyx_t_10);
6615     __Pyx_GIVEREF(__pyx_t_10);
6616     __pyx_t_2 = 0;
6617     __pyx_t_3 = 0;
6618     __pyx_t_4 = 0;
6619     __pyx_t_6 = 0;
6620     __pyx_t_5 = 0;
6621     __pyx_t_8 = 0;
6622     __pyx_t_9 = 0;
6623     __pyx_t_7 = 0;
6624     __pyx_t_10 = 0;
6625     __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6626     __Pyx_GOTREF(__pyx_t_10);
6627     PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_11));
6628     __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
6629     __pyx_t_11 = 0;
6630     __pyx_t_11 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6631     __Pyx_GOTREF(__pyx_t_11);
6632     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6633     __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
6634     __pyx_r = __pyx_t_11;
6635     __pyx_t_11 = 0;
6636     goto __pyx_L0;
6637     goto __pyx_L3;
6638   }
6639   /*else*/ {
6640
6641     /* "TabProxies.pyx":498
6642  *                  self.attributes ) )
6643  *         else:
6644  *             return TupleProxy.__str__(self)             # <<<<<<<<<<<<<<
6645  * 
6646  *     def invert( self, int lcontig ):
6647  */
6648     __Pyx_XDECREF(__pyx_r);
6649     __pyx_t_11 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_10TabProxies_TupleProxy)), __pyx_n_s____str__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6650     __Pyx_GOTREF(__pyx_t_11);
6651     __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6652     __Pyx_GOTREF(__pyx_t_10);
6653     __Pyx_INCREF(((PyObject *)__pyx_v_self));
6654     PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_self));
6655     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
6656     __pyx_t_1 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6657     __Pyx_GOTREF(__pyx_t_1);
6658     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
6659     __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
6660     __pyx_r = __pyx_t_1;
6661     __pyx_t_1 = 0;
6662     goto __pyx_L0;
6663   }
6664   __pyx_L3:;
6665
6666   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6667   goto __pyx_L0;
6668   __pyx_L1_error:;
6669   __Pyx_XDECREF(__pyx_t_1);
6670   __Pyx_XDECREF(__pyx_t_2);
6671   __Pyx_XDECREF(__pyx_t_3);
6672   __Pyx_XDECREF(__pyx_t_4);
6673   __Pyx_XDECREF(__pyx_t_5);
6674   __Pyx_XDECREF(__pyx_t_6);
6675   __Pyx_XDECREF(__pyx_t_7);
6676   __Pyx_XDECREF(__pyx_t_8);
6677   __Pyx_XDECREF(__pyx_t_9);
6678   __Pyx_XDECREF(__pyx_t_10);
6679   __Pyx_XDECREF(__pyx_t_11);
6680   __Pyx_AddTraceback("TabProxies.GTFProxy.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6681   __pyx_r = NULL;
6682   __pyx_L0:;
6683   __Pyx_XGIVEREF(__pyx_r);
6684   __Pyx_RefNannyFinishContext();
6685   return __pyx_r;
6686 }
6687
6688 /* Python wrapper */
6689 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_11invert(PyObject *__pyx_v_self, PyObject *__pyx_arg_lcontig); /*proto*/
6690 static char __pyx_doc_10TabProxies_8GTFProxy_10invert[] = "invert coordinates to negative strand coordinates\n        \n        This method will only act if the feature is on the\n        negative strand.";
6691 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_11invert(PyObject *__pyx_v_self, PyObject *__pyx_arg_lcontig) {
6692   int __pyx_v_lcontig;
6693   PyObject *__pyx_r = 0;
6694   __Pyx_RefNannyDeclarations
6695   __Pyx_RefNannySetupContext("invert (wrapper)", 0);
6696   assert(__pyx_arg_lcontig); {
6697     __pyx_v_lcontig = __Pyx_PyInt_AsInt(__pyx_arg_lcontig); if (unlikely((__pyx_v_lcontig == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6698   }
6699   goto __pyx_L4_argument_unpacking_done;
6700   __pyx_L3_error:;
6701   __Pyx_AddTraceback("TabProxies.GTFProxy.invert", __pyx_clineno, __pyx_lineno, __pyx_filename);
6702   __Pyx_RefNannyFinishContext();
6703   return NULL;
6704   __pyx_L4_argument_unpacking_done:;
6705   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_10invert(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((int)__pyx_v_lcontig));
6706   __Pyx_RefNannyFinishContext();
6707   return __pyx_r;
6708 }
6709
6710 /* "TabProxies.pyx":500
6711  *             return TupleProxy.__str__(self)
6712  * 
6713  *     def invert( self, int lcontig ):             # <<<<<<<<<<<<<<
6714  *         '''invert coordinates to negative strand coordinates
6715  * 
6716  */
6717
6718 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_10invert(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, int __pyx_v_lcontig) {
6719   PyObject *__pyx_v_start = NULL;
6720   PyObject *__pyx_v_end = NULL;
6721   PyObject *__pyx_r = NULL;
6722   __Pyx_RefNannyDeclarations
6723   PyObject *__pyx_t_1 = NULL;
6724   PyObject *__pyx_t_2 = NULL;
6725   int __pyx_t_3;
6726   PyObject *__pyx_t_4 = NULL;
6727   PyObject *__pyx_t_5 = NULL;
6728   int __pyx_lineno = 0;
6729   const char *__pyx_filename = NULL;
6730   int __pyx_clineno = 0;
6731   __Pyx_RefNannySetupContext("invert", 0);
6732
6733   /* "TabProxies.pyx":506
6734  *         negative strand.'''
6735  * 
6736  *         if self.strand[0] == '-':             # <<<<<<<<<<<<<<
6737  *             start = min(self.start, self.end)
6738  *             end = max(self.start, self.end)
6739  */
6740   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__strand); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6741   __Pyx_GOTREF(__pyx_t_1);
6742   __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6743   __Pyx_GOTREF(__pyx_t_2);
6744   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6745   __pyx_t_3 = __Pyx_PyString_Equals(__pyx_t_2, ((PyObject *)__pyx_kp_s_41), Py_EQ); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6746   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6747   if (__pyx_t_3) {
6748
6749     /* "TabProxies.pyx":507
6750  * 
6751  *         if self.strand[0] == '-':
6752  *             start = min(self.start, self.end)             # <<<<<<<<<<<<<<
6753  *             end = max(self.start, self.end)
6754  *             self.start, self.end = lcontig - end, lcontig - start
6755  */
6756     __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__end); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6757     __Pyx_GOTREF(__pyx_t_2);
6758     __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6759     __Pyx_GOTREF(__pyx_t_1);
6760     __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6761     __Pyx_GOTREF(__pyx_t_5);
6762     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6763     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6764     if (__pyx_t_3) {
6765       __Pyx_INCREF(__pyx_t_2);
6766       __pyx_t_4 = __pyx_t_2;
6767     } else {
6768       __Pyx_INCREF(__pyx_t_1);
6769       __pyx_t_4 = __pyx_t_1;
6770     }
6771     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6772     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6773     __Pyx_INCREF(__pyx_t_4);
6774     __pyx_v_start = __pyx_t_4;
6775     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6776
6777     /* "TabProxies.pyx":508
6778  *         if self.strand[0] == '-':
6779  *             start = min(self.start, self.end)
6780  *             end = max(self.start, self.end)             # <<<<<<<<<<<<<<
6781  *             self.start, self.end = lcontig - end, lcontig - start
6782  * 
6783  */
6784     __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__end); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6785     __Pyx_GOTREF(__pyx_t_4);
6786     __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__start); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6787     __Pyx_GOTREF(__pyx_t_2);
6788     __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_GT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6789     __Pyx_GOTREF(__pyx_t_5);
6790     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6791     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6792     if (__pyx_t_3) {
6793       __Pyx_INCREF(__pyx_t_4);
6794       __pyx_t_1 = __pyx_t_4;
6795     } else {
6796       __Pyx_INCREF(__pyx_t_2);
6797       __pyx_t_1 = __pyx_t_2;
6798     }
6799     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6800     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6801     __Pyx_INCREF(__pyx_t_1);
6802     __pyx_v_end = __pyx_t_1;
6803     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6804
6805     /* "TabProxies.pyx":509
6806  *             start = min(self.start, self.end)
6807  *             end = max(self.start, self.end)
6808  *             self.start, self.end = lcontig - end, lcontig - start             # <<<<<<<<<<<<<<
6809  * 
6810  *     def keys( self ):
6811  */
6812     __pyx_t_1 = PyInt_FromLong(__pyx_v_lcontig); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6813     __Pyx_GOTREF(__pyx_t_1);
6814     __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_v_end); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6815     __Pyx_GOTREF(__pyx_t_4);
6816     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6817     __pyx_t_1 = PyInt_FromLong(__pyx_v_lcontig); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6818     __Pyx_GOTREF(__pyx_t_1);
6819     __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_start); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6820     __Pyx_GOTREF(__pyx_t_2);
6821     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6822     if (PyObject_SetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__start, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6823     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6824     if (PyObject_SetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__end, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6825     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6826     goto __pyx_L3;
6827   }
6828   __pyx_L3:;
6829
6830   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6831   goto __pyx_L0;
6832   __pyx_L1_error:;
6833   __Pyx_XDECREF(__pyx_t_1);
6834   __Pyx_XDECREF(__pyx_t_2);
6835   __Pyx_XDECREF(__pyx_t_4);
6836   __Pyx_XDECREF(__pyx_t_5);
6837   __Pyx_AddTraceback("TabProxies.GTFProxy.invert", __pyx_clineno, __pyx_lineno, __pyx_filename);
6838   __pyx_r = NULL;
6839   __pyx_L0:;
6840   __Pyx_XDECREF(__pyx_v_start);
6841   __Pyx_XDECREF(__pyx_v_end);
6842   __Pyx_XGIVEREF(__pyx_r);
6843   __Pyx_RefNannyFinishContext();
6844   return __pyx_r;
6845 }
6846
6847 /* Python wrapper */
6848 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_13keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
6849 static char __pyx_doc_10TabProxies_8GTFProxy_12keys[] = "return a list of attributes defined in this entry.";
6850 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_13keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6851   PyObject *__pyx_r = 0;
6852   __Pyx_RefNannyDeclarations
6853   __Pyx_RefNannySetupContext("keys (wrapper)", 0);
6854   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_12keys(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self));
6855   __Pyx_RefNannyFinishContext();
6856   return __pyx_r;
6857 }
6858
6859 /* "TabProxies.pyx":511
6860  *             self.start, self.end = lcontig - end, lcontig - start
6861  * 
6862  *     def keys( self ):             # <<<<<<<<<<<<<<
6863  *         '''return a list of attributes defined in this entry.'''
6864  *         r = self.attributes
6865  */
6866
6867 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_12keys(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self) {
6868   PyObject *__pyx_v_r = NULL;
6869   PyObject *__pyx_v_x = NULL;
6870   PyObject *__pyx_r = NULL;
6871   __Pyx_RefNannyDeclarations
6872   PyObject *__pyx_t_1 = NULL;
6873   PyObject *__pyx_t_2 = NULL;
6874   PyObject *__pyx_t_3 = NULL;
6875   Py_ssize_t __pyx_t_4;
6876   PyObject *(*__pyx_t_5)(PyObject *);
6877   PyObject *__pyx_t_6 = NULL;
6878   int __pyx_t_7;
6879   int __pyx_lineno = 0;
6880   const char *__pyx_filename = NULL;
6881   int __pyx_clineno = 0;
6882   __Pyx_RefNannySetupContext("keys", 0);
6883
6884   /* "TabProxies.pyx":513
6885  *     def keys( self ):
6886  *         '''return a list of attributes defined in this entry.'''
6887  *         r = self.attributes             # <<<<<<<<<<<<<<
6888  *         return [ x.strip().split(" ")[0] for x in r.split(";") if x.strip() != '' ]
6889  * 
6890  */
6891   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__attributes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6892   __Pyx_GOTREF(__pyx_t_1);
6893   __pyx_v_r = __pyx_t_1;
6894   __pyx_t_1 = 0;
6895
6896   /* "TabProxies.pyx":514
6897  *         '''return a list of attributes defined in this entry.'''
6898  *         r = self.attributes
6899  *         return [ x.strip().split(" ")[0] for x in r.split(";") if x.strip() != '' ]             # <<<<<<<<<<<<<<
6900  * 
6901  *     def __getitem__(self, key):
6902  */
6903   __Pyx_XDECREF(__pyx_r);
6904   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6905   __Pyx_GOTREF(__pyx_t_1);
6906   __pyx_t_2 = PyObject_GetAttr(__pyx_v_r, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6907   __Pyx_GOTREF(__pyx_t_2);
6908   __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_42), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6909   __Pyx_GOTREF(__pyx_t_3);
6910   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6911   if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
6912     __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
6913     __pyx_t_5 = NULL;
6914   } else {
6915     __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6916     __Pyx_GOTREF(__pyx_t_2);
6917     __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
6918   }
6919   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6920   for (;;) {
6921     if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
6922       if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
6923       __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++;
6924     } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
6925       if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
6926       __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++;
6927     } else {
6928       __pyx_t_3 = __pyx_t_5(__pyx_t_2);
6929       if (unlikely(!__pyx_t_3)) {
6930         if (PyErr_Occurred()) {
6931           if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
6932           else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6933         }
6934         break;
6935       }
6936       __Pyx_GOTREF(__pyx_t_3);
6937     }
6938     __Pyx_XDECREF(__pyx_v_x);
6939     __pyx_v_x = __pyx_t_3;
6940     __pyx_t_3 = 0;
6941     __pyx_t_3 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__strip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6942     __Pyx_GOTREF(__pyx_t_3);
6943     __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6944     __Pyx_GOTREF(__pyx_t_6);
6945     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6946     __pyx_t_7 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_kp_s_6), Py_NE); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6947     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6948     if (__pyx_t_7) {
6949       __pyx_t_6 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__strip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6950       __Pyx_GOTREF(__pyx_t_6);
6951       __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6952       __Pyx_GOTREF(__pyx_t_3);
6953       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6954       __pyx_t_6 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6955       __Pyx_GOTREF(__pyx_t_6);
6956       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6957       __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_43), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6958       __Pyx_GOTREF(__pyx_t_3);
6959       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6960       __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6961       __Pyx_GOTREF(__pyx_t_6);
6962       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6963       if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6964       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6965       goto __pyx_L5;
6966     }
6967     __pyx_L5:;
6968   }
6969   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6970   __Pyx_INCREF(((PyObject *)__pyx_t_1));
6971   __pyx_r = ((PyObject *)__pyx_t_1);
6972   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
6973   goto __pyx_L0;
6974
6975   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6976   goto __pyx_L0;
6977   __pyx_L1_error:;
6978   __Pyx_XDECREF(__pyx_t_1);
6979   __Pyx_XDECREF(__pyx_t_2);
6980   __Pyx_XDECREF(__pyx_t_3);
6981   __Pyx_XDECREF(__pyx_t_6);
6982   __Pyx_AddTraceback("TabProxies.GTFProxy.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
6983   __pyx_r = NULL;
6984   __pyx_L0:;
6985   __Pyx_XDECREF(__pyx_v_r);
6986   __Pyx_XDECREF(__pyx_v_x);
6987   __Pyx_XGIVEREF(__pyx_r);
6988   __Pyx_RefNannyFinishContext();
6989   return __pyx_r;
6990 }
6991
6992 /* Python wrapper */
6993 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
6994 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
6995   PyObject *__pyx_r = 0;
6996   __Pyx_RefNannyDeclarations
6997   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
6998   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_14__getitem__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key));
6999   __Pyx_RefNannyFinishContext();
7000   return __pyx_r;
7001 }
7002
7003 /* "TabProxies.pyx":516
7004  *         return [ x.strip().split(" ")[0] for x in r.split(";") if x.strip() != '' ]
7005  * 
7006  *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
7007  *         return self.__getattr__( key )
7008  * 
7009  */
7010
7011 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_14__getitem__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_key) {
7012   PyObject *__pyx_r = NULL;
7013   __Pyx_RefNannyDeclarations
7014   PyObject *__pyx_t_1 = NULL;
7015   PyObject *__pyx_t_2 = NULL;
7016   PyObject *__pyx_t_3 = NULL;
7017   int __pyx_lineno = 0;
7018   const char *__pyx_filename = NULL;
7019   int __pyx_clineno = 0;
7020   __Pyx_RefNannySetupContext("__getitem__", 0);
7021
7022   /* "TabProxies.pyx":517
7023  * 
7024  *     def __getitem__(self, key):
7025  *         return self.__getattr__( key )             # <<<<<<<<<<<<<<
7026  * 
7027  *     def __getattr__(self, item ):
7028  */
7029   __Pyx_XDECREF(__pyx_r);
7030   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____getattr__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7031   __Pyx_GOTREF(__pyx_t_1);
7032   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7033   __Pyx_GOTREF(__pyx_t_2);
7034   __Pyx_INCREF(__pyx_v_key);
7035   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
7036   __Pyx_GIVEREF(__pyx_v_key);
7037   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7038   __Pyx_GOTREF(__pyx_t_3);
7039   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7040   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
7041   __pyx_r = __pyx_t_3;
7042   __pyx_t_3 = 0;
7043   goto __pyx_L0;
7044
7045   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7046   goto __pyx_L0;
7047   __pyx_L1_error:;
7048   __Pyx_XDECREF(__pyx_t_1);
7049   __Pyx_XDECREF(__pyx_t_2);
7050   __Pyx_XDECREF(__pyx_t_3);
7051   __Pyx_AddTraceback("TabProxies.GTFProxy.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7052   __pyx_r = NULL;
7053   __pyx_L0:;
7054   __Pyx_XGIVEREF(__pyx_r);
7055   __Pyx_RefNannyFinishContext();
7056   return __pyx_r;
7057 }
7058
7059 /* Python wrapper */
7060 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_17__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
7061 static char __pyx_doc_10TabProxies_8GTFProxy_16__getattr__[] = "Generic lookup of attribute from GFF/GTF attributes \n        Only called if there *isn't* an attribute with this name\n        ";
7062 struct wrapperbase __pyx_wrapperbase_10TabProxies_8GTFProxy_16__getattr__;
7063 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_17__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
7064   PyObject *__pyx_r = 0;
7065   __Pyx_RefNannyDeclarations
7066   __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
7067   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_16__getattr__(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_item));
7068   __Pyx_RefNannyFinishContext();
7069   return __pyx_r;
7070 }
7071
7072 /* "TabProxies.pyx":519
7073  *         return self.__getattr__( key )
7074  * 
7075  *     def __getattr__(self, item ):             # <<<<<<<<<<<<<<
7076  *         """Generic lookup of attribute from GFF/GTF attributes
7077  *         Only called if there *isn't* an attribute with this name
7078  */
7079
7080 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_16__getattr__(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_item) {
7081   char *__pyx_v_start;
7082   char *__pyx_v_query;
7083   char *__pyx_v_end;
7084   int __pyx_v_l;
7085   char *__pyx_v_attributes;
7086   PyObject *__pyx_v_r = NULL;
7087   PyObject *__pyx_v_result = NULL;
7088   PyObject *__pyx_r = NULL;
7089   __Pyx_RefNannyDeclarations
7090   PyObject *__pyx_t_1 = NULL;
7091   char *__pyx_t_2;
7092   int __pyx_t_3;
7093   PyObject *__pyx_t_4 = NULL;
7094   int __pyx_t_5;
7095   int __pyx_t_6;
7096   int __pyx_lineno = 0;
7097   const char *__pyx_filename = NULL;
7098   int __pyx_clineno = 0;
7099   __Pyx_RefNannySetupContext("__getattr__", 0);
7100
7101   /* "TabProxies.pyx":542
7102  *         # disappeard after accessing the C data structures
7103  *         # directly and so did the bug.
7104  *         cdef char * attributes = self.getAttributes()             # <<<<<<<<<<<<<<
7105  * 
7106  *         r = _force_bytes(item)
7107  */
7108   __pyx_v_attributes = ((struct __pyx_vtabstruct_10TabProxies_GTFProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->getAttributes(__pyx_v_self);
7109
7110   /* "TabProxies.pyx":544
7111  *         cdef char * attributes = self.getAttributes()
7112  * 
7113  *         r = _force_bytes(item)             # <<<<<<<<<<<<<<
7114  *         query = r
7115  *         start = strstr( attributes, query)
7116  */
7117   __pyx_t_1 = ((PyObject *)__pyx_f_10TabProxies__force_bytes(__pyx_v_item)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7118   __Pyx_GOTREF(__pyx_t_1);
7119   __pyx_v_r = ((PyObject*)__pyx_t_1);
7120   __pyx_t_1 = 0;
7121
7122   /* "TabProxies.pyx":545
7123  * 
7124  *         r = _force_bytes(item)
7125  *         query = r             # <<<<<<<<<<<<<<
7126  *         start = strstr( attributes, query)
7127  * 
7128  */
7129   __pyx_t_2 = PyBytes_AsString(((PyObject *)__pyx_v_r)); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7130   __pyx_v_query = __pyx_t_2;
7131
7132   /* "TabProxies.pyx":546
7133  *         r = _force_bytes(item)
7134  *         query = r
7135  *         start = strstr( attributes, query)             # <<<<<<<<<<<<<<
7136  * 
7137  *         if start == NULL:
7138  */
7139   __pyx_v_start = strstr(__pyx_v_attributes, __pyx_v_query);
7140
7141   /* "TabProxies.pyx":548
7142  *         start = strstr( attributes, query)
7143  * 
7144  *         if start == NULL:             # <<<<<<<<<<<<<<
7145  *             raise AttributeError("'GTFProxy' has no attribute '%s'" % item )
7146  * 
7147  */
7148   __pyx_t_3 = (__pyx_v_start == NULL);
7149   if (__pyx_t_3) {
7150
7151     /* "TabProxies.pyx":549
7152  * 
7153  *         if start == NULL:
7154  *             raise AttributeError("'GTFProxy' has no attribute '%s'" % item )             # <<<<<<<<<<<<<<
7155  * 
7156  *         start += strlen(query) + 1
7157  */
7158     __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_44), __pyx_v_item); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7159     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
7160     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7161     __Pyx_GOTREF(__pyx_t_4);
7162     PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1));
7163     __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
7164     __pyx_t_1 = 0;
7165     __pyx_t_1 = PyObject_Call(__pyx_builtin_AttributeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7166     __Pyx_GOTREF(__pyx_t_1);
7167     __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
7168     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
7169     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7170     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7171     goto __pyx_L3;
7172   }
7173   __pyx_L3:;
7174
7175   /* "TabProxies.pyx":551
7176  *             raise AttributeError("'GTFProxy' has no attribute '%s'" % item )
7177  * 
7178  *         start += strlen(query) + 1             # <<<<<<<<<<<<<<
7179  *         # skip gaps before
7180  *         while start[0] == ' ': start += 1
7181  */
7182   __pyx_v_start = (__pyx_v_start + (strlen(__pyx_v_query) + 1));
7183
7184   /* "TabProxies.pyx":553
7185  *         start += strlen(query) + 1
7186  *         # skip gaps before
7187  *         while start[0] == ' ': start += 1             # <<<<<<<<<<<<<<
7188  * 
7189  *         if start[0] == '"':
7190  */
7191   while (1) {
7192     __pyx_t_3 = ((__pyx_v_start[0]) == ' ');
7193     if (!__pyx_t_3) break;
7194     __pyx_v_start = (__pyx_v_start + 1);
7195   }
7196
7197   /* "TabProxies.pyx":555
7198  *         while start[0] == ' ': start += 1
7199  * 
7200  *         if start[0] == '"':             # <<<<<<<<<<<<<<
7201  *             start += 1
7202  *             end = start
7203  */
7204   __pyx_t_3 = ((__pyx_v_start[0]) == '"');
7205   if (__pyx_t_3) {
7206
7207     /* "TabProxies.pyx":556
7208  * 
7209  *         if start[0] == '"':
7210  *             start += 1             # <<<<<<<<<<<<<<
7211  *             end = start
7212  *             while end[0] != '\0' and end[0] != '"': end += 1
7213  */
7214     __pyx_v_start = (__pyx_v_start + 1);
7215
7216     /* "TabProxies.pyx":557
7217  *         if start[0] == '"':
7218  *             start += 1
7219  *             end = start             # <<<<<<<<<<<<<<
7220  *             while end[0] != '\0' and end[0] != '"': end += 1
7221  *             l = end - start
7222  */
7223     __pyx_v_end = __pyx_v_start;
7224
7225     /* "TabProxies.pyx":558
7226  *             start += 1
7227  *             end = start
7228  *             while end[0] != '\0' and end[0] != '"': end += 1             # <<<<<<<<<<<<<<
7229  *             l = end - start
7230  *             result = _force_str( PyBytes_FromStringAndSize( start, l ) )
7231  */
7232     while (1) {
7233       __pyx_t_3 = ((__pyx_v_end[0]) != '\x00');
7234       if (__pyx_t_3) {
7235         __pyx_t_5 = ((__pyx_v_end[0]) != '"');
7236         __pyx_t_6 = __pyx_t_5;
7237       } else {
7238         __pyx_t_6 = __pyx_t_3;
7239       }
7240       if (!__pyx_t_6) break;
7241       __pyx_v_end = (__pyx_v_end + 1);
7242     }
7243
7244     /* "TabProxies.pyx":559
7245  *             end = start
7246  *             while end[0] != '\0' and end[0] != '"': end += 1
7247  *             l = end - start             # <<<<<<<<<<<<<<
7248  *             result = _force_str( PyBytes_FromStringAndSize( start, l ) )
7249  *             return result
7250  */
7251     __pyx_v_l = (__pyx_v_end - __pyx_v_start);
7252
7253     /* "TabProxies.pyx":560
7254  *             while end[0] != '\0' and end[0] != '"': end += 1
7255  *             l = end - start
7256  *             result = _force_str( PyBytes_FromStringAndSize( start, l ) )             # <<<<<<<<<<<<<<
7257  *             return result
7258  *         else:
7259  */
7260     __pyx_t_1 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_start, __pyx_v_l)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7261     __Pyx_GOTREF(__pyx_t_1);
7262     __pyx_t_4 = __pyx_f_10TabProxies__force_str(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7263     __Pyx_GOTREF(__pyx_t_4);
7264     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7265     __pyx_v_result = __pyx_t_4;
7266     __pyx_t_4 = 0;
7267
7268     /* "TabProxies.pyx":561
7269  *             l = end - start
7270  *             result = _force_str( PyBytes_FromStringAndSize( start, l ) )
7271  *             return result             # <<<<<<<<<<<<<<
7272  *         else:
7273  *             return _force_str( start )
7274  */
7275     __Pyx_XDECREF(__pyx_r);
7276     __Pyx_INCREF(__pyx_v_result);
7277     __pyx_r = __pyx_v_result;
7278     goto __pyx_L0;
7279     goto __pyx_L6;
7280   }
7281   /*else*/ {
7282
7283     /* "TabProxies.pyx":563
7284  *             return result
7285  *         else:
7286  *             return _force_str( start )             # <<<<<<<<<<<<<<
7287  * 
7288  *     def setAttribute( self, name, value ):
7289  */
7290     __Pyx_XDECREF(__pyx_r);
7291     __pyx_t_4 = PyBytes_FromString(__pyx_v_start); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7292     __Pyx_GOTREF(((PyObject *)__pyx_t_4));
7293     __pyx_t_1 = __pyx_f_10TabProxies__force_str(((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7294     __Pyx_GOTREF(__pyx_t_1);
7295     __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
7296     __pyx_r = __pyx_t_1;
7297     __pyx_t_1 = 0;
7298     goto __pyx_L0;
7299   }
7300   __pyx_L6:;
7301
7302   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7303   goto __pyx_L0;
7304   __pyx_L1_error:;
7305   __Pyx_XDECREF(__pyx_t_1);
7306   __Pyx_XDECREF(__pyx_t_4);
7307   __Pyx_AddTraceback("TabProxies.GTFProxy.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7308   __pyx_r = NULL;
7309   __pyx_L0:;
7310   __Pyx_XDECREF(__pyx_v_r);
7311   __Pyx_XDECREF(__pyx_v_result);
7312   __Pyx_XGIVEREF(__pyx_r);
7313   __Pyx_RefNannyFinishContext();
7314   return __pyx_r;
7315 }
7316
7317 /* Python wrapper */
7318 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_19setAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7319 static char __pyx_doc_10TabProxies_8GTFProxy_18setAttribute[] = "convenience method to set an attribute.";
7320 static PyObject *__pyx_pw_10TabProxies_8GTFProxy_19setAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7321   PyObject *__pyx_v_name = 0;
7322   PyObject *__pyx_v_value = 0;
7323   static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__value,0};
7324   PyObject *__pyx_r = 0;
7325   __Pyx_RefNannyDeclarations
7326   __Pyx_RefNannySetupContext("setAttribute (wrapper)", 0);
7327   {
7328     PyObject* values[2] = {0,0};
7329     if (unlikely(__pyx_kwds)) {
7330       Py_ssize_t kw_args;
7331       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7332       switch (pos_args) {
7333         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7334         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7335         case  0: break;
7336         default: goto __pyx_L5_argtuple_error;
7337       }
7338       kw_args = PyDict_Size(__pyx_kwds);
7339       switch (pos_args) {
7340         case  0:
7341         values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
7342         if (likely(values[0])) kw_args--;
7343         else goto __pyx_L5_argtuple_error;
7344         case  1:
7345         values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
7346         if (likely(values[1])) kw_args--;
7347         else {
7348           __Pyx_RaiseArgtupleInvalid("setAttribute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7349         }
7350       }
7351       if (unlikely(kw_args > 0)) {
7352         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setAttribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7353       }
7354     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
7355       goto __pyx_L5_argtuple_error;
7356     } else {
7357       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7358       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7359     }
7360     __pyx_v_name = values[0];
7361     __pyx_v_value = values[1];
7362   }
7363   goto __pyx_L4_argument_unpacking_done;
7364   __pyx_L5_argtuple_error:;
7365   __Pyx_RaiseArgtupleInvalid("setAttribute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7366   __pyx_L3_error:;
7367   __Pyx_AddTraceback("TabProxies.GTFProxy.setAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
7368   __Pyx_RefNannyFinishContext();
7369   return NULL;
7370   __pyx_L4_argument_unpacking_done:;
7371   __pyx_r = __pyx_pf_10TabProxies_8GTFProxy_18setAttribute(((struct __pyx_obj_10TabProxies_GTFProxy *)__pyx_v_self), __pyx_v_name, __pyx_v_value);
7372   __Pyx_RefNannyFinishContext();
7373   return __pyx_r;
7374 }
7375
7376 /* "TabProxies.pyx":565
7377  *             return _force_str( start )
7378  * 
7379  *     def setAttribute( self, name, value ):             # <<<<<<<<<<<<<<
7380  *         '''convenience method to set an attribute.'''
7381  *         r = self.asDict()
7382  */
7383
7384 static PyObject *__pyx_pf_10TabProxies_8GTFProxy_18setAttribute(struct __pyx_obj_10TabProxies_GTFProxy *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
7385   PyObject *__pyx_v_r = NULL;
7386   PyObject *__pyx_r = NULL;
7387   __Pyx_RefNannyDeclarations
7388   PyObject *__pyx_t_1 = NULL;
7389   PyObject *__pyx_t_2 = NULL;
7390   PyObject *__pyx_t_3 = NULL;
7391   int __pyx_lineno = 0;
7392   const char *__pyx_filename = NULL;
7393   int __pyx_clineno = 0;
7394   __Pyx_RefNannySetupContext("setAttribute", 0);
7395
7396   /* "TabProxies.pyx":567
7397  *     def setAttribute( self, name, value ):
7398  *         '''convenience method to set an attribute.'''
7399  *         r = self.asDict()             # <<<<<<<<<<<<<<
7400  *         r[name] = value
7401  *         self.fromDict( r )
7402  */
7403   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__asDict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7404   __Pyx_GOTREF(__pyx_t_1);
7405   __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7406   __Pyx_GOTREF(__pyx_t_2);
7407   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7408   __pyx_v_r = __pyx_t_2;
7409   __pyx_t_2 = 0;
7410
7411   /* "TabProxies.pyx":568
7412  *         '''convenience method to set an attribute.'''
7413  *         r = self.asDict()
7414  *         r[name] = value             # <<<<<<<<<<<<<<
7415  *         self.fromDict( r )
7416  * 
7417  */
7418   if (PyObject_SetItem(__pyx_v_r, __pyx_v_name, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7419
7420   /* "TabProxies.pyx":569
7421  *         r = self.asDict()
7422  *         r[name] = value
7423  *         self.fromDict( r )             # <<<<<<<<<<<<<<
7424  * 
7425  * cdef class NamedTupleProxy( TupleProxy ):
7426  */
7427   __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fromDict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7428   __Pyx_GOTREF(__pyx_t_2);
7429   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7430   __Pyx_GOTREF(__pyx_t_1);
7431   __Pyx_INCREF(__pyx_v_r);
7432   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_r);
7433   __Pyx_GIVEREF(__pyx_v_r);
7434   __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7435   __Pyx_GOTREF(__pyx_t_3);
7436   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7437   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
7438   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7439
7440   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7441   goto __pyx_L0;
7442   __pyx_L1_error:;
7443   __Pyx_XDECREF(__pyx_t_1);
7444   __Pyx_XDECREF(__pyx_t_2);
7445   __Pyx_XDECREF(__pyx_t_3);
7446   __Pyx_AddTraceback("TabProxies.GTFProxy.setAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
7447   __pyx_r = NULL;
7448   __pyx_L0:;
7449   __Pyx_XDECREF(__pyx_v_r);
7450   __Pyx_XGIVEREF(__pyx_r);
7451   __Pyx_RefNannyFinishContext();
7452   return __pyx_r;
7453 }
7454
7455 /* Python wrapper */
7456 static int __pyx_pw_10TabProxies_15NamedTupleProxy_1__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
7457 static char __pyx_doc_10TabProxies_15NamedTupleProxy___setattr__[] = "set attribute.";
7458 struct wrapperbase __pyx_wrapperbase_10TabProxies_15NamedTupleProxy___setattr__;
7459 static int __pyx_pw_10TabProxies_15NamedTupleProxy_1__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
7460   int __pyx_r;
7461   __Pyx_RefNannyDeclarations
7462   __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
7463   __pyx_r = __pyx_pf_10TabProxies_15NamedTupleProxy___setattr__(((struct __pyx_obj_10TabProxies_NamedTupleProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
7464   __Pyx_RefNannyFinishContext();
7465   return __pyx_r;
7466 }
7467
7468 /* "TabProxies.pyx":575
7469  *     map_key2field = {}
7470  * 
7471  *     def __setattr__(self, key, value ):             # <<<<<<<<<<<<<<
7472  *         '''set attribute.'''
7473  *         cdef int idx
7474  */
7475
7476 static int __pyx_pf_10TabProxies_15NamedTupleProxy___setattr__(struct __pyx_obj_10TabProxies_NamedTupleProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
7477   int __pyx_v_idx;
7478   CYTHON_UNUSED PyObject *__pyx_v_f = NULL;
7479   int __pyx_r;
7480   __Pyx_RefNannyDeclarations
7481   PyObject *__pyx_t_1 = NULL;
7482   PyObject *__pyx_t_2 = NULL;
7483   PyObject *__pyx_t_3 = NULL;
7484   PyObject *__pyx_t_4 = NULL;
7485   PyObject *(*__pyx_t_5)(PyObject *);
7486   int __pyx_t_6;
7487   int __pyx_t_7;
7488   int __pyx_lineno = 0;
7489   const char *__pyx_filename = NULL;
7490   int __pyx_clineno = 0;
7491   __Pyx_RefNannySetupContext("__setattr__", 0);
7492
7493   /* "TabProxies.pyx":578
7494  *         '''set attribute.'''
7495  *         cdef int idx
7496  *         idx, f = self.map_key2field[key]             # <<<<<<<<<<<<<<
7497  *         if self.nfields < idx:
7498  *             raise KeyError( "field %s not set" % key )
7499  */
7500   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__map_key2field); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7501   __Pyx_GOTREF(__pyx_t_1);
7502   __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_key); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7503   __Pyx_GOTREF(__pyx_t_2);
7504   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7505   if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
7506     PyObject* sequence = __pyx_t_2;
7507     if (likely(PyTuple_CheckExact(sequence))) {
7508       if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
7509         if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
7510         else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
7511         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7512       }
7513       __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
7514       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
7515     } else {
7516       if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
7517         if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
7518         else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
7519         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7520       }
7521       __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
7522       __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
7523     }
7524     __Pyx_INCREF(__pyx_t_1);
7525     __Pyx_INCREF(__pyx_t_3);
7526     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7527   } else {
7528     Py_ssize_t index = -1;
7529     __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7530     __Pyx_GOTREF(__pyx_t_4);
7531     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7532     __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
7533     index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
7534     __Pyx_GOTREF(__pyx_t_1);
7535     index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
7536     __Pyx_GOTREF(__pyx_t_3);
7537     if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7538     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7539     goto __pyx_L4_unpacking_done;
7540     __pyx_L3_unpacking_failed:;
7541     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7542     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
7543     if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
7544     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7545     __pyx_L4_unpacking_done:;
7546   }
7547   __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7548   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7549   __pyx_v_idx = __pyx_t_6;
7550   __pyx_v_f = __pyx_t_3;
7551   __pyx_t_3 = 0;
7552
7553   /* "TabProxies.pyx":579
7554  *         cdef int idx
7555  *         idx, f = self.map_key2field[key]
7556  *         if self.nfields < idx:             # <<<<<<<<<<<<<<
7557  *             raise KeyError( "field %s not set" % key )
7558  *         TupleProxy.__setitem__(self, idx, str(value) )
7559  */
7560   __pyx_t_7 = (__pyx_v_self->__pyx_base.nfields < __pyx_v_idx);
7561   if (__pyx_t_7) {
7562
7563     /* "TabProxies.pyx":580
7564  *         idx, f = self.map_key2field[key]
7565  *         if self.nfields < idx:
7566  *             raise KeyError( "field %s not set" % key )             # <<<<<<<<<<<<<<
7567  *         TupleProxy.__setitem__(self, idx, str(value) )
7568  * 
7569  */
7570     __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_45), __pyx_v_key); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7571     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
7572     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7573     __Pyx_GOTREF(__pyx_t_3);
7574     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
7575     __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
7576     __pyx_t_2 = 0;
7577     __pyx_t_2 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7578     __Pyx_GOTREF(__pyx_t_2);
7579     __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
7580     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
7581     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7582     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7583     goto __pyx_L5;
7584   }
7585   __pyx_L5:;
7586
7587   /* "TabProxies.pyx":581
7588  *         if self.nfields < idx:
7589  *             raise KeyError( "field %s not set" % key )
7590  *         TupleProxy.__setitem__(self, idx, str(value) )             # <<<<<<<<<<<<<<
7591  * 
7592  *     def __getattr__(self, key ):
7593  */
7594   __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_10TabProxies_TupleProxy)), __pyx_n_s____setitem__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7595   __Pyx_GOTREF(__pyx_t_2);
7596   __pyx_t_3 = PyInt_FromLong(__pyx_v_idx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7597   __Pyx_GOTREF(__pyx_t_3);
7598   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7599   __Pyx_GOTREF(__pyx_t_1);
7600   __Pyx_INCREF(__pyx_v_value);
7601   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_value);
7602   __Pyx_GIVEREF(__pyx_v_value);
7603   __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7604   __Pyx_GOTREF(__pyx_t_4);
7605   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
7606   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7607   __Pyx_GOTREF(__pyx_t_1);
7608   __Pyx_INCREF(((PyObject *)__pyx_v_self));
7609   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
7610   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
7611   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
7612   __Pyx_GIVEREF(__pyx_t_3);
7613   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
7614   __Pyx_GIVEREF(__pyx_t_4);
7615   __pyx_t_3 = 0;
7616   __pyx_t_4 = 0;
7617   __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7618   __Pyx_GOTREF(__pyx_t_4);
7619   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7620   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
7621   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7622
7623   __pyx_r = 0;
7624   goto __pyx_L0;
7625   __pyx_L1_error:;
7626   __Pyx_XDECREF(__pyx_t_1);
7627   __Pyx_XDECREF(__pyx_t_2);
7628   __Pyx_XDECREF(__pyx_t_3);
7629   __Pyx_XDECREF(__pyx_t_4);
7630   __Pyx_AddTraceback("TabProxies.NamedTupleProxy.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7631   __pyx_r = -1;
7632   __pyx_L0:;
7633   __Pyx_XDECREF(__pyx_v_f);
7634   __Pyx_RefNannyFinishContext();
7635   return __pyx_r;
7636 }
7637
7638 /* Python wrapper */
7639 static PyObject *__pyx_pw_10TabProxies_15NamedTupleProxy_3__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
7640 static PyObject *__pyx_pw_10TabProxies_15NamedTupleProxy_3__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
7641   PyObject *__pyx_r = 0;
7642   __Pyx_RefNannyDeclarations
7643   __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
7644   __pyx_r = __pyx_pf_10TabProxies_15NamedTupleProxy_2__getattr__(((struct __pyx_obj_10TabProxies_NamedTupleProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key));
7645   __Pyx_RefNannyFinishContext();
7646   return __pyx_r;
7647 }
7648
7649 /* "TabProxies.pyx":583
7650  *         TupleProxy.__setitem__(self, idx, str(value) )
7651  * 
7652  *     def __getattr__(self, key ):             # <<<<<<<<<<<<<<
7653  *         cdef int idx
7654  *         idx, f = self.map_key2field[key]
7655  */
7656
7657 static PyObject *__pyx_pf_10TabProxies_15NamedTupleProxy_2__getattr__(struct __pyx_obj_10TabProxies_NamedTupleProxy *__pyx_v_self, PyObject *__pyx_v_key) {
7658   int __pyx_v_idx;
7659   PyObject *__pyx_v_f = NULL;
7660   PyObject *__pyx_r = NULL;
7661   __Pyx_RefNannyDeclarations
7662   PyObject *__pyx_t_1 = NULL;
7663   PyObject *__pyx_t_2 = NULL;
7664   PyObject *__pyx_t_3 = NULL;
7665   PyObject *__pyx_t_4 = NULL;
7666   PyObject *(*__pyx_t_5)(PyObject *);
7667   int __pyx_t_6;
7668   int __pyx_t_7;
7669   int __pyx_lineno = 0;
7670   const char *__pyx_filename = NULL;
7671   int __pyx_clineno = 0;
7672   __Pyx_RefNannySetupContext("__getattr__", 0);
7673
7674   /* "TabProxies.pyx":585
7675  *     def __getattr__(self, key ):
7676  *         cdef int idx
7677  *         idx, f = self.map_key2field[key]             # <<<<<<<<<<<<<<
7678  *         if self.nfields < idx:
7679  *             raise KeyError( "field %s not set" % key )
7680  */
7681   __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__map_key2field); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7682   __Pyx_GOTREF(__pyx_t_1);
7683   __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_key); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7684   __Pyx_GOTREF(__pyx_t_2);
7685   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7686   if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
7687     PyObject* sequence = __pyx_t_2;
7688     if (likely(PyTuple_CheckExact(sequence))) {
7689       if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
7690         if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
7691         else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
7692         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7693       }
7694       __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
7695       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
7696     } else {
7697       if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
7698         if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
7699         else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
7700         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7701       }
7702       __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
7703       __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
7704     }
7705     __Pyx_INCREF(__pyx_t_1);
7706     __Pyx_INCREF(__pyx_t_3);
7707     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7708   } else {
7709     Py_ssize_t index = -1;
7710     __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7711     __Pyx_GOTREF(__pyx_t_4);
7712     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7713     __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
7714     index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
7715     __Pyx_GOTREF(__pyx_t_1);
7716     index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
7717     __Pyx_GOTREF(__pyx_t_3);
7718     if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7719     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7720     goto __pyx_L4_unpacking_done;
7721     __pyx_L3_unpacking_failed:;
7722     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7723     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
7724     if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
7725     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7726     __pyx_L4_unpacking_done:;
7727   }
7728   __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7729   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7730   __pyx_v_idx = __pyx_t_6;
7731   __pyx_v_f = __pyx_t_3;
7732   __pyx_t_3 = 0;
7733
7734   /* "TabProxies.pyx":586
7735  *         cdef int idx
7736  *         idx, f = self.map_key2field[key]
7737  *         if self.nfields < idx:             # <<<<<<<<<<<<<<
7738  *             raise KeyError( "field %s not set" % key )
7739  *         return f( self.fields[idx] )
7740  */
7741   __pyx_t_7 = (__pyx_v_self->__pyx_base.nfields < __pyx_v_idx);
7742   if (__pyx_t_7) {
7743
7744     /* "TabProxies.pyx":587
7745  *         idx, f = self.map_key2field[key]
7746  *         if self.nfields < idx:
7747  *             raise KeyError( "field %s not set" % key )             # <<<<<<<<<<<<<<
7748  *         return f( self.fields[idx] )
7749  * 
7750  */
7751     __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_45), __pyx_v_key); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7752     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
7753     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7754     __Pyx_GOTREF(__pyx_t_3);
7755     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
7756     __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
7757     __pyx_t_2 = 0;
7758     __pyx_t_2 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7759     __Pyx_GOTREF(__pyx_t_2);
7760     __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
7761     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
7762     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7763     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7764     goto __pyx_L5;
7765   }
7766   __pyx_L5:;
7767
7768   /* "TabProxies.pyx":588
7769  *         if self.nfields < idx:
7770  *             raise KeyError( "field %s not set" % key )
7771  *         return f( self.fields[idx] )             # <<<<<<<<<<<<<<
7772  * 
7773  * cdef class BedProxy( NamedTupleProxy ):
7774  */
7775   __Pyx_XDECREF(__pyx_r);
7776   __pyx_t_2 = PyBytes_FromString((__pyx_v_self->__pyx_base.fields[__pyx_v_idx])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7777   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
7778   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7779   __Pyx_GOTREF(__pyx_t_3);
7780   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
7781   __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
7782   __pyx_t_2 = 0;
7783   __pyx_t_2 = PyObject_Call(__pyx_v_f, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7784   __Pyx_GOTREF(__pyx_t_2);
7785   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
7786   __pyx_r = __pyx_t_2;
7787   __pyx_t_2 = 0;
7788   goto __pyx_L0;
7789
7790   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7791   goto __pyx_L0;
7792   __pyx_L1_error:;
7793   __Pyx_XDECREF(__pyx_t_1);
7794   __Pyx_XDECREF(__pyx_t_2);
7795   __Pyx_XDECREF(__pyx_t_3);
7796   __Pyx_XDECREF(__pyx_t_4);
7797   __Pyx_AddTraceback("TabProxies.NamedTupleProxy.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7798   __pyx_r = NULL;
7799   __pyx_L0:;
7800   __Pyx_XDECREF(__pyx_v_f);
7801   __Pyx_XGIVEREF(__pyx_r);
7802   __Pyx_RefNannyFinishContext();
7803   return __pyx_r;
7804 }
7805
7806 /* "TabProxies.pyx":609
7807  *         'blockStarts': (11, bytes), }
7808  * 
7809  *     cdef int getMaxFields( self, size_t nbytes ):             # <<<<<<<<<<<<<<
7810  *         '''return max number of fields.'''
7811  *         return 12
7812  */
7813
7814 static int __pyx_f_10TabProxies_8BedProxy_getMaxFields(CYTHON_UNUSED struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self, CYTHON_UNUSED size_t __pyx_v_nbytes) {
7815   int __pyx_r;
7816   __Pyx_RefNannyDeclarations
7817   __Pyx_RefNannySetupContext("getMaxFields", 0);
7818
7819   /* "TabProxies.pyx":611
7820  *     cdef int getMaxFields( self, size_t nbytes ):
7821  *         '''return max number of fields.'''
7822  *         return 12             # <<<<<<<<<<<<<<
7823  * 
7824  *     cdef update( self, char * buffer, size_t nbytes ):
7825  */
7826   __pyx_r = 12;
7827   goto __pyx_L0;
7828
7829   __pyx_r = 0;
7830   __pyx_L0:;
7831   __Pyx_RefNannyFinishContext();
7832   return __pyx_r;
7833 }
7834
7835 /* "TabProxies.pyx":613
7836  *         return 12
7837  * 
7838  *     cdef update( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
7839  *         '''update internal data.
7840  * 
7841  */
7842
7843 static PyObject *__pyx_f_10TabProxies_8BedProxy_update(struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
7844   PyObject *__pyx_r = NULL;
7845   __Pyx_RefNannyDeclarations
7846   PyObject *__pyx_t_1 = NULL;
7847   int __pyx_t_2;
7848   int __pyx_lineno = 0;
7849   const char *__pyx_filename = NULL;
7850   int __pyx_clineno = 0;
7851   __Pyx_RefNannySetupContext("update", 0);
7852
7853   /* "TabProxies.pyx":618
7854  *         nbytes does not include the terminal '\0'.
7855  *         '''
7856  *         TupleProxy.update( self, buffer, nbytes )             # <<<<<<<<<<<<<<
7857  * 
7858  *         if self.nfields < 3:
7859  */
7860   __pyx_t_1 = __pyx_vtabptr_10TabProxies_TupleProxy->update(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), __pyx_v_buffer, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7861   __Pyx_GOTREF(__pyx_t_1);
7862   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7863
7864   /* "TabProxies.pyx":620
7865  *         TupleProxy.update( self, buffer, nbytes )
7866  * 
7867  *         if self.nfields < 3:             # <<<<<<<<<<<<<<
7868  *             raise ValueError( "bed format requires at least three columns" )
7869  * 
7870  */
7871   __pyx_t_2 = (__pyx_v_self->__pyx_base.__pyx_base.nfields < 3);
7872   if (__pyx_t_2) {
7873
7874     /* "TabProxies.pyx":621
7875  * 
7876  *         if self.nfields < 3:
7877  *             raise ValueError( "bed format requires at least three columns" )             # <<<<<<<<<<<<<<
7878  * 
7879  *         # determines bed format
7880  */
7881     __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_47), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7882     __Pyx_GOTREF(__pyx_t_1);
7883     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
7884     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7885     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7886     goto __pyx_L3;
7887   }
7888   __pyx_L3:;
7889
7890   /* "TabProxies.pyx":624
7891  * 
7892  *         # determines bed format
7893  *         self.bedfields = self.nfields             # <<<<<<<<<<<<<<
7894  * 
7895  *         # do automatic conversion
7896  */
7897   __pyx_v_self->bedfields = __pyx_v_self->__pyx_base.__pyx_base.nfields;
7898
7899   /* "TabProxies.pyx":627
7900  * 
7901  *         # do automatic conversion
7902  *         self.contig = self.fields[0]             # <<<<<<<<<<<<<<
7903  *         self.start = atoi( self.fields[1] )
7904  *         self.end = atoi( self.fields[2] )
7905  */
7906   __pyx_v_self->contig = (__pyx_v_self->__pyx_base.__pyx_base.fields[0]);
7907
7908   /* "TabProxies.pyx":628
7909  *         # do automatic conversion
7910  *         self.contig = self.fields[0]
7911  *         self.start = atoi( self.fields[1] )             # <<<<<<<<<<<<<<
7912  *         self.end = atoi( self.fields[2] )
7913  * 
7914  */
7915   __pyx_v_self->start = atoi((__pyx_v_self->__pyx_base.__pyx_base.fields[1]));
7916
7917   /* "TabProxies.pyx":629
7918  *         self.contig = self.fields[0]
7919  *         self.start = atoi( self.fields[1] )
7920  *         self.end = atoi( self.fields[2] )             # <<<<<<<<<<<<<<
7921  * 
7922  *     # __setattr__ in base class seems to take precedence
7923  */
7924   __pyx_v_self->end = atoi((__pyx_v_self->__pyx_base.__pyx_base.fields[2]));
7925
7926   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7927   goto __pyx_L0;
7928   __pyx_L1_error:;
7929   __Pyx_XDECREF(__pyx_t_1);
7930   __Pyx_AddTraceback("TabProxies.BedProxy.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
7931   __pyx_r = 0;
7932   __pyx_L0:;
7933   __Pyx_XGIVEREF(__pyx_r);
7934   __Pyx_RefNannyFinishContext();
7935   return __pyx_r;
7936 }
7937
7938 /* Python wrapper */
7939 static PyObject *__pyx_pw_10TabProxies_8BedProxy_1__str__(PyObject *__pyx_v_self); /*proto*/
7940 static PyObject *__pyx_pw_10TabProxies_8BedProxy_1__str__(PyObject *__pyx_v_self) {
7941   PyObject *__pyx_r = 0;
7942   __Pyx_RefNannyDeclarations
7943   __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
7944   __pyx_r = __pyx_pf_10TabProxies_8BedProxy___str__(((struct __pyx_obj_10TabProxies_BedProxy *)__pyx_v_self));
7945   __Pyx_RefNannyFinishContext();
7946   return __pyx_r;
7947 }
7948
7949 /* "TabProxies.pyx":638
7950  *     #    def __get__( self ): return self.end
7951  * 
7952  *     def __str__(self):             # <<<<<<<<<<<<<<
7953  * 
7954  *         cdef int save_fields = self.nfields
7955  */
7956
7957 static PyObject *__pyx_pf_10TabProxies_8BedProxy___str__(struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self) {
7958   int __pyx_v_save_fields;
7959   PyObject *__pyx_v_retval = NULL;
7960   PyObject *__pyx_r = NULL;
7961   __Pyx_RefNannyDeclarations
7962   PyObject *__pyx_t_1 = NULL;
7963   PyObject *__pyx_t_2 = NULL;
7964   PyObject *__pyx_t_3 = NULL;
7965   int __pyx_lineno = 0;
7966   const char *__pyx_filename = NULL;
7967   int __pyx_clineno = 0;
7968   __Pyx_RefNannySetupContext("__str__", 0);
7969
7970   /* "TabProxies.pyx":640
7971  *     def __str__(self):
7972  * 
7973  *         cdef int save_fields = self.nfields             # <<<<<<<<<<<<<<
7974  *         # ensure fields to use correct format
7975  *         self.nfields = self.bedfields
7976  */
7977   __pyx_v_save_fields = __pyx_v_self->__pyx_base.__pyx_base.nfields;
7978
7979   /* "TabProxies.pyx":642
7980  *         cdef int save_fields = self.nfields
7981  *         # ensure fields to use correct format
7982  *         self.nfields = self.bedfields             # <<<<<<<<<<<<<<
7983  *         retval = TupleProxy.__str__( self )
7984  *         self.nfields = save_fields
7985  */
7986   __pyx_v_self->__pyx_base.__pyx_base.nfields = __pyx_v_self->bedfields;
7987
7988   /* "TabProxies.pyx":643
7989  *         # ensure fields to use correct format
7990  *         self.nfields = self.bedfields
7991  *         retval = TupleProxy.__str__( self )             # <<<<<<<<<<<<<<
7992  *         self.nfields = save_fields
7993  *         return retval
7994  */
7995   __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_10TabProxies_TupleProxy)), __pyx_n_s____str__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7996   __Pyx_GOTREF(__pyx_t_1);
7997   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7998   __Pyx_GOTREF(__pyx_t_2);
7999   __Pyx_INCREF(((PyObject *)__pyx_v_self));
8000   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
8001   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
8002   __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8003   __Pyx_GOTREF(__pyx_t_3);
8004   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8005   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
8006   __pyx_v_retval = __pyx_t_3;
8007   __pyx_t_3 = 0;
8008
8009   /* "TabProxies.pyx":644
8010  *         self.nfields = self.bedfields
8011  *         retval = TupleProxy.__str__( self )
8012  *         self.nfields = save_fields             # <<<<<<<<<<<<<<
8013  *         return retval
8014  * 
8015  */
8016   __pyx_v_self->__pyx_base.__pyx_base.nfields = __pyx_v_save_fields;
8017
8018   /* "TabProxies.pyx":645
8019  *         retval = TupleProxy.__str__( self )
8020  *         self.nfields = save_fields
8021  *         return retval             # <<<<<<<<<<<<<<
8022  * 
8023  *     def __setattr__(self, key, value ):
8024  */
8025   __Pyx_XDECREF(__pyx_r);
8026   __Pyx_INCREF(__pyx_v_retval);
8027   __pyx_r = __pyx_v_retval;
8028   goto __pyx_L0;
8029
8030   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8031   goto __pyx_L0;
8032   __pyx_L1_error:;
8033   __Pyx_XDECREF(__pyx_t_1);
8034   __Pyx_XDECREF(__pyx_t_2);
8035   __Pyx_XDECREF(__pyx_t_3);
8036   __Pyx_AddTraceback("TabProxies.BedProxy.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8037   __pyx_r = NULL;
8038   __pyx_L0:;
8039   __Pyx_XDECREF(__pyx_v_retval);
8040   __Pyx_XGIVEREF(__pyx_r);
8041   __Pyx_RefNannyFinishContext();
8042   return __pyx_r;
8043 }
8044
8045 /* Python wrapper */
8046 static int __pyx_pw_10TabProxies_8BedProxy_3__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
8047 static char __pyx_doc_10TabProxies_8BedProxy_2__setattr__[] = "set attribute.";
8048 struct wrapperbase __pyx_wrapperbase_10TabProxies_8BedProxy_2__setattr__;
8049 static int __pyx_pw_10TabProxies_8BedProxy_3__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
8050   int __pyx_r;
8051   __Pyx_RefNannyDeclarations
8052   __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
8053   __pyx_r = __pyx_pf_10TabProxies_8BedProxy_2__setattr__(((struct __pyx_obj_10TabProxies_BedProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
8054   __Pyx_RefNannyFinishContext();
8055   return __pyx_r;
8056 }
8057
8058 /* "TabProxies.pyx":647
8059  *         return retval
8060  * 
8061  *     def __setattr__(self, key, value ):             # <<<<<<<<<<<<<<
8062  *         '''set attribute.'''
8063  *         if key == "start": self.start = value
8064  */
8065
8066 static int __pyx_pf_10TabProxies_8BedProxy_2__setattr__(struct __pyx_obj_10TabProxies_BedProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
8067   int __pyx_v_idx;
8068   CYTHON_UNUSED PyObject *__pyx_v_f = NULL;
8069   int __pyx_r;
8070   __Pyx_RefNannyDeclarations
8071   int __pyx_t_1;
8072   uint32_t __pyx_t_2;
8073   PyObject *__pyx_t_3 = NULL;
8074   PyObject *__pyx_t_4 = NULL;
8075   PyObject *__pyx_t_5 = NULL;
8076   PyObject *__pyx_t_6 = NULL;
8077   PyObject *(*__pyx_t_7)(PyObject *);
8078   int __pyx_t_8;
8079   int __pyx_lineno = 0;
8080   const char *__pyx_filename = NULL;
8081   int __pyx_clineno = 0;
8082   __Pyx_RefNannySetupContext("__setattr__", 0);
8083
8084   /* "TabProxies.pyx":649
8085  *     def __setattr__(self, key, value ):
8086  *         '''set attribute.'''
8087  *         if key == "start": self.start = value             # <<<<<<<<<<<<<<
8088  *         elif key == "end": self.end = value
8089  * 
8090  */
8091   __pyx_t_1 = __Pyx_PyString_Equals(__pyx_v_key, ((PyObject *)__pyx_n_s__start), Py_EQ); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8092   if (__pyx_t_1) {
8093     __pyx_t_2 = __Pyx_PyInt_from_py_uint32_t(__pyx_v_value); if (unlikely((__pyx_t_2 == (uint32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8094     __pyx_v_self->start = __pyx_t_2;
8095     goto __pyx_L3;
8096   }
8097
8098   /* "TabProxies.pyx":650
8099  *         '''set attribute.'''
8100  *         if key == "start": self.start = value
8101  *         elif key == "end": self.end = value             # <<<<<<<<<<<<<<
8102  * 
8103  *         cdef int idx
8104  */
8105   __pyx_t_1 = __Pyx_PyString_Equals(__pyx_v_key, ((PyObject *)__pyx_n_s__end), Py_EQ); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8106   if (__pyx_t_1) {
8107     __pyx_t_2 = __Pyx_PyInt_from_py_uint32_t(__pyx_v_value); if (unlikely((__pyx_t_2 == (uint32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8108     __pyx_v_self->end = __pyx_t_2;
8109     goto __pyx_L3;
8110   }
8111   __pyx_L3:;
8112
8113   /* "TabProxies.pyx":653
8114  * 
8115  *         cdef int idx
8116  *         idx, f = self.map_key2field[key]             # <<<<<<<<<<<<<<
8117  *         TupleProxy._setindex(self, idx, str(value) )
8118  * 
8119  */
8120   __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__map_key2field); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8121   __Pyx_GOTREF(__pyx_t_3);
8122   __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_v_key); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8123   __Pyx_GOTREF(__pyx_t_4);
8124   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8125   if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
8126     PyObject* sequence = __pyx_t_4;
8127     if (likely(PyTuple_CheckExact(sequence))) {
8128       if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
8129         if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
8130         else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
8131         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8132       }
8133       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
8134       __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
8135     } else {
8136       if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
8137         if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
8138         else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
8139         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8140       }
8141       __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
8142       __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
8143     }
8144     __Pyx_INCREF(__pyx_t_3);
8145     __Pyx_INCREF(__pyx_t_5);
8146     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8147   } else {
8148     Py_ssize_t index = -1;
8149     __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8150     __Pyx_GOTREF(__pyx_t_6);
8151     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8152     __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
8153     index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
8154     __Pyx_GOTREF(__pyx_t_3);
8155     index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
8156     __Pyx_GOTREF(__pyx_t_5);
8157     if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8158     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8159     goto __pyx_L5_unpacking_done;
8160     __pyx_L4_unpacking_failed:;
8161     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8162     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
8163     if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
8164     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8165     __pyx_L5_unpacking_done:;
8166   }
8167   __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8168   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8169   __pyx_v_idx = __pyx_t_8;
8170   __pyx_v_f = __pyx_t_5;
8171   __pyx_t_5 = 0;
8172
8173   /* "TabProxies.pyx":654
8174  *         cdef int idx
8175  *         idx, f = self.map_key2field[key]
8176  *         TupleProxy._setindex(self, idx, str(value) )             # <<<<<<<<<<<<<<
8177  * 
8178  * cdef class VCFProxy( NamedTupleProxy ):
8179  */
8180   __pyx_t_4 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_10TabProxies_TupleProxy)), __pyx_n_s___setindex); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8181   __Pyx_GOTREF(__pyx_t_4);
8182   __pyx_t_5 = PyInt_FromLong(__pyx_v_idx); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8183   __Pyx_GOTREF(__pyx_t_5);
8184   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8185   __Pyx_GOTREF(__pyx_t_3);
8186   __Pyx_INCREF(__pyx_v_value);
8187   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_value);
8188   __Pyx_GIVEREF(__pyx_v_value);
8189   __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8190   __Pyx_GOTREF(__pyx_t_6);
8191   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
8192   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8193   __Pyx_GOTREF(__pyx_t_3);
8194   __Pyx_INCREF(((PyObject *)__pyx_v_self));
8195   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
8196   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
8197   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
8198   __Pyx_GIVEREF(__pyx_t_5);
8199   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_6);
8200   __Pyx_GIVEREF(__pyx_t_6);
8201   __pyx_t_5 = 0;
8202   __pyx_t_6 = 0;
8203   __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8204   __Pyx_GOTREF(__pyx_t_6);
8205   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8206   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
8207   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8208
8209   __pyx_r = 0;
8210   goto __pyx_L0;
8211   __pyx_L1_error:;
8212   __Pyx_XDECREF(__pyx_t_3);
8213   __Pyx_XDECREF(__pyx_t_4);
8214   __Pyx_XDECREF(__pyx_t_5);
8215   __Pyx_XDECREF(__pyx_t_6);
8216   __Pyx_AddTraceback("TabProxies.BedProxy.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8217   __pyx_r = -1;
8218   __pyx_L0:;
8219   __Pyx_XDECREF(__pyx_v_f);
8220   __Pyx_RefNannyFinishContext();
8221   return __pyx_r;
8222 }
8223
8224 /* Python wrapper */
8225 static int __pyx_pw_10TabProxies_8VCFProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8226 static int __pyx_pw_10TabProxies_8VCFProxy_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8227   int __pyx_r;
8228   __Pyx_RefNannyDeclarations
8229   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
8230   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
8231     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
8232   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
8233   __pyx_r = __pyx_pf_10TabProxies_8VCFProxy___cinit__(((struct __pyx_obj_10TabProxies_VCFProxy *)__pyx_v_self));
8234   __Pyx_RefNannyFinishContext();
8235   return __pyx_r;
8236 }
8237
8238 /* "TabProxies.pyx":672
8239  *         'format' : (8, bytes) }
8240  * 
8241  *     def __cinit__(self ):             # <<<<<<<<<<<<<<
8242  *         # automatically calls TupleProxy.__cinit__
8243  *         # start indexed access at genotypes
8244  */
8245
8246 static int __pyx_pf_10TabProxies_8VCFProxy___cinit__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self) {
8247   int __pyx_r;
8248   __Pyx_RefNannyDeclarations
8249   __Pyx_RefNannySetupContext("__cinit__", 0);
8250
8251   /* "TabProxies.pyx":675
8252  *         # automatically calls TupleProxy.__cinit__
8253  *         # start indexed access at genotypes
8254  *         self.offset = 9             # <<<<<<<<<<<<<<
8255  * 
8256  *     cdef update( self, char * buffer, size_t nbytes ):
8257  */
8258   __pyx_v_self->__pyx_base.__pyx_base.offset = 9;
8259
8260   __pyx_r = 0;
8261   __Pyx_RefNannyFinishContext();
8262   return __pyx_r;
8263 }
8264
8265 /* "TabProxies.pyx":677
8266  *         self.offset = 9
8267  * 
8268  *     cdef update( self, char * buffer, size_t nbytes ):             # <<<<<<<<<<<<<<
8269  *         '''update internal data.
8270  * 
8271  */
8272
8273 static PyObject *__pyx_f_10TabProxies_8VCFProxy_update(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self, char *__pyx_v_buffer, size_t __pyx_v_nbytes) {
8274   PyObject *__pyx_r = NULL;
8275   __Pyx_RefNannyDeclarations
8276   PyObject *__pyx_t_1 = NULL;
8277   int __pyx_lineno = 0;
8278   const char *__pyx_filename = NULL;
8279   int __pyx_clineno = 0;
8280   __Pyx_RefNannySetupContext("update", 0);
8281
8282   /* "TabProxies.pyx":682
8283  *         nbytes does not include the terminal '\0'.
8284  *         '''
8285  *         TupleProxy.update( self, buffer, nbytes )             # <<<<<<<<<<<<<<
8286  * 
8287  *         self.contig = self.fields[0]
8288  */
8289   __pyx_t_1 = __pyx_vtabptr_10TabProxies_TupleProxy->update(((struct __pyx_obj_10TabProxies_TupleProxy *)__pyx_v_self), __pyx_v_buffer, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8290   __Pyx_GOTREF(__pyx_t_1);
8291   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8292
8293   /* "TabProxies.pyx":684
8294  *         TupleProxy.update( self, buffer, nbytes )
8295  * 
8296  *         self.contig = self.fields[0]             # <<<<<<<<<<<<<<
8297  *         # vcf counts from 1 - correct here
8298  *         self.pos = atoi( self.fields[1] ) - 1
8299  */
8300   __pyx_v_self->contig = (__pyx_v_self->__pyx_base.__pyx_base.fields[0]);
8301
8302   /* "TabProxies.pyx":686
8303  *         self.contig = self.fields[0]
8304  *         # vcf counts from 1 - correct here
8305  *         self.pos = atoi( self.fields[1] ) - 1             # <<<<<<<<<<<<<<
8306  * 
8307  *     def __len__(self):
8308  */
8309   __pyx_v_self->pos = (atoi((__pyx_v_self->__pyx_base.__pyx_base.fields[1])) - 1);
8310
8311   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8312   goto __pyx_L0;
8313   __pyx_L1_error:;
8314   __Pyx_XDECREF(__pyx_t_1);
8315   __Pyx_AddTraceback("TabProxies.VCFProxy.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
8316   __pyx_r = 0;
8317   __pyx_L0:;
8318   __Pyx_XGIVEREF(__pyx_r);
8319   __Pyx_RefNannyFinishContext();
8320   return __pyx_r;
8321 }
8322
8323 /* Python wrapper */
8324 static Py_ssize_t __pyx_pw_10TabProxies_8VCFProxy_3__len__(PyObject *__pyx_v_self); /*proto*/
8325 static char __pyx_doc_10TabProxies_8VCFProxy_2__len__[] = "return number of genotype fields.";
8326 struct wrapperbase __pyx_wrapperbase_10TabProxies_8VCFProxy_2__len__;
8327 static Py_ssize_t __pyx_pw_10TabProxies_8VCFProxy_3__len__(PyObject *__pyx_v_self) {
8328   Py_ssize_t __pyx_r;
8329   __Pyx_RefNannyDeclarations
8330   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
8331   __pyx_r = __pyx_pf_10TabProxies_8VCFProxy_2__len__(((struct __pyx_obj_10TabProxies_VCFProxy *)__pyx_v_self));
8332   __Pyx_RefNannyFinishContext();
8333   return __pyx_r;
8334 }
8335
8336 /* "TabProxies.pyx":688
8337  *         self.pos = atoi( self.fields[1] ) - 1
8338  * 
8339  *     def __len__(self):             # <<<<<<<<<<<<<<
8340  *         '''return number of genotype fields.'''
8341  *         return max(0, self.nfields - 9)
8342  */
8343
8344 static Py_ssize_t __pyx_pf_10TabProxies_8VCFProxy_2__len__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self) {
8345   Py_ssize_t __pyx_r;
8346   __Pyx_RefNannyDeclarations
8347   long __pyx_t_1;
8348   long __pyx_t_2;
8349   long __pyx_t_3;
8350   __Pyx_RefNannySetupContext("__len__", 0);
8351
8352   /* "TabProxies.pyx":690
8353  *     def __len__(self):
8354  *         '''return number of genotype fields.'''
8355  *         return max(0, self.nfields - 9)             # <<<<<<<<<<<<<<
8356  * 
8357  *     property pos:
8358  */
8359   __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base.nfields - 9);
8360   __pyx_t_2 = 0;
8361   if ((__pyx_t_1 > __pyx_t_2)) {
8362     __pyx_t_3 = __pyx_t_1;
8363   } else {
8364     __pyx_t_3 = __pyx_t_2;
8365   }
8366   __pyx_r = __pyx_t_3;
8367   goto __pyx_L0;
8368
8369   __pyx_r = 0;
8370   __pyx_L0:;
8371   __Pyx_RefNannyFinishContext();
8372   return __pyx_r;
8373 }
8374
8375 /* Python wrapper */
8376 static PyObject *__pyx_pw_10TabProxies_8VCFProxy_3pos_1__get__(PyObject *__pyx_v_self); /*proto*/
8377 static PyObject *__pyx_pw_10TabProxies_8VCFProxy_3pos_1__get__(PyObject *__pyx_v_self) {
8378   PyObject *__pyx_r = 0;
8379   __Pyx_RefNannyDeclarations
8380   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
8381   __pyx_r = __pyx_pf_10TabProxies_8VCFProxy_3pos___get__(((struct __pyx_obj_10TabProxies_VCFProxy *)__pyx_v_self));
8382   __Pyx_RefNannyFinishContext();
8383   return __pyx_r;
8384 }
8385
8386 /* "TabProxies.pyx":694
8387  *     property pos:
8388  *        '''feature end (in 0-based open/closed coordinates).'''
8389  *        def __get__( self ):             # <<<<<<<<<<<<<<
8390  *            return self.pos
8391  * 
8392  */
8393
8394 static PyObject *__pyx_pf_10TabProxies_8VCFProxy_3pos___get__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self) {
8395   PyObject *__pyx_r = NULL;
8396   __Pyx_RefNannyDeclarations
8397   PyObject *__pyx_t_1 = NULL;
8398   int __pyx_lineno = 0;
8399   const char *__pyx_filename = NULL;
8400   int __pyx_clineno = 0;
8401   __Pyx_RefNannySetupContext("__get__", 0);
8402
8403   /* "TabProxies.pyx":695
8404  *        '''feature end (in 0-based open/closed coordinates).'''
8405  *        def __get__( self ):
8406  *            return self.pos             # <<<<<<<<<<<<<<
8407  * 
8408  *     def __setattr__(self, key, value ):
8409  */
8410   __Pyx_XDECREF(__pyx_r);
8411   __pyx_t_1 = __Pyx_PyInt_to_py_uint32_t(__pyx_v_self->pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8412   __Pyx_GOTREF(__pyx_t_1);
8413   __pyx_r = __pyx_t_1;
8414   __pyx_t_1 = 0;
8415   goto __pyx_L0;
8416
8417   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8418   goto __pyx_L0;
8419   __pyx_L1_error:;
8420   __Pyx_XDECREF(__pyx_t_1);
8421   __Pyx_AddTraceback("TabProxies.VCFProxy.pos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8422   __pyx_r = NULL;
8423   __pyx_L0:;
8424   __Pyx_XGIVEREF(__pyx_r);
8425   __Pyx_RefNannyFinishContext();
8426   return __pyx_r;
8427 }
8428
8429 /* Python wrapper */
8430 static int __pyx_pw_10TabProxies_8VCFProxy_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
8431 static char __pyx_doc_10TabProxies_8VCFProxy_4__setattr__[] = "set attribute.";
8432 struct wrapperbase __pyx_wrapperbase_10TabProxies_8VCFProxy_4__setattr__;
8433 static int __pyx_pw_10TabProxies_8VCFProxy_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
8434   int __pyx_r;
8435   __Pyx_RefNannyDeclarations
8436   __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
8437   __pyx_r = __pyx_pf_10TabProxies_8VCFProxy_4__setattr__(((struct __pyx_obj_10TabProxies_VCFProxy *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
8438   __Pyx_RefNannyFinishContext();
8439   return __pyx_r;
8440 }
8441
8442 /* "TabProxies.pyx":697
8443  *            return self.pos
8444  * 
8445  *     def __setattr__(self, key, value ):             # <<<<<<<<<<<<<<
8446  *         '''set attribute.'''
8447  *         if key == "pos":
8448  */
8449
8450 static int __pyx_pf_10TabProxies_8VCFProxy_4__setattr__(struct __pyx_obj_10TabProxies_VCFProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
8451   int __pyx_v_idx;
8452   CYTHON_UNUSED PyObject *__pyx_v_f = NULL;
8453   int __pyx_r;
8454   __Pyx_RefNannyDeclarations
8455   int __pyx_t_1;
8456   uint32_t __pyx_t_2;
8457   PyObject *__pyx_t_3 = NULL;
8458   PyObject *__pyx_t_4 = NULL;
8459   PyObject *__pyx_t_5 = NULL;
8460   PyObject *__pyx_t_6 = NULL;
8461   PyObject *(*__pyx_t_7)(PyObject *);
8462   int __pyx_t_8;
8463   int __pyx_lineno = 0;
8464   const char *__pyx_filename = NULL;
8465   int __pyx_clineno = 0;
8466   __Pyx_RefNannySetupContext("__setattr__", 0);
8467   __Pyx_INCREF(__pyx_v_value);
8468
8469   /* "TabProxies.pyx":699
8470  *     def __setattr__(self, key, value ):
8471  *         '''set attribute.'''
8472  *         if key == "pos":             # <<<<<<<<<<<<<<
8473  *             self.pos = value
8474  *             value += 1
8475  */
8476   __pyx_t_1 = __Pyx_PyString_Equals(__pyx_v_key, ((PyObject *)__pyx_n_s__pos), Py_EQ); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8477   if (__pyx_t_1) {
8478
8479     /* "TabProxies.pyx":700
8480  *         '''set attribute.'''
8481  *         if key == "pos":
8482  *             self.pos = value             # <<<<<<<<<<<<<<
8483  *             value += 1
8484  * 
8485  */
8486     __pyx_t_2 = __Pyx_PyInt_from_py_uint32_t(__pyx_v_value); if (unlikely((__pyx_t_2 == (uint32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8487     __pyx_v_self->pos = __pyx_t_2;
8488
8489     /* "TabProxies.pyx":701
8490  *         if key == "pos":
8491  *             self.pos = value
8492  *             value += 1             # <<<<<<<<<<<<<<
8493  * 
8494  *         cdef int idx
8495  */
8496     __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_value, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8497     __Pyx_GOTREF(__pyx_t_3);
8498     __Pyx_DECREF(__pyx_v_value);
8499     __pyx_v_value = __pyx_t_3;
8500     __pyx_t_3 = 0;
8501     goto __pyx_L3;
8502   }
8503   __pyx_L3:;
8504
8505   /* "TabProxies.pyx":704
8506  * 
8507  *         cdef int idx
8508  *         idx, f = self.map_key2field[key]             # <<<<<<<<<<<<<<
8509  *         TupleProxy._setindex(self, idx, str(value) )
8510  * 
8511  */
8512   __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__map_key2field); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8513   __Pyx_GOTREF(__pyx_t_3);
8514   __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_v_key); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8515   __Pyx_GOTREF(__pyx_t_4);
8516   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8517   if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
8518     PyObject* sequence = __pyx_t_4;
8519     if (likely(PyTuple_CheckExact(sequence))) {
8520       if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
8521         if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
8522         else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
8523         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8524       }
8525       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
8526       __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
8527     } else {
8528       if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
8529         if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
8530         else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
8531         {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8532       }
8533       __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
8534       __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
8535     }
8536     __Pyx_INCREF(__pyx_t_3);
8537     __Pyx_INCREF(__pyx_t_5);
8538     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8539   } else {
8540     Py_ssize_t index = -1;
8541     __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8542     __Pyx_GOTREF(__pyx_t_6);
8543     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8544     __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
8545     index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
8546     __Pyx_GOTREF(__pyx_t_3);
8547     index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
8548     __Pyx_GOTREF(__pyx_t_5);
8549     if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8550     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8551     goto __pyx_L5_unpacking_done;
8552     __pyx_L4_unpacking_failed:;
8553     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8554     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
8555     if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
8556     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8557     __pyx_L5_unpacking_done:;
8558   }
8559   __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8560   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8561   __pyx_v_idx = __pyx_t_8;
8562   __pyx_v_f = __pyx_t_5;
8563   __pyx_t_5 = 0;
8564
8565   /* "TabProxies.pyx":705
8566  *         cdef int idx
8567  *         idx, f = self.map_key2field[key]
8568  *         TupleProxy._setindex(self, idx, str(value) )             # <<<<<<<<<<<<<<
8569  * 
8570  */
8571   __pyx_t_4 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_10TabProxies_TupleProxy)), __pyx_n_s___setindex); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8572   __Pyx_GOTREF(__pyx_t_4);
8573   __pyx_t_5 = PyInt_FromLong(__pyx_v_idx); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8574   __Pyx_GOTREF(__pyx_t_5);
8575   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8576   __Pyx_GOTREF(__pyx_t_3);
8577   __Pyx_INCREF(__pyx_v_value);
8578   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_value);
8579   __Pyx_GIVEREF(__pyx_v_value);
8580   __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8581   __Pyx_GOTREF(__pyx_t_6);
8582   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
8583   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8584   __Pyx_GOTREF(__pyx_t_3);
8585   __Pyx_INCREF(((PyObject *)__pyx_v_self));
8586   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
8587   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
8588   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
8589   __Pyx_GIVEREF(__pyx_t_5);
8590   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_6);
8591   __Pyx_GIVEREF(__pyx_t_6);
8592   __pyx_t_5 = 0;
8593   __pyx_t_6 = 0;
8594   __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8595   __Pyx_GOTREF(__pyx_t_6);
8596   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8597   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
8598   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8599
8600   __pyx_r = 0;
8601   goto __pyx_L0;
8602   __pyx_L1_error:;
8603   __Pyx_XDECREF(__pyx_t_3);
8604   __Pyx_XDECREF(__pyx_t_4);
8605   __Pyx_XDECREF(__pyx_t_5);
8606   __Pyx_XDECREF(__pyx_t_6);
8607   __Pyx_AddTraceback("TabProxies.VCFProxy.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8608   __pyx_r = -1;
8609   __pyx_L0:;
8610   __Pyx_XDECREF(__pyx_v_f);
8611   __Pyx_XDECREF(__pyx_v_value);
8612   __Pyx_RefNannyFinishContext();
8613   return __pyx_r;
8614 }
8615 static struct __pyx_vtabstruct_10TabProxies_TupleProxy __pyx_vtable_10TabProxies_TupleProxy;
8616
8617 static PyObject *__pyx_tp_new_10TabProxies_TupleProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
8618   struct __pyx_obj_10TabProxies_TupleProxy *p;
8619   PyObject *o = (*t->tp_alloc)(t, 0);
8620   if (!o) return 0;
8621   p = ((struct __pyx_obj_10TabProxies_TupleProxy *)o);
8622   p->__pyx_vtab = __pyx_vtabptr_10TabProxies_TupleProxy;
8623   if (__pyx_pw_10TabProxies_10TupleProxy_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
8624     Py_DECREF(o); o = 0;
8625   }
8626   return o;
8627 }
8628
8629 static void __pyx_tp_dealloc_10TabProxies_TupleProxy(PyObject *o) {
8630   {
8631     PyObject *etype, *eval, *etb;
8632     PyErr_Fetch(&etype, &eval, &etb);
8633     ++Py_REFCNT(o);
8634     __pyx_pw_10TabProxies_10TupleProxy_3__dealloc__(o);
8635     if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
8636     --Py_REFCNT(o);
8637     PyErr_Restore(etype, eval, etb);
8638   }
8639   (*Py_TYPE(o)->tp_free)(o);
8640 }
8641 static PyObject *__pyx_sq_item_10TabProxies_TupleProxy(PyObject *o, Py_ssize_t i) {
8642   PyObject *r;
8643   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
8644   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
8645   Py_DECREF(x);
8646   return r;
8647 }
8648
8649 static int __pyx_mp_ass_subscript_10TabProxies_TupleProxy(PyObject *o, PyObject *i, PyObject *v) {
8650   if (v) {
8651     return __pyx_pw_10TabProxies_10TupleProxy_11__setitem__(o, i, v);
8652   }
8653   else {
8654     PyErr_Format(PyExc_NotImplementedError,
8655       "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
8656     return -1;
8657   }
8658 }
8659
8660 static PyMethodDef __pyx_methods_10TabProxies_TupleProxy[] = {
8661   {__Pyx_NAMESTR("_getindex"), (PyCFunction)__pyx_pw_10TabProxies_10TupleProxy_5_getindex, METH_O, __Pyx_DOCSTR(__pyx_doc_10TabProxies_10TupleProxy_4_getindex)},
8662   {__Pyx_NAMESTR("_setindex"), (PyCFunction)__pyx_pw_10TabProxies_10TupleProxy_9_setindex, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10TabProxies_10TupleProxy_8_setindex)},
8663   {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_10TabProxies_10TupleProxy_17__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_10TabProxies_10TupleProxy_16__next__)},
8664   {0, 0, 0, 0}
8665 };
8666
8667 static PyNumberMethods __pyx_tp_as_number_TupleProxy = {
8668   0, /*nb_add*/
8669   0, /*nb_subtract*/
8670   0, /*nb_multiply*/
8671   #if PY_MAJOR_VERSION < 3
8672   0, /*nb_divide*/
8673   #endif
8674   0, /*nb_remainder*/
8675   0, /*nb_divmod*/
8676   0, /*nb_power*/
8677   0, /*nb_negative*/
8678   0, /*nb_positive*/
8679   0, /*nb_absolute*/
8680   0, /*nb_nonzero*/
8681   0, /*nb_invert*/
8682   0, /*nb_lshift*/
8683   0, /*nb_rshift*/
8684   0, /*nb_and*/
8685   0, /*nb_xor*/
8686   0, /*nb_or*/
8687   #if PY_MAJOR_VERSION < 3
8688   0, /*nb_coerce*/
8689   #endif
8690   0, /*nb_int*/
8691   #if PY_MAJOR_VERSION < 3
8692   0, /*nb_long*/
8693   #else
8694   0, /*reserved*/
8695   #endif
8696   0, /*nb_float*/
8697   #if PY_MAJOR_VERSION < 3
8698   0, /*nb_oct*/
8699   #endif
8700   #if PY_MAJOR_VERSION < 3
8701   0, /*nb_hex*/
8702   #endif
8703   0, /*nb_inplace_add*/
8704   0, /*nb_inplace_subtract*/
8705   0, /*nb_inplace_multiply*/
8706   #if PY_MAJOR_VERSION < 3
8707   0, /*nb_inplace_divide*/
8708   #endif
8709   0, /*nb_inplace_remainder*/
8710   0, /*nb_inplace_power*/
8711   0, /*nb_inplace_lshift*/
8712   0, /*nb_inplace_rshift*/
8713   0, /*nb_inplace_and*/
8714   0, /*nb_inplace_xor*/
8715   0, /*nb_inplace_or*/
8716   0, /*nb_floor_divide*/
8717   0, /*nb_true_divide*/
8718   0, /*nb_inplace_floor_divide*/
8719   0, /*nb_inplace_true_divide*/
8720   #if PY_VERSION_HEX >= 0x02050000
8721   0, /*nb_index*/
8722   #endif
8723 };
8724
8725 static PySequenceMethods __pyx_tp_as_sequence_TupleProxy = {
8726   __pyx_pw_10TabProxies_10TupleProxy_13__len__, /*sq_length*/
8727   0, /*sq_concat*/
8728   0, /*sq_repeat*/
8729   __pyx_sq_item_10TabProxies_TupleProxy, /*sq_item*/
8730   0, /*sq_slice*/
8731   0, /*sq_ass_item*/
8732   0, /*sq_ass_slice*/
8733   0, /*sq_contains*/
8734   0, /*sq_inplace_concat*/
8735   0, /*sq_inplace_repeat*/
8736 };
8737
8738 static PyMappingMethods __pyx_tp_as_mapping_TupleProxy = {
8739   __pyx_pw_10TabProxies_10TupleProxy_13__len__, /*mp_length*/
8740   __pyx_pw_10TabProxies_10TupleProxy_7__getitem__, /*mp_subscript*/
8741   __pyx_mp_ass_subscript_10TabProxies_TupleProxy, /*mp_ass_subscript*/
8742 };
8743
8744 static PyBufferProcs __pyx_tp_as_buffer_TupleProxy = {
8745   #if PY_MAJOR_VERSION < 3
8746   0, /*bf_getreadbuffer*/
8747   #endif
8748   #if PY_MAJOR_VERSION < 3
8749   0, /*bf_getwritebuffer*/
8750   #endif
8751   #if PY_MAJOR_VERSION < 3
8752   0, /*bf_getsegcount*/
8753   #endif
8754   #if PY_MAJOR_VERSION < 3
8755   0, /*bf_getcharbuffer*/
8756   #endif
8757   #if PY_VERSION_HEX >= 0x02060000
8758   0, /*bf_getbuffer*/
8759   #endif
8760   #if PY_VERSION_HEX >= 0x02060000
8761   0, /*bf_releasebuffer*/
8762   #endif
8763 };
8764
8765 static PyTypeObject __pyx_type_10TabProxies_TupleProxy = {
8766   PyVarObject_HEAD_INIT(0, 0)
8767   __Pyx_NAMESTR("TabProxies.TupleProxy"), /*tp_name*/
8768   sizeof(struct __pyx_obj_10TabProxies_TupleProxy), /*tp_basicsize*/
8769   0, /*tp_itemsize*/
8770   __pyx_tp_dealloc_10TabProxies_TupleProxy, /*tp_dealloc*/
8771   0, /*tp_print*/
8772   0, /*tp_getattr*/
8773   0, /*tp_setattr*/
8774   #if PY_MAJOR_VERSION < 3
8775   0, /*tp_compare*/
8776   #else
8777   0, /*reserved*/
8778   #endif
8779   0, /*tp_repr*/
8780   &__pyx_tp_as_number_TupleProxy, /*tp_as_number*/
8781   &__pyx_tp_as_sequence_TupleProxy, /*tp_as_sequence*/
8782   &__pyx_tp_as_mapping_TupleProxy, /*tp_as_mapping*/
8783   0, /*tp_hash*/
8784   0, /*tp_call*/
8785   __pyx_pw_10TabProxies_10TupleProxy_19__str__, /*tp_str*/
8786   0, /*tp_getattro*/
8787   0, /*tp_setattro*/
8788   &__pyx_tp_as_buffer_TupleProxy, /*tp_as_buffer*/
8789   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
8790   __Pyx_DOCSTR("Proxy class for access to parsed row as a tuple.\n\n    This class represents a table row for fast read-access.\n\n    Access to individual fields is via the [] operator.\n    \n    Only read-only access is implemented.\n\n    "), /*tp_doc*/
8791   0, /*tp_traverse*/
8792   0, /*tp_clear*/
8793   0, /*tp_richcompare*/
8794   0, /*tp_weaklistoffset*/
8795   __pyx_pw_10TabProxies_10TupleProxy_15__iter__, /*tp_iter*/
8796   __pyx_pw_10TabProxies_10TupleProxy_17__next__, /*tp_iternext*/
8797   __pyx_methods_10TabProxies_TupleProxy, /*tp_methods*/
8798   0, /*tp_members*/
8799   0, /*tp_getset*/
8800   0, /*tp_base*/
8801   0, /*tp_dict*/
8802   0, /*tp_descr_get*/
8803   0, /*tp_descr_set*/
8804   0, /*tp_dictoffset*/
8805   0, /*tp_init*/
8806   0, /*tp_alloc*/
8807   __pyx_tp_new_10TabProxies_TupleProxy, /*tp_new*/
8808   0, /*tp_free*/
8809   0, /*tp_is_gc*/
8810   0, /*tp_bases*/
8811   0, /*tp_mro*/
8812   0, /*tp_cache*/
8813   0, /*tp_subclasses*/
8814   0, /*tp_weaklist*/
8815   0, /*tp_del*/
8816   #if PY_VERSION_HEX >= 0x02060000
8817   0, /*tp_version_tag*/
8818   #endif
8819 };
8820 static struct __pyx_vtabstruct_10TabProxies_GTFProxy __pyx_vtable_10TabProxies_GTFProxy;
8821
8822 static PyObject *__pyx_tp_new_10TabProxies_GTFProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
8823   struct __pyx_obj_10TabProxies_GTFProxy *p;
8824   PyObject *o = __pyx_tp_new_10TabProxies_TupleProxy(t, a, k);
8825   if (!o) return 0;
8826   p = ((struct __pyx_obj_10TabProxies_GTFProxy *)o);
8827   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_10TabProxies_TupleProxy*)__pyx_vtabptr_10TabProxies_GTFProxy;
8828   if (__pyx_pw_10TabProxies_8GTFProxy_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
8829     Py_DECREF(o); o = 0;
8830   }
8831   return o;
8832 }
8833
8834 static void __pyx_tp_dealloc_10TabProxies_GTFProxy(PyObject *o) {
8835   {
8836     PyObject *etype, *eval, *etb;
8837     PyErr_Fetch(&etype, &eval, &etb);
8838     ++Py_REFCNT(o);
8839     __pyx_pw_10TabProxies_8GTFProxy_3__dealloc__(o);
8840     if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
8841     --Py_REFCNT(o);
8842     PyErr_Restore(etype, eval, etb);
8843   }
8844   __pyx_tp_dealloc_10TabProxies_TupleProxy(o);
8845 }
8846 static PyObject *__pyx_sq_item_10TabProxies_GTFProxy(PyObject *o, Py_ssize_t i) {
8847   PyObject *r;
8848   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
8849   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
8850   Py_DECREF(x);
8851   return r;
8852 }
8853
8854 static PyObject *__pyx_tp_getattro_10TabProxies_GTFProxy(PyObject *o, PyObject *n) {
8855   PyObject *v = PyObject_GenericGetAttr(o, n);
8856   if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
8857     PyErr_Clear();
8858     v = __pyx_pw_10TabProxies_8GTFProxy_17__getattr__(o, n);
8859   }
8860   return v;
8861 }
8862
8863 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_contig(PyObject *o, void *x) {
8864   return __pyx_pw_10TabProxies_8GTFProxy_6contig_1__get__(o);
8865 }
8866
8867 static int __pyx_setprop_10TabProxies_8GTFProxy_contig(PyObject *o, PyObject *v, void *x) {
8868   if (v) {
8869     return __pyx_pw_10TabProxies_8GTFProxy_6contig_3__set__(o, v);
8870   }
8871   else {
8872     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8873     return -1;
8874   }
8875 }
8876
8877 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_source(PyObject *o, void *x) {
8878   return __pyx_pw_10TabProxies_8GTFProxy_6source_1__get__(o);
8879 }
8880
8881 static int __pyx_setprop_10TabProxies_8GTFProxy_source(PyObject *o, PyObject *v, void *x) {
8882   if (v) {
8883     return __pyx_pw_10TabProxies_8GTFProxy_6source_3__set__(o, v);
8884   }
8885   else {
8886     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8887     return -1;
8888   }
8889 }
8890
8891 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_feature(PyObject *o, void *x) {
8892   return __pyx_pw_10TabProxies_8GTFProxy_7feature_1__get__(o);
8893 }
8894
8895 static int __pyx_setprop_10TabProxies_8GTFProxy_feature(PyObject *o, PyObject *v, void *x) {
8896   if (v) {
8897     return __pyx_pw_10TabProxies_8GTFProxy_7feature_3__set__(o, v);
8898   }
8899   else {
8900     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8901     return -1;
8902   }
8903 }
8904
8905 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_start(PyObject *o, void *x) {
8906   return __pyx_pw_10TabProxies_8GTFProxy_5start_1__get__(o);
8907 }
8908
8909 static int __pyx_setprop_10TabProxies_8GTFProxy_start(PyObject *o, PyObject *v, void *x) {
8910   if (v) {
8911     return __pyx_pw_10TabProxies_8GTFProxy_5start_3__set__(o, v);
8912   }
8913   else {
8914     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8915     return -1;
8916   }
8917 }
8918
8919 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_end(PyObject *o, void *x) {
8920   return __pyx_pw_10TabProxies_8GTFProxy_3end_1__get__(o);
8921 }
8922
8923 static int __pyx_setprop_10TabProxies_8GTFProxy_end(PyObject *o, PyObject *v, void *x) {
8924   if (v) {
8925     return __pyx_pw_10TabProxies_8GTFProxy_3end_3__set__(o, v);
8926   }
8927   else {
8928     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8929     return -1;
8930   }
8931 }
8932
8933 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_score(PyObject *o, void *x) {
8934   return __pyx_pw_10TabProxies_8GTFProxy_5score_1__get__(o);
8935 }
8936
8937 static int __pyx_setprop_10TabProxies_8GTFProxy_score(PyObject *o, PyObject *v, void *x) {
8938   if (v) {
8939     return __pyx_pw_10TabProxies_8GTFProxy_5score_3__set__(o, v);
8940   }
8941   else {
8942     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8943     return -1;
8944   }
8945 }
8946
8947 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_strand(PyObject *o, void *x) {
8948   return __pyx_pw_10TabProxies_8GTFProxy_6strand_1__get__(o);
8949 }
8950
8951 static int __pyx_setprop_10TabProxies_8GTFProxy_strand(PyObject *o, PyObject *v, void *x) {
8952   if (v) {
8953     return __pyx_pw_10TabProxies_8GTFProxy_6strand_3__set__(o, v);
8954   }
8955   else {
8956     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8957     return -1;
8958   }
8959 }
8960
8961 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_frame(PyObject *o, void *x) {
8962   return __pyx_pw_10TabProxies_8GTFProxy_5frame_1__get__(o);
8963 }
8964
8965 static int __pyx_setprop_10TabProxies_8GTFProxy_frame(PyObject *o, PyObject *v, void *x) {
8966   if (v) {
8967     return __pyx_pw_10TabProxies_8GTFProxy_5frame_3__set__(o, v);
8968   }
8969   else {
8970     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8971     return -1;
8972   }
8973 }
8974
8975 static PyObject *__pyx_getprop_10TabProxies_8GTFProxy_attributes(PyObject *o, void *x) {
8976   return __pyx_pw_10TabProxies_8GTFProxy_10attributes_1__get__(o);
8977 }
8978
8979 static int __pyx_setprop_10TabProxies_8GTFProxy_attributes(PyObject *o, PyObject *v, void *x) {
8980   if (v) {
8981     return __pyx_pw_10TabProxies_8GTFProxy_10attributes_3__set__(o, v);
8982   }
8983   else {
8984     PyErr_SetString(PyExc_NotImplementedError, "__del__");
8985     return -1;
8986   }
8987 }
8988
8989 static PyMethodDef __pyx_methods_10TabProxies_GTFProxy[] = {
8990   {__Pyx_NAMESTR("asDict"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_5asDict, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_4asDict)},
8991   {__Pyx_NAMESTR("fromDict"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_7fromDict, METH_O, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_6fromDict)},
8992   {__Pyx_NAMESTR("invert"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_11invert, METH_O, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_10invert)},
8993   {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_13keys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_12keys)},
8994   {__Pyx_NAMESTR("__getattr__"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_17__getattr__, METH_O|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_16__getattr__)},
8995   {__Pyx_NAMESTR("setAttribute"), (PyCFunction)__pyx_pw_10TabProxies_8GTFProxy_19setAttribute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10TabProxies_8GTFProxy_18setAttribute)},
8996   {0, 0, 0, 0}
8997 };
8998
8999 static struct PyGetSetDef __pyx_getsets_10TabProxies_GTFProxy[] = {
9000   {(char *)"contig", __pyx_getprop_10TabProxies_8GTFProxy_contig, __pyx_setprop_10TabProxies_8GTFProxy_contig, __Pyx_DOCSTR(__pyx_k_48), 0},
9001   {(char *)"source", __pyx_getprop_10TabProxies_8GTFProxy_source, __pyx_setprop_10TabProxies_8GTFProxy_source, __Pyx_DOCSTR(__pyx_k_49), 0},
9002   {(char *)"feature", __pyx_getprop_10TabProxies_8GTFProxy_feature, __pyx_setprop_10TabProxies_8GTFProxy_feature, __Pyx_DOCSTR(__pyx_k_50), 0},
9003   {(char *)"start", __pyx_getprop_10TabProxies_8GTFProxy_start, __pyx_setprop_10TabProxies_8GTFProxy_start, __Pyx_DOCSTR(__pyx_k_51), 0},
9004   {(char *)"end", __pyx_getprop_10TabProxies_8GTFProxy_end, __pyx_setprop_10TabProxies_8GTFProxy_end, __Pyx_DOCSTR(__pyx_k_52), 0},
9005   {(char *)"score", __pyx_getprop_10TabProxies_8GTFProxy_score, __pyx_setprop_10TabProxies_8GTFProxy_score, __Pyx_DOCSTR(__pyx_k_53), 0},
9006   {(char *)"strand", __pyx_getprop_10TabProxies_8GTFProxy_strand, __pyx_setprop_10TabProxies_8GTFProxy_strand, __Pyx_DOCSTR(__pyx_k_54), 0},
9007   {(char *)"frame", __pyx_getprop_10TabProxies_8GTFProxy_frame, __pyx_setprop_10TabProxies_8GTFProxy_frame, __Pyx_DOCSTR(__pyx_k_55), 0},
9008   {(char *)"attributes", __pyx_getprop_10TabProxies_8GTFProxy_attributes, __pyx_setprop_10TabProxies_8GTFProxy_attributes, __Pyx_DOCSTR(__pyx_k_56), 0},
9009   {0, 0, 0, 0, 0}
9010 };
9011
9012 static PyNumberMethods __pyx_tp_as_number_GTFProxy = {
9013   0, /*nb_add*/
9014   0, /*nb_subtract*/
9015   0, /*nb_multiply*/
9016   #if PY_MAJOR_VERSION < 3
9017   0, /*nb_divide*/
9018   #endif
9019   0, /*nb_remainder*/
9020   0, /*nb_divmod*/
9021   0, /*nb_power*/
9022   0, /*nb_negative*/
9023   0, /*nb_positive*/
9024   0, /*nb_absolute*/
9025   0, /*nb_nonzero*/
9026   0, /*nb_invert*/
9027   0, /*nb_lshift*/
9028   0, /*nb_rshift*/
9029   0, /*nb_and*/
9030   0, /*nb_xor*/
9031   0, /*nb_or*/
9032   #if PY_MAJOR_VERSION < 3
9033   0, /*nb_coerce*/
9034   #endif
9035   0, /*nb_int*/
9036   #if PY_MAJOR_VERSION < 3
9037   0, /*nb_long*/
9038   #else
9039   0, /*reserved*/
9040   #endif
9041   0, /*nb_float*/
9042   #if PY_MAJOR_VERSION < 3
9043   0, /*nb_oct*/
9044   #endif
9045   #if PY_MAJOR_VERSION < 3
9046   0, /*nb_hex*/
9047   #endif
9048   0, /*nb_inplace_add*/
9049   0, /*nb_inplace_subtract*/
9050   0, /*nb_inplace_multiply*/
9051   #if PY_MAJOR_VERSION < 3
9052   0, /*nb_inplace_divide*/
9053   #endif
9054   0, /*nb_inplace_remainder*/
9055   0, /*nb_inplace_power*/
9056   0, /*nb_inplace_lshift*/
9057   0, /*nb_inplace_rshift*/
9058   0, /*nb_inplace_and*/
9059   0, /*nb_inplace_xor*/
9060   0, /*nb_inplace_or*/
9061   0, /*nb_floor_divide*/
9062   0, /*nb_true_divide*/
9063   0, /*nb_inplace_floor_divide*/
9064   0, /*nb_inplace_true_divide*/
9065   #if PY_VERSION_HEX >= 0x02050000
9066   0, /*nb_index*/
9067   #endif
9068 };
9069
9070 static PySequenceMethods __pyx_tp_as_sequence_GTFProxy = {
9071   0, /*sq_length*/
9072   0, /*sq_concat*/
9073   0, /*sq_repeat*/
9074   __pyx_sq_item_10TabProxies_GTFProxy, /*sq_item*/
9075   0, /*sq_slice*/
9076   0, /*sq_ass_item*/
9077   0, /*sq_ass_slice*/
9078   0, /*sq_contains*/
9079   0, /*sq_inplace_concat*/
9080   0, /*sq_inplace_repeat*/
9081 };
9082
9083 static PyMappingMethods __pyx_tp_as_mapping_GTFProxy = {
9084   0, /*mp_length*/
9085   __pyx_pw_10TabProxies_8GTFProxy_15__getitem__, /*mp_subscript*/
9086   0, /*mp_ass_subscript*/
9087 };
9088
9089 static PyBufferProcs __pyx_tp_as_buffer_GTFProxy = {
9090   #if PY_MAJOR_VERSION < 3
9091   0, /*bf_getreadbuffer*/
9092   #endif
9093   #if PY_MAJOR_VERSION < 3
9094   0, /*bf_getwritebuffer*/
9095   #endif
9096   #if PY_MAJOR_VERSION < 3
9097   0, /*bf_getsegcount*/
9098   #endif
9099   #if PY_MAJOR_VERSION < 3
9100   0, /*bf_getcharbuffer*/
9101   #endif
9102   #if PY_VERSION_HEX >= 0x02060000
9103   0, /*bf_getbuffer*/
9104   #endif
9105   #if PY_VERSION_HEX >= 0x02060000
9106   0, /*bf_releasebuffer*/
9107   #endif
9108 };
9109
9110 static PyTypeObject __pyx_type_10TabProxies_GTFProxy = {
9111   PyVarObject_HEAD_INIT(0, 0)
9112   __Pyx_NAMESTR("TabProxies.GTFProxy"), /*tp_name*/
9113   sizeof(struct __pyx_obj_10TabProxies_GTFProxy), /*tp_basicsize*/
9114   0, /*tp_itemsize*/
9115   __pyx_tp_dealloc_10TabProxies_GTFProxy, /*tp_dealloc*/
9116   0, /*tp_print*/
9117   0, /*tp_getattr*/
9118   0, /*tp_setattr*/
9119   #if PY_MAJOR_VERSION < 3
9120   0, /*tp_compare*/
9121   #else
9122   0, /*reserved*/
9123   #endif
9124   0, /*tp_repr*/
9125   &__pyx_tp_as_number_GTFProxy, /*tp_as_number*/
9126   &__pyx_tp_as_sequence_GTFProxy, /*tp_as_sequence*/
9127   &__pyx_tp_as_mapping_GTFProxy, /*tp_as_mapping*/
9128   0, /*tp_hash*/
9129   0, /*tp_call*/
9130   __pyx_pw_10TabProxies_8GTFProxy_9__str__, /*tp_str*/
9131   __pyx_tp_getattro_10TabProxies_GTFProxy, /*tp_getattro*/
9132   0, /*tp_setattro*/
9133   &__pyx_tp_as_buffer_GTFProxy, /*tp_as_buffer*/
9134   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
9135   __Pyx_DOCSTR("Proxy class for access to GTF fields.\n\n    This class represents a GTF entry for fast read-access.\n    Write-access has been added as well, though some care must\n    be taken. If any of the string fields (contig, source, ...)\n    are set, the new value is tied to the lifetime of the\n    argument that was supplied.\n\n    The only exception is the attributes field when set from\n    a dictionary - this field will manage its own memory.\n    "), /*tp_doc*/
9136   0, /*tp_traverse*/
9137   0, /*tp_clear*/
9138   0, /*tp_richcompare*/
9139   0, /*tp_weaklistoffset*/
9140   0, /*tp_iter*/
9141   0, /*tp_iternext*/
9142   __pyx_methods_10TabProxies_GTFProxy, /*tp_methods*/
9143   0, /*tp_members*/
9144   __pyx_getsets_10TabProxies_GTFProxy, /*tp_getset*/
9145   0, /*tp_base*/
9146   0, /*tp_dict*/
9147   0, /*tp_descr_get*/
9148   0, /*tp_descr_set*/
9149   0, /*tp_dictoffset*/
9150   0, /*tp_init*/
9151   0, /*tp_alloc*/
9152   __pyx_tp_new_10TabProxies_GTFProxy, /*tp_new*/
9153   0, /*tp_free*/
9154   0, /*tp_is_gc*/
9155   0, /*tp_bases*/
9156   0, /*tp_mro*/
9157   0, /*tp_cache*/
9158   0, /*tp_subclasses*/
9159   0, /*tp_weaklist*/
9160   0, /*tp_del*/
9161   #if PY_VERSION_HEX >= 0x02060000
9162   0, /*tp_version_tag*/
9163   #endif
9164 };
9165 static struct __pyx_vtabstruct_10TabProxies_NamedTupleProxy __pyx_vtable_10TabProxies_NamedTupleProxy;
9166
9167 static PyObject *__pyx_tp_new_10TabProxies_NamedTupleProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
9168   struct __pyx_obj_10TabProxies_NamedTupleProxy *p;
9169   PyObject *o = __pyx_tp_new_10TabProxies_TupleProxy(t, a, k);
9170   if (!o) return 0;
9171   p = ((struct __pyx_obj_10TabProxies_NamedTupleProxy *)o);
9172   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_10TabProxies_TupleProxy*)__pyx_vtabptr_10TabProxies_NamedTupleProxy;
9173   return o;
9174 }
9175
9176 static PyObject *__pyx_tp_getattro_10TabProxies_NamedTupleProxy(PyObject *o, PyObject *n) {
9177   PyObject *v = PyObject_GenericGetAttr(o, n);
9178   if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
9179     PyErr_Clear();
9180     v = __pyx_pw_10TabProxies_15NamedTupleProxy_3__getattr__(o, n);
9181   }
9182   return v;
9183 }
9184
9185 static int __pyx_tp_setattro_10TabProxies_NamedTupleProxy(PyObject *o, PyObject *n, PyObject *v) {
9186   if (v) {
9187     return __pyx_pw_10TabProxies_15NamedTupleProxy_1__setattr__(o, n, v);
9188   }
9189   else {
9190     if (__pyx_ptype_10TabProxies_TupleProxy->tp_setattro)
9191       return __pyx_ptype_10TabProxies_TupleProxy->tp_setattro(o, n, v);
9192     return PyObject_GenericSetAttr(o, n, 0);
9193   }
9194 }
9195
9196 static PyMethodDef __pyx_methods_10TabProxies_NamedTupleProxy[] = {
9197   {__Pyx_NAMESTR("__getattr__"), (PyCFunction)__pyx_pw_10TabProxies_15NamedTupleProxy_3__getattr__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
9198   {0, 0, 0, 0}
9199 };
9200
9201 static PyNumberMethods __pyx_tp_as_number_NamedTupleProxy = {
9202   0, /*nb_add*/
9203   0, /*nb_subtract*/
9204   0, /*nb_multiply*/
9205   #if PY_MAJOR_VERSION < 3
9206   0, /*nb_divide*/
9207   #endif
9208   0, /*nb_remainder*/
9209   0, /*nb_divmod*/
9210   0, /*nb_power*/
9211   0, /*nb_negative*/
9212   0, /*nb_positive*/
9213   0, /*nb_absolute*/
9214   0, /*nb_nonzero*/
9215   0, /*nb_invert*/
9216   0, /*nb_lshift*/
9217   0, /*nb_rshift*/
9218   0, /*nb_and*/
9219   0, /*nb_xor*/
9220   0, /*nb_or*/
9221   #if PY_MAJOR_VERSION < 3
9222   0, /*nb_coerce*/
9223   #endif
9224   0, /*nb_int*/
9225   #if PY_MAJOR_VERSION < 3
9226   0, /*nb_long*/
9227   #else
9228   0, /*reserved*/
9229   #endif
9230   0, /*nb_float*/
9231   #if PY_MAJOR_VERSION < 3
9232   0, /*nb_oct*/
9233   #endif
9234   #if PY_MAJOR_VERSION < 3
9235   0, /*nb_hex*/
9236   #endif
9237   0, /*nb_inplace_add*/
9238   0, /*nb_inplace_subtract*/
9239   0, /*nb_inplace_multiply*/
9240   #if PY_MAJOR_VERSION < 3
9241   0, /*nb_inplace_divide*/
9242   #endif
9243   0, /*nb_inplace_remainder*/
9244   0, /*nb_inplace_power*/
9245   0, /*nb_inplace_lshift*/
9246   0, /*nb_inplace_rshift*/
9247   0, /*nb_inplace_and*/
9248   0, /*nb_inplace_xor*/
9249   0, /*nb_inplace_or*/
9250   0, /*nb_floor_divide*/
9251   0, /*nb_true_divide*/
9252   0, /*nb_inplace_floor_divide*/
9253   0, /*nb_inplace_true_divide*/
9254   #if PY_VERSION_HEX >= 0x02050000
9255   0, /*nb_index*/
9256   #endif
9257 };
9258
9259 static PySequenceMethods __pyx_tp_as_sequence_NamedTupleProxy = {
9260   0, /*sq_length*/
9261   0, /*sq_concat*/
9262   0, /*sq_repeat*/
9263   0, /*sq_item*/
9264   0, /*sq_slice*/
9265   0, /*sq_ass_item*/
9266   0, /*sq_ass_slice*/
9267   0, /*sq_contains*/
9268   0, /*sq_inplace_concat*/
9269   0, /*sq_inplace_repeat*/
9270 };
9271
9272 static PyMappingMethods __pyx_tp_as_mapping_NamedTupleProxy = {
9273   0, /*mp_length*/
9274   0, /*mp_subscript*/
9275   0, /*mp_ass_subscript*/
9276 };
9277
9278 static PyBufferProcs __pyx_tp_as_buffer_NamedTupleProxy = {
9279   #if PY_MAJOR_VERSION < 3
9280   0, /*bf_getreadbuffer*/
9281   #endif
9282   #if PY_MAJOR_VERSION < 3
9283   0, /*bf_getwritebuffer*/
9284   #endif
9285   #if PY_MAJOR_VERSION < 3
9286   0, /*bf_getsegcount*/
9287   #endif
9288   #if PY_MAJOR_VERSION < 3
9289   0, /*bf_getcharbuffer*/
9290   #endif
9291   #if PY_VERSION_HEX >= 0x02060000
9292   0, /*bf_getbuffer*/
9293   #endif
9294   #if PY_VERSION_HEX >= 0x02060000
9295   0, /*bf_releasebuffer*/
9296   #endif
9297 };
9298
9299 static PyTypeObject __pyx_type_10TabProxies_NamedTupleProxy = {
9300   PyVarObject_HEAD_INIT(0, 0)
9301   __Pyx_NAMESTR("TabProxies.NamedTupleProxy"), /*tp_name*/
9302   sizeof(struct __pyx_obj_10TabProxies_NamedTupleProxy), /*tp_basicsize*/
9303   0, /*tp_itemsize*/
9304   __pyx_tp_dealloc_10TabProxies_TupleProxy, /*tp_dealloc*/
9305   0, /*tp_print*/
9306   0, /*tp_getattr*/
9307   0, /*tp_setattr*/
9308   #if PY_MAJOR_VERSION < 3
9309   0, /*tp_compare*/
9310   #else
9311   0, /*reserved*/
9312   #endif
9313   0, /*tp_repr*/
9314   &__pyx_tp_as_number_NamedTupleProxy, /*tp_as_number*/
9315   &__pyx_tp_as_sequence_NamedTupleProxy, /*tp_as_sequence*/
9316   &__pyx_tp_as_mapping_NamedTupleProxy, /*tp_as_mapping*/
9317   0, /*tp_hash*/
9318   0, /*tp_call*/
9319   0, /*tp_str*/
9320   __pyx_tp_getattro_10TabProxies_NamedTupleProxy, /*tp_getattro*/
9321   __pyx_tp_setattro_10TabProxies_NamedTupleProxy, /*tp_setattro*/
9322   &__pyx_tp_as_buffer_NamedTupleProxy, /*tp_as_buffer*/
9323   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
9324   0, /*tp_doc*/
9325   0, /*tp_traverse*/
9326   0, /*tp_clear*/
9327   0, /*tp_richcompare*/
9328   0, /*tp_weaklistoffset*/
9329   0, /*tp_iter*/
9330   0, /*tp_iternext*/
9331   __pyx_methods_10TabProxies_NamedTupleProxy, /*tp_methods*/
9332   0, /*tp_members*/
9333   0, /*tp_getset*/
9334   0, /*tp_base*/
9335   0, /*tp_dict*/
9336   0, /*tp_descr_get*/
9337   0, /*tp_descr_set*/
9338   0, /*tp_dictoffset*/
9339   0, /*tp_init*/
9340   0, /*tp_alloc*/
9341   __pyx_tp_new_10TabProxies_NamedTupleProxy, /*tp_new*/
9342   0, /*tp_free*/
9343   0, /*tp_is_gc*/
9344   0, /*tp_bases*/
9345   0, /*tp_mro*/
9346   0, /*tp_cache*/
9347   0, /*tp_subclasses*/
9348   0, /*tp_weaklist*/
9349   0, /*tp_del*/
9350   #if PY_VERSION_HEX >= 0x02060000
9351   0, /*tp_version_tag*/
9352   #endif
9353 };
9354 static struct __pyx_vtabstruct_10TabProxies_BedProxy __pyx_vtable_10TabProxies_BedProxy;
9355
9356 static PyObject *__pyx_tp_new_10TabProxies_BedProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
9357   struct __pyx_obj_10TabProxies_BedProxy *p;
9358   PyObject *o = __pyx_tp_new_10TabProxies_TupleProxy(t, a, k);
9359   if (!o) return 0;
9360   p = ((struct __pyx_obj_10TabProxies_BedProxy *)o);
9361   p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_10TabProxies_TupleProxy*)__pyx_vtabptr_10TabProxies_BedProxy;
9362   return o;
9363 }
9364
9365 static int __pyx_tp_setattro_10TabProxies_BedProxy(PyObject *o, PyObject *n, PyObject *v) {
9366   if (v) {
9367     return __pyx_pw_10TabProxies_8BedProxy_3__setattr__(o, n, v);
9368   }
9369   else {
9370     if (__pyx_ptype_10TabProxies_NamedTupleProxy->tp_setattro)
9371       return __pyx_ptype_10TabProxies_NamedTupleProxy->tp_setattro(o, n, v);
9372     return PyObject_GenericSetAttr(o, n, 0);
9373   }
9374 }
9375
9376 static PyMethodDef __pyx_methods_10TabProxies_BedProxy[] = {
9377   {0, 0, 0, 0}
9378 };
9379
9380 static PyNumberMethods __pyx_tp_as_number_BedProxy = {
9381   0, /*nb_add*/
9382   0, /*nb_subtract*/
9383   0, /*nb_multiply*/
9384   #if PY_MAJOR_VERSION < 3
9385   0, /*nb_divide*/
9386   #endif
9387   0, /*nb_remainder*/
9388   0, /*nb_divmod*/
9389   0, /*nb_power*/
9390   0, /*nb_negative*/
9391   0, /*nb_positive*/
9392   0, /*nb_absolute*/
9393   0, /*nb_nonzero*/
9394   0, /*nb_invert*/
9395   0, /*nb_lshift*/
9396   0, /*nb_rshift*/
9397   0, /*nb_and*/
9398   0, /*nb_xor*/
9399   0, /*nb_or*/
9400   #if PY_MAJOR_VERSION < 3
9401   0, /*nb_coerce*/
9402   #endif
9403   0, /*nb_int*/
9404   #if PY_MAJOR_VERSION < 3
9405   0, /*nb_long*/
9406   #else
9407   0, /*reserved*/
9408   #endif
9409   0, /*nb_float*/
9410   #if PY_MAJOR_VERSION < 3
9411   0, /*nb_oct*/
9412   #endif
9413   #if PY_MAJOR_VERSION < 3
9414   0, /*nb_hex*/
9415   #endif
9416   0, /*nb_inplace_add*/
9417   0, /*nb_inplace_subtract*/
9418   0, /*nb_inplace_multiply*/
9419   #if PY_MAJOR_VERSION < 3
9420   0, /*nb_inplace_divide*/
9421   #endif
9422   0, /*nb_inplace_remainder*/
9423   0, /*nb_inplace_power*/
9424   0, /*nb_inplace_lshift*/
9425   0, /*nb_inplace_rshift*/
9426   0, /*nb_inplace_and*/
9427   0, /*nb_inplace_xor*/
9428   0, /*nb_inplace_or*/
9429   0, /*nb_floor_divide*/
9430   0, /*nb_true_divide*/
9431   0, /*nb_inplace_floor_divide*/
9432   0, /*nb_inplace_true_divide*/
9433   #if PY_VERSION_HEX >= 0x02050000
9434   0, /*nb_index*/
9435   #endif
9436 };
9437
9438 static PySequenceMethods __pyx_tp_as_sequence_BedProxy = {
9439   0, /*sq_length*/
9440   0, /*sq_concat*/
9441   0, /*sq_repeat*/
9442   0, /*sq_item*/
9443   0, /*sq_slice*/
9444   0, /*sq_ass_item*/
9445   0, /*sq_ass_slice*/
9446   0, /*sq_contains*/
9447   0, /*sq_inplace_concat*/
9448   0, /*sq_inplace_repeat*/
9449 };
9450
9451 static PyMappingMethods __pyx_tp_as_mapping_BedProxy = {
9452   0, /*mp_length*/
9453   0, /*mp_subscript*/
9454   0, /*mp_ass_subscript*/
9455 };
9456
9457 static PyBufferProcs __pyx_tp_as_buffer_BedProxy = {
9458   #if PY_MAJOR_VERSION < 3
9459   0, /*bf_getreadbuffer*/
9460   #endif
9461   #if PY_MAJOR_VERSION < 3
9462   0, /*bf_getwritebuffer*/
9463   #endif
9464   #if PY_MAJOR_VERSION < 3
9465   0, /*bf_getsegcount*/
9466   #endif
9467   #if PY_MAJOR_VERSION < 3
9468   0, /*bf_getcharbuffer*/
9469   #endif
9470   #if PY_VERSION_HEX >= 0x02060000
9471   0, /*bf_getbuffer*/
9472   #endif
9473   #if PY_VERSION_HEX >= 0x02060000
9474   0, /*bf_releasebuffer*/
9475   #endif
9476 };
9477
9478 static PyTypeObject __pyx_type_10TabProxies_BedProxy = {
9479   PyVarObject_HEAD_INIT(0, 0)
9480   __Pyx_NAMESTR("TabProxies.BedProxy"), /*tp_name*/
9481   sizeof(struct __pyx_obj_10TabProxies_BedProxy), /*tp_basicsize*/
9482   0, /*tp_itemsize*/
9483   __pyx_tp_dealloc_10TabProxies_TupleProxy, /*tp_dealloc*/
9484   0, /*tp_print*/
9485   0, /*tp_getattr*/
9486   0, /*tp_setattr*/
9487   #if PY_MAJOR_VERSION < 3
9488   0, /*tp_compare*/
9489   #else
9490   0, /*reserved*/
9491   #endif
9492   0, /*tp_repr*/
9493   &__pyx_tp_as_number_BedProxy, /*tp_as_number*/
9494   &__pyx_tp_as_sequence_BedProxy, /*tp_as_sequence*/
9495   &__pyx_tp_as_mapping_BedProxy, /*tp_as_mapping*/
9496   0, /*tp_hash*/
9497   0, /*tp_call*/
9498   __pyx_pw_10TabProxies_8BedProxy_1__str__, /*tp_str*/
9499   0, /*tp_getattro*/
9500   __pyx_tp_setattro_10TabProxies_BedProxy, /*tp_setattro*/
9501   &__pyx_tp_as_buffer_BedProxy, /*tp_as_buffer*/
9502   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
9503   __Pyx_DOCSTR("Proxy class for access to Bed fields.\n\n    This class represents a GTF entry for fast read-access.\n    "), /*tp_doc*/
9504   0, /*tp_traverse*/
9505   0, /*tp_clear*/
9506   0, /*tp_richcompare*/
9507   0, /*tp_weaklistoffset*/
9508   0, /*tp_iter*/
9509   0, /*tp_iternext*/
9510   __pyx_methods_10TabProxies_BedProxy, /*tp_methods*/
9511   0, /*tp_members*/
9512   0, /*tp_getset*/
9513   0, /*tp_base*/
9514   0, /*tp_dict*/
9515   0, /*tp_descr_get*/
9516   0, /*tp_descr_set*/
9517   0, /*tp_dictoffset*/
9518   0, /*tp_init*/
9519   0, /*tp_alloc*/
9520   __pyx_tp_new_10TabProxies_BedProxy, /*tp_new*/
9521   0, /*tp_free*/
9522   0, /*tp_is_gc*/
9523   0, /*tp_bases*/
9524   0, /*tp_mro*/
9525   0, /*tp_cache*/
9526   0, /*tp_subclasses*/
9527   0, /*tp_weaklist*/
9528   0, /*tp_del*/
9529   #if PY_VERSION_HEX >= 0x02060000
9530   0, /*tp_version_tag*/
9531   #endif
9532 };
9533 static struct __pyx_vtabstruct_10TabProxies_VCFProxy __pyx_vtable_10TabProxies_VCFProxy;
9534
9535 static PyObject *__pyx_tp_new_10TabProxies_VCFProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
9536   struct __pyx_obj_10TabProxies_VCFProxy *p;
9537   PyObject *o = __pyx_tp_new_10TabProxies_TupleProxy(t, a, k);
9538   if (!o) return 0;
9539   p = ((struct __pyx_obj_10TabProxies_VCFProxy *)o);
9540   p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_10TabProxies_TupleProxy*)__pyx_vtabptr_10TabProxies_VCFProxy;
9541   if (__pyx_pw_10TabProxies_8VCFProxy_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
9542     Py_DECREF(o); o = 0;
9543   }
9544   return o;
9545 }
9546
9547 static int __pyx_tp_setattro_10TabProxies_VCFProxy(PyObject *o, PyObject *n, PyObject *v) {
9548   if (v) {
9549     return __pyx_pw_10TabProxies_8VCFProxy_5__setattr__(o, n, v);
9550   }
9551   else {
9552     if (__pyx_ptype_10TabProxies_NamedTupleProxy->tp_setattro)
9553       return __pyx_ptype_10TabProxies_NamedTupleProxy->tp_setattro(o, n, v);
9554     return PyObject_GenericSetAttr(o, n, 0);
9555   }
9556 }
9557
9558 static PyObject *__pyx_getprop_10TabProxies_8VCFProxy_pos(PyObject *o, void *x) {
9559   return __pyx_pw_10TabProxies_8VCFProxy_3pos_1__get__(o);
9560 }
9561
9562 static PyMethodDef __pyx_methods_10TabProxies_VCFProxy[] = {
9563   {0, 0, 0, 0}
9564 };
9565
9566 static struct PyGetSetDef __pyx_getsets_10TabProxies_VCFProxy[] = {
9567   {(char *)"pos", __pyx_getprop_10TabProxies_8VCFProxy_pos, 0, __Pyx_DOCSTR(__pyx_k_52), 0},
9568   {0, 0, 0, 0, 0}
9569 };
9570
9571 static PyNumberMethods __pyx_tp_as_number_VCFProxy = {
9572   0, /*nb_add*/
9573   0, /*nb_subtract*/
9574   0, /*nb_multiply*/
9575   #if PY_MAJOR_VERSION < 3
9576   0, /*nb_divide*/
9577   #endif
9578   0, /*nb_remainder*/
9579   0, /*nb_divmod*/
9580   0, /*nb_power*/
9581   0, /*nb_negative*/
9582   0, /*nb_positive*/
9583   0, /*nb_absolute*/
9584   0, /*nb_nonzero*/
9585   0, /*nb_invert*/
9586   0, /*nb_lshift*/
9587   0, /*nb_rshift*/
9588   0, /*nb_and*/
9589   0, /*nb_xor*/
9590   0, /*nb_or*/
9591   #if PY_MAJOR_VERSION < 3
9592   0, /*nb_coerce*/
9593   #endif
9594   0, /*nb_int*/
9595   #if PY_MAJOR_VERSION < 3
9596   0, /*nb_long*/
9597   #else
9598   0, /*reserved*/
9599   #endif
9600   0, /*nb_float*/
9601   #if PY_MAJOR_VERSION < 3
9602   0, /*nb_oct*/
9603   #endif
9604   #if PY_MAJOR_VERSION < 3
9605   0, /*nb_hex*/
9606   #endif
9607   0, /*nb_inplace_add*/
9608   0, /*nb_inplace_subtract*/
9609   0, /*nb_inplace_multiply*/
9610   #if PY_MAJOR_VERSION < 3
9611   0, /*nb_inplace_divide*/
9612   #endif
9613   0, /*nb_inplace_remainder*/
9614   0, /*nb_inplace_power*/
9615   0, /*nb_inplace_lshift*/
9616   0, /*nb_inplace_rshift*/
9617   0, /*nb_inplace_and*/
9618   0, /*nb_inplace_xor*/
9619   0, /*nb_inplace_or*/
9620   0, /*nb_floor_divide*/
9621   0, /*nb_true_divide*/
9622   0, /*nb_inplace_floor_divide*/
9623   0, /*nb_inplace_true_divide*/
9624   #if PY_VERSION_HEX >= 0x02050000
9625   0, /*nb_index*/
9626   #endif
9627 };
9628
9629 static PySequenceMethods __pyx_tp_as_sequence_VCFProxy = {
9630   __pyx_pw_10TabProxies_8VCFProxy_3__len__, /*sq_length*/
9631   0, /*sq_concat*/
9632   0, /*sq_repeat*/
9633   0, /*sq_item*/
9634   0, /*sq_slice*/
9635   0, /*sq_ass_item*/
9636   0, /*sq_ass_slice*/
9637   0, /*sq_contains*/
9638   0, /*sq_inplace_concat*/
9639   0, /*sq_inplace_repeat*/
9640 };
9641
9642 static PyMappingMethods __pyx_tp_as_mapping_VCFProxy = {
9643   __pyx_pw_10TabProxies_8VCFProxy_3__len__, /*mp_length*/
9644   0, /*mp_subscript*/
9645   0, /*mp_ass_subscript*/
9646 };
9647
9648 static PyBufferProcs __pyx_tp_as_buffer_VCFProxy = {
9649   #if PY_MAJOR_VERSION < 3
9650   0, /*bf_getreadbuffer*/
9651   #endif
9652   #if PY_MAJOR_VERSION < 3
9653   0, /*bf_getwritebuffer*/
9654   #endif
9655   #if PY_MAJOR_VERSION < 3
9656   0, /*bf_getsegcount*/
9657   #endif
9658   #if PY_MAJOR_VERSION < 3
9659   0, /*bf_getcharbuffer*/
9660   #endif
9661   #if PY_VERSION_HEX >= 0x02060000
9662   0, /*bf_getbuffer*/
9663   #endif
9664   #if PY_VERSION_HEX >= 0x02060000
9665   0, /*bf_releasebuffer*/
9666   #endif
9667 };
9668
9669 static PyTypeObject __pyx_type_10TabProxies_VCFProxy = {
9670   PyVarObject_HEAD_INIT(0, 0)
9671   __Pyx_NAMESTR("TabProxies.VCFProxy"), /*tp_name*/
9672   sizeof(struct __pyx_obj_10TabProxies_VCFProxy), /*tp_basicsize*/
9673   0, /*tp_itemsize*/
9674   __pyx_tp_dealloc_10TabProxies_TupleProxy, /*tp_dealloc*/
9675   0, /*tp_print*/
9676   0, /*tp_getattr*/
9677   0, /*tp_setattr*/
9678   #if PY_MAJOR_VERSION < 3
9679   0, /*tp_compare*/
9680   #else
9681   0, /*reserved*/
9682   #endif
9683   0, /*tp_repr*/
9684   &__pyx_tp_as_number_VCFProxy, /*tp_as_number*/
9685   &__pyx_tp_as_sequence_VCFProxy, /*tp_as_sequence*/
9686   &__pyx_tp_as_mapping_VCFProxy, /*tp_as_mapping*/
9687   0, /*tp_hash*/
9688   0, /*tp_call*/
9689   0, /*tp_str*/
9690   0, /*tp_getattro*/
9691   __pyx_tp_setattro_10TabProxies_VCFProxy, /*tp_setattro*/
9692   &__pyx_tp_as_buffer_VCFProxy, /*tp_as_buffer*/
9693   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
9694   __Pyx_DOCSTR("Proxy class for access to VCF fields.\n\n    The genotypes are accessed via index.\n    "), /*tp_doc*/
9695   0, /*tp_traverse*/
9696   0, /*tp_clear*/
9697   0, /*tp_richcompare*/
9698   0, /*tp_weaklistoffset*/
9699   0, /*tp_iter*/
9700   0, /*tp_iternext*/
9701   __pyx_methods_10TabProxies_VCFProxy, /*tp_methods*/
9702   0, /*tp_members*/
9703   __pyx_getsets_10TabProxies_VCFProxy, /*tp_getset*/
9704   0, /*tp_base*/
9705   0, /*tp_dict*/
9706   0, /*tp_descr_get*/
9707   0, /*tp_descr_set*/
9708   0, /*tp_dictoffset*/
9709   0, /*tp_init*/
9710   0, /*tp_alloc*/
9711   __pyx_tp_new_10TabProxies_VCFProxy, /*tp_new*/
9712   0, /*tp_free*/
9713   0, /*tp_is_gc*/
9714   0, /*tp_bases*/
9715   0, /*tp_mro*/
9716   0, /*tp_cache*/
9717   0, /*tp_subclasses*/
9718   0, /*tp_weaklist*/
9719   0, /*tp_del*/
9720   #if PY_VERSION_HEX >= 0x02060000
9721   0, /*tp_version_tag*/
9722   #endif
9723 };
9724
9725 static PyMethodDef __pyx_methods[] = {
9726   {0, 0, 0, 0}
9727 };
9728
9729 #if PY_MAJOR_VERSION >= 3
9730 static struct PyModuleDef __pyx_moduledef = {
9731     PyModuleDef_HEAD_INIT,
9732     __Pyx_NAMESTR("TabProxies"),
9733     0, /* m_doc */
9734     -1, /* m_size */
9735     __pyx_methods /* m_methods */,
9736     NULL, /* m_reload */
9737     NULL, /* m_traverse */
9738     NULL, /* m_clear */
9739     NULL /* m_free */
9740 };
9741 #endif
9742
9743 static __Pyx_StringTabEntry __pyx_string_tab[] = {
9744   {&__pyx_kp_u_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 1, 0, 0},
9745   {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
9746   {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
9747   {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
9748   {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0},
9749   {&__pyx_kp_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 0},
9750   {&__pyx_kp_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 0},
9751   {&__pyx_kp_u_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 1, 0, 0},
9752   {&__pyx_kp_s_32, __pyx_k_32, sizeof(__pyx_k_32), 0, 0, 1, 0},
9753   {&__pyx_kp_s_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 0, 1, 0},
9754   {&__pyx_kp_s_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 1, 0},
9755   {&__pyx_kp_s_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 1, 0},
9756   {&__pyx_kp_s_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 0, 1, 0},
9757   {&__pyx_kp_s_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 0, 1, 0},
9758   {&__pyx_kp_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 0},
9759   {&__pyx_kp_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 0},
9760   {&__pyx_kp_s_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 0, 1, 0},
9761   {&__pyx_kp_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 0},
9762   {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
9763   {&__pyx_n_s_57, __pyx_k_57, sizeof(__pyx_k_57), 0, 0, 1, 1},
9764   {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
9765   {&__pyx_kp_s_60, __pyx_k_60, sizeof(__pyx_k_60), 0, 0, 1, 0},
9766   {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
9767   {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
9768   {&__pyx_n_s__AttributeError, __pyx_k__AttributeError, sizeof(__pyx_k__AttributeError), 0, 0, 1, 1},
9769   {&__pyx_n_s__IndexError, __pyx_k__IndexError, sizeof(__pyx_k__IndexError), 0, 0, 1, 1},
9770   {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
9771   {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},
9772   {&__pyx_n_s__StringTypes, __pyx_k__StringTypes, sizeof(__pyx_k__StringTypes), 0, 0, 1, 1},
9773   {&__pyx_n_s__TabProxies, __pyx_k__TabProxies, sizeof(__pyx_k__TabProxies), 0, 0, 1, 1},
9774   {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
9775   {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
9776   {&__pyx_n_s____getattr__, __pyx_k____getattr__, sizeof(__pyx_k____getattr__), 0, 0, 1, 1},
9777   {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
9778   {&__pyx_n_s____setitem__, __pyx_k____setitem__, sizeof(__pyx_k____setitem__), 0, 0, 1, 1},
9779   {&__pyx_n_s____str__, __pyx_k____str__, sizeof(__pyx_k____str__), 0, 0, 1, 1},
9780   {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
9781   {&__pyx_n_s___getindex, __pyx_k___getindex, sizeof(__pyx_k___getindex), 0, 0, 1, 1},
9782   {&__pyx_n_s___setindex, __pyx_k___setindex, sizeof(__pyx_k___setindex), 0, 0, 1, 1},
9783   {&__pyx_n_s__alt, __pyx_k__alt, sizeof(__pyx_k__alt), 0, 0, 1, 1},
9784   {&__pyx_n_s__asDict, __pyx_k__asDict, sizeof(__pyx_k__asDict), 0, 0, 1, 1},
9785   {&__pyx_n_s__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 0, 1, 1},
9786   {&__pyx_n_s__attributes, __pyx_k__attributes, sizeof(__pyx_k__attributes), 0, 0, 1, 1},
9787   {&__pyx_n_s__blockCount, __pyx_k__blockCount, sizeof(__pyx_k__blockCount), 0, 0, 1, 1},
9788   {&__pyx_n_s__blockSizes, __pyx_k__blockSizes, sizeof(__pyx_k__blockSizes), 0, 0, 1, 1},
9789   {&__pyx_n_s__blockStarts, __pyx_k__blockStarts, sizeof(__pyx_k__blockStarts), 0, 0, 1, 1},
9790   {&__pyx_n_s__contig, __pyx_k__contig, sizeof(__pyx_k__contig), 0, 0, 1, 1},
9791   {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
9792   {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
9793   {&__pyx_n_s__end, __pyx_k__end, sizeof(__pyx_k__end), 0, 0, 1, 1},
9794   {&__pyx_n_s__feature, __pyx_k__feature, sizeof(__pyx_k__feature), 0, 0, 1, 1},
9795   {&__pyx_n_s__filter, __pyx_k__filter, sizeof(__pyx_k__filter), 0, 0, 1, 1},
9796   {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
9797   {&__pyx_n_s__frame, __pyx_k__frame, sizeof(__pyx_k__frame), 0, 0, 1, 1},
9798   {&__pyx_n_s__fromDict, __pyx_k__fromDict, sizeof(__pyx_k__fromDict), 0, 0, 1, 1},
9799   {&__pyx_n_s__getdefaultencoding, __pyx_k__getdefaultencoding, sizeof(__pyx_k__getdefaultencoding), 0, 0, 1, 1},
9800   {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
9801   {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
9802   {&__pyx_n_s__indices, __pyx_k__indices, sizeof(__pyx_k__indices), 0, 0, 1, 1},
9803   {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
9804   {&__pyx_n_s__itemRGB, __pyx_k__itemRGB, sizeof(__pyx_k__itemRGB), 0, 0, 1, 1},
9805   {&__pyx_n_s__items, __pyx_k__items, sizeof(__pyx_k__items), 0, 0, 1, 1},
9806   {&__pyx_n_s__join, __pyx_k__join, sizeof(__pyx_k__join), 0, 0, 1, 1},
9807   {&__pyx_n_s__map_key2field, __pyx_k__map_key2field, sizeof(__pyx_k__map_key2field), 0, 0, 1, 1},
9808   {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
9809   {&__pyx_n_s__pos, __pyx_k__pos, sizeof(__pyx_k__pos), 0, 0, 1, 1},
9810   {&__pyx_n_s__qual, __pyx_k__qual, sizeof(__pyx_k__qual), 0, 0, 1, 1},
9811   {&__pyx_n_s__quote, __pyx_k__quote, sizeof(__pyx_k__quote), 0, 0, 1, 1},
9812   {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
9813   {&__pyx_n_s__ref, __pyx_k__ref, sizeof(__pyx_k__ref), 0, 0, 1, 1},
9814   {&__pyx_n_s__score, __pyx_k__score, sizeof(__pyx_k__score), 0, 0, 1, 1},
9815   {&__pyx_n_s__source, __pyx_k__source, sizeof(__pyx_k__source), 0, 0, 1, 1},
9816   {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1},
9817   {&__pyx_n_s__start, __pyx_k__start, sizeof(__pyx_k__start), 0, 0, 1, 1},
9818   {&__pyx_n_s__strand, __pyx_k__strand, sizeof(__pyx_k__strand), 0, 0, 1, 1},
9819   {&__pyx_n_s__strip, __pyx_k__strip, sizeof(__pyx_k__strip), 0, 0, 1, 1},
9820   {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
9821   {&__pyx_n_s__thickEnd, __pyx_k__thickEnd, sizeof(__pyx_k__thickEnd), 0, 0, 1, 1},
9822   {&__pyx_n_s__thickStart, __pyx_k__thickStart, sizeof(__pyx_k__thickStart), 0, 0, 1, 1},
9823   {&__pyx_n_s__toDot, __pyx_k__toDot, sizeof(__pyx_k__toDot), 0, 0, 1, 1},
9824   {&__pyx_n_s__types, __pyx_k__types, sizeof(__pyx_k__types), 0, 0, 1, 1},
9825   {&__pyx_n_s__v, __pyx_k__v, sizeof(__pyx_k__v), 0, 0, 1, 1},
9826   {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
9827   {&__pyx_n_s__xrange, __pyx_k__xrange, sizeof(__pyx_k__xrange), 0, 0, 1, 1},
9828   {0, 0, 0, 0, 0, 0, 0}
9829 };
9830 static int __Pyx_InitCachedBuiltins(void) {
9831   __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9832   __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9833   __pyx_builtin_IndexError = __Pyx_GetName(__pyx_b, __pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9834   __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9835   __pyx_builtin_StopIteration = __Pyx_GetName(__pyx_b, __pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9836   #if PY_MAJOR_VERSION >= 3
9837   __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9838   #else
9839   __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9840   #endif
9841   __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9842   __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9843   return 0;
9844   __pyx_L1_error:;
9845   return -1;
9846 }
9847
9848 static int __Pyx_InitCachedConstants(void) {
9849   __Pyx_RefNannyDeclarations
9850   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
9851
9852   /* "TabProxies.pyx":43
9853  *         return s
9854  *     elif PyUnicode_Check(s):
9855  *         return s.encode('ascii')             # <<<<<<<<<<<<<<
9856  *     else:
9857  *         raise TypeError, u"Argument must be string, bytes or unicode."
9858  */
9859   __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9860   __Pyx_GOTREF(__pyx_k_tuple_2);
9861   __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
9862   PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_n_s__ascii));
9863   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ascii));
9864   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
9865
9866   /* "TabProxies.pyx":63
9867  *         return s
9868  *     elif PyBytes_Check(s):
9869  *         return s.decode('ascii')             # <<<<<<<<<<<<<<
9870  *     else:
9871  *         # assume unicode
9872  */
9873   __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9874   __Pyx_GOTREF(__pyx_k_tuple_4);
9875   __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
9876   PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, ((PyObject *)__pyx_n_s__ascii));
9877   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ascii));
9878   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
9879
9880   /* "TabProxies.pyx":144
9881  *         self.data = <char*>malloc( s )
9882  *         if self.data == NULL:
9883  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
9884  *         self.nbytes = nbytes
9885  *         memcpy( <char*>self.data, buffer, s )
9886  */
9887   __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9888   __Pyx_GOTREF(__pyx_k_tuple_8);
9889   __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
9890   PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_7));
9891   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
9892   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
9893
9894   /* "TabProxies.pyx":201
9895  *         self.fields = <char **>calloc( max_fields, sizeof(char *) )
9896  *         if self.fields == NULL:
9897  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
9898  * 
9899  *         #################################
9900  */
9901   __pyx_k_tuple_10 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9902   __Pyx_GOTREF(__pyx_k_tuple_10);
9903   __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
9904   PyTuple_SET_ITEM(__pyx_k_tuple_10, 0, ((PyObject *)__pyx_kp_s_7));
9905   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
9906   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));
9907
9908   /* "TabProxies.pyx":230
9909  *         cdef int i = index
9910  *         if i < 0: i += self.nfields
9911  *         if i < 0: raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
9912  *         i += self.offset
9913  *         if i >= self.nfields:
9914  */
9915   __pyx_k_tuple_13 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9916   __Pyx_GOTREF(__pyx_k_tuple_13);
9917   __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
9918   PyTuple_SET_ITEM(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_kp_s_12));
9919   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12));
9920   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
9921
9922   /* "TabProxies.pyx":248
9923  *         '''set item at idx index.'''
9924  *         cdef int idx = index
9925  *         if idx < 0: raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
9926  *         if idx >= self.nfields:
9927  *             raise IndexError( "list index out of range" )
9928  */
9929   __pyx_k_tuple_15 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9930   __Pyx_GOTREF(__pyx_k_tuple_15);
9931   __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
9932   PyTuple_SET_ITEM(__pyx_k_tuple_15, 0, ((PyObject *)__pyx_kp_s_12));
9933   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12));
9934   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
9935
9936   /* "TabProxies.pyx":250
9937  *         if idx < 0: raise IndexError( "list index out of range" )
9938  *         if idx >= self.nfields:
9939  *             raise IndexError( "list index out of range" )             # <<<<<<<<<<<<<<
9940  * 
9941  *         if isNew( self.fields[idx], self.data, self.nbytes ):
9942  */
9943   __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9944   __Pyx_GOTREF(__pyx_k_tuple_16);
9945   __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
9946   PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_kp_s_12));
9947   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12));
9948   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
9949
9950   /* "TabProxies.pyx":266
9951  *         self.fields[idx] = <char*>malloc( (strlen( tmp ) + 1) * sizeof(char) )
9952  *         if self.fields[idx] == NULL:
9953  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
9954  *         strcpy( self.fields[idx], tmp )
9955  * 
9956  */
9957   __pyx_k_tuple_17 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9958   __Pyx_GOTREF(__pyx_k_tuple_17);
9959   __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
9960   PyTuple_SET_ITEM(__pyx_k_tuple_17, 0, ((PyObject *)__pyx_kp_s_7));
9961   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
9962   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
9963
9964   /* "TabProxies.pyx":306
9965  *             cpy = <char*>calloc( sizeof(char), self.nbytes+1 )
9966  *             if cpy == NULL:
9967  *                 raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
9968  *             memcpy( cpy, self.data, self.nbytes+1)
9969  *             for x from 0 <= x < self.nbytes:
9970  */
9971   __pyx_k_tuple_19 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9972   __Pyx_GOTREF(__pyx_k_tuple_19);
9973   __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
9974   PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, ((PyObject *)__pyx_kp_s_7));
9975   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
9976   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
9977
9978   /* "TabProxies.pyx":312
9979  *             result = cpy[:self.nbytes]
9980  *             free(cpy)
9981  *             return result.decode('ascii')             # <<<<<<<<<<<<<<
9982  * 
9983  * def toDot( v ):
9984  */
9985   __pyx_k_tuple_20 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9986   __Pyx_GOTREF(__pyx_k_tuple_20);
9987   __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
9988   PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, ((PyObject *)__pyx_n_s__ascii));
9989   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ascii));
9990   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));
9991
9992   /* "TabProxies.pyx":355
9993  *     property contig:
9994  *        '''contig of feature.'''
9995  *        def __get__( self ): return self._getindex( 0 )             # <<<<<<<<<<<<<<
9996  *        def __set__( self, value ): self._setindex( 0, value )
9997  * 
9998  */
9999   __pyx_k_tuple_23 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10000   __Pyx_GOTREF(__pyx_k_tuple_23);
10001   __Pyx_INCREF(__pyx_int_0);
10002   PyTuple_SET_ITEM(__pyx_k_tuple_23, 0, __pyx_int_0);
10003   __Pyx_GIVEREF(__pyx_int_0);
10004   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));
10005
10006   /* "TabProxies.pyx":360
10007  *     property source:
10008  *        '''feature source.'''
10009  *        def __get__( self ): return self._getindex( 1 )             # <<<<<<<<<<<<<<
10010  *        def __set__( self, value ): self._setindex( 1, value )
10011  * 
10012  */
10013   __pyx_k_tuple_24 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10014   __Pyx_GOTREF(__pyx_k_tuple_24);
10015   __Pyx_INCREF(__pyx_int_1);
10016   PyTuple_SET_ITEM(__pyx_k_tuple_24, 0, __pyx_int_1);
10017   __Pyx_GIVEREF(__pyx_int_1);
10018   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));
10019
10020   /* "TabProxies.pyx":365
10021  *     property feature:
10022  *        '''feature name.'''
10023  *        def __get__( self ): return self._getindex( 2 )             # <<<<<<<<<<<<<<
10024  *        def __set__( self, value ): self._setindex( 2, value )
10025  * 
10026  */
10027   __pyx_k_tuple_25 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10028   __Pyx_GOTREF(__pyx_k_tuple_25);
10029   __Pyx_INCREF(__pyx_int_2);
10030   PyTuple_SET_ITEM(__pyx_k_tuple_25, 0, __pyx_int_2);
10031   __Pyx_GIVEREF(__pyx_int_2);
10032   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
10033
10034   /* "TabProxies.pyx":370
10035  *     property start:
10036  *        '''feature start (in 0-based open/closed coordinates).'''
10037  *        def __get__( self ): return int( self._getindex( 3 )) - 1             # <<<<<<<<<<<<<<
10038  *        def __set__( self, value ): self._setindex( 3, str(value+1) )
10039  * 
10040  */
10041   __pyx_k_tuple_26 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10042   __Pyx_GOTREF(__pyx_k_tuple_26);
10043   __Pyx_INCREF(__pyx_int_3);
10044   PyTuple_SET_ITEM(__pyx_k_tuple_26, 0, __pyx_int_3);
10045   __Pyx_GIVEREF(__pyx_int_3);
10046   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));
10047
10048   /* "TabProxies.pyx":375
10049  *     property end:
10050  *        '''feature end (in 0-based open/closed coordinates).'''
10051  *        def __get__( self ): return int( self._getindex( 4 ) )             # <<<<<<<<<<<<<<
10052  *        def __set__( self, value ): self._setindex( 4, str(value) )
10053  * 
10054  */
10055   __pyx_k_tuple_27 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10056   __Pyx_GOTREF(__pyx_k_tuple_27);
10057   __Pyx_INCREF(__pyx_int_4);
10058   PyTuple_SET_ITEM(__pyx_k_tuple_27, 0, __pyx_int_4);
10059   __Pyx_GIVEREF(__pyx_int_4);
10060   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27));
10061
10062   /* "TabProxies.pyx":381
10063  *        '''feature score.'''
10064  *        def __get__( self ):
10065  *            v = self._getindex(5)             # <<<<<<<<<<<<<<
10066  *            if v == "" or v[0] == '.':
10067  *                return None
10068  */
10069   __pyx_k_tuple_28 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10070   __Pyx_GOTREF(__pyx_k_tuple_28);
10071   __Pyx_INCREF(__pyx_int_5);
10072   PyTuple_SET_ITEM(__pyx_k_tuple_28, 0, __pyx_int_5);
10073   __Pyx_GIVEREF(__pyx_int_5);
10074   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
10075
10076   /* "TabProxies.pyx":391
10077  *     property strand:
10078  *        '''feature strand.'''
10079  *        def __get__( self ): return self._getindex( 6 )             # <<<<<<<<<<<<<<
10080  *        def __set__( self, value ): self._setindex( 6, value )
10081  * 
10082  */
10083   __pyx_k_tuple_29 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10084   __Pyx_GOTREF(__pyx_k_tuple_29);
10085   __Pyx_INCREF(__pyx_int_6);
10086   PyTuple_SET_ITEM(__pyx_k_tuple_29, 0, __pyx_int_6);
10087   __Pyx_GIVEREF(__pyx_int_6);
10088   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));
10089
10090   /* "TabProxies.pyx":396
10091  *     property frame:
10092  *        '''feature frame.'''
10093  *        def __get__( self ): return self._getindex( 7 )             # <<<<<<<<<<<<<<
10094  *        def __set__( self, value ): self._setindex( 7, value )
10095  * 
10096  */
10097   __pyx_k_tuple_30 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10098   __Pyx_GOTREF(__pyx_k_tuple_30);
10099   __Pyx_INCREF(__pyx_int_7);
10100   PyTuple_SET_ITEM(__pyx_k_tuple_30, 0, __pyx_int_7);
10101   __Pyx_GIVEREF(__pyx_int_7);
10102   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));
10103
10104   /* "TabProxies.pyx":405
10105  *                return self._attributes
10106  *            else:
10107  *                return self._getindex( 8 )             # <<<<<<<<<<<<<<
10108  *        def __set__( self, value ):
10109  *            if self.hasOwnAttributes:
10110  */
10111   __pyx_k_tuple_31 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10112   __Pyx_GOTREF(__pyx_k_tuple_31);
10113   __Pyx_INCREF(__pyx_int_8);
10114   PyTuple_SET_ITEM(__pyx_k_tuple_31, 0, __pyx_int_8);
10115   __Pyx_GIVEREF(__pyx_int_8);
10116   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));
10117
10118   /* "TabProxies.pyx":428
10119  * 
10120  *         # separate into fields
10121  *         fields = [ x.strip() for x in attributes.split(";")[:-1]]             # <<<<<<<<<<<<<<
10122  * 
10123  *         result = {}
10124  */
10125   __pyx_k_tuple_33 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10126   __Pyx_GOTREF(__pyx_k_tuple_33);
10127   __Pyx_INCREF(((PyObject *)__pyx_kp_s_32));
10128   PyTuple_SET_ITEM(__pyx_k_tuple_33, 0, ((PyObject *)__pyx_kp_s_32));
10129   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_32));
10130   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33));
10131
10132   /* "TabProxies.pyx":434
10133  *         for f in fields:
10134  * 
10135  *             d = [ x.strip() for x in f.split(" ")]             # <<<<<<<<<<<<<<
10136  * 
10137  *             n,v = d[0], d[1]
10138  */
10139   __pyx_k_tuple_35 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10140   __Pyx_GOTREF(__pyx_k_tuple_35);
10141   __Pyx_INCREF(((PyObject *)__pyx_kp_s_34));
10142   PyTuple_SET_ITEM(__pyx_k_tuple_35, 0, ((PyObject *)__pyx_kp_s_34));
10143   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_34));
10144   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35));
10145
10146   /* "TabProxies.pyx":476
10147  *         self._attributes = <char *>calloc( l + 1, sizeof(char) )
10148  *         if self._attributes == NULL:
10149  *             raise ValueError("out of memory" )             # <<<<<<<<<<<<<<
10150  *         memcpy( self._attributes, p, l )
10151  * 
10152  */
10153   __pyx_k_tuple_40 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10154   __Pyx_GOTREF(__pyx_k_tuple_40);
10155   __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
10156   PyTuple_SET_ITEM(__pyx_k_tuple_40, 0, ((PyObject *)__pyx_kp_s_7));
10157   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
10158   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));
10159
10160   /* "TabProxies.pyx":514
10161  *         '''return a list of attributes defined in this entry.'''
10162  *         r = self.attributes
10163  *         return [ x.strip().split(" ")[0] for x in r.split(";") if x.strip() != '' ]             # <<<<<<<<<<<<<<
10164  * 
10165  *     def __getitem__(self, key):
10166  */
10167   __pyx_k_tuple_42 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10168   __Pyx_GOTREF(__pyx_k_tuple_42);
10169   __Pyx_INCREF(((PyObject *)__pyx_kp_s_32));
10170   PyTuple_SET_ITEM(__pyx_k_tuple_42, 0, ((PyObject *)__pyx_kp_s_32));
10171   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_32));
10172   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_42));
10173   __pyx_k_tuple_43 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10174   __Pyx_GOTREF(__pyx_k_tuple_43);
10175   __Pyx_INCREF(((PyObject *)__pyx_kp_s_34));
10176   PyTuple_SET_ITEM(__pyx_k_tuple_43, 0, ((PyObject *)__pyx_kp_s_34));
10177   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_34));
10178   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_43));
10179
10180   /* "TabProxies.pyx":621
10181  * 
10182  *         if self.nfields < 3:
10183  *             raise ValueError( "bed format requires at least three columns" )             # <<<<<<<<<<<<<<
10184  * 
10185  *         # determines bed format
10186  */
10187   __pyx_k_tuple_47 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10188   __Pyx_GOTREF(__pyx_k_tuple_47);
10189   __Pyx_INCREF(((PyObject *)__pyx_kp_s_46));
10190   PyTuple_SET_ITEM(__pyx_k_tuple_47, 0, ((PyObject *)__pyx_kp_s_46));
10191   __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_46));
10192   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47));
10193
10194   /* "TabProxies.pyx":314
10195  *             return result.decode('ascii')
10196  * 
10197  * def toDot( v ):             # <<<<<<<<<<<<<<
10198  *     '''convert value to '.' if None'''
10199  *     if v == None: return "."
10200  */
10201   __pyx_k_tuple_58 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10202   __Pyx_GOTREF(__pyx_k_tuple_58);
10203   __Pyx_INCREF(((PyObject *)__pyx_n_s__v));
10204   PyTuple_SET_ITEM(__pyx_k_tuple_58, 0, ((PyObject *)__pyx_n_s__v));
10205   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v));
10206   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58));
10207   __pyx_k_codeobj_59 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_60, __pyx_n_s__toDot, 314, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10208
10209   /* "TabProxies.pyx":319
10210  *     else: return str(v)
10211  * 
10212  * def quote( v ):             # <<<<<<<<<<<<<<
10213  *     '''return a quoted attribute.'''
10214  *     if type(v) in types.StringTypes:
10215  */
10216   __pyx_k_tuple_61 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10217   __Pyx_GOTREF(__pyx_k_tuple_61);
10218   __Pyx_INCREF(((PyObject *)__pyx_n_s__v));
10219   PyTuple_SET_ITEM(__pyx_k_tuple_61, 0, ((PyObject *)__pyx_n_s__v));
10220   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v));
10221   __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_61));
10222   __pyx_k_codeobj_62 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_60, __pyx_n_s__quote, 319, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10223   __Pyx_RefNannyFinishContext();
10224   return 0;
10225   __pyx_L1_error:;
10226   __Pyx_RefNannyFinishContext();
10227   return -1;
10228 }
10229
10230 static int __Pyx_InitGlobals(void) {
10231   if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10232   __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10233   __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10234   __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10235   __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10236   __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10237   __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10238   __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10239   __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10240   __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10241   __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10242   __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10243   __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10244   return 0;
10245   __pyx_L1_error:;
10246   return -1;
10247 }
10248
10249 #if PY_MAJOR_VERSION < 3
10250 PyMODINIT_FUNC initTabProxies(void); /*proto*/
10251 PyMODINIT_FUNC initTabProxies(void)
10252 #else
10253 PyMODINIT_FUNC PyInit_TabProxies(void); /*proto*/
10254 PyMODINIT_FUNC PyInit_TabProxies(void)
10255 #endif
10256 {
10257   PyObject *__pyx_t_1 = NULL;
10258   PyObject *__pyx_t_2 = NULL;
10259   int __pyx_t_3;
10260   __Pyx_RefNannyDeclarations
10261   #if CYTHON_REFNANNY
10262   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
10263   if (!__Pyx_RefNanny) {
10264       PyErr_Clear();
10265       __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
10266       if (!__Pyx_RefNanny)
10267           Py_FatalError("failed to import 'refnanny' module");
10268   }
10269   #endif
10270   __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_TabProxies(void)", 0);
10271   if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10272   __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10273   __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10274   #ifdef __Pyx_CyFunction_USED
10275   if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10276   #endif
10277   #ifdef __Pyx_FusedFunction_USED
10278   if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10279   #endif
10280   #ifdef __Pyx_Generator_USED
10281   if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10282   #endif
10283   /*--- Library function declarations ---*/
10284   /*--- Threads initialization code ---*/
10285   #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
10286   #ifdef WITH_THREAD /* Python build with threading support? */
10287   PyEval_InitThreads();
10288   #endif
10289   #endif
10290   /*--- Module creation code ---*/
10291   #if PY_MAJOR_VERSION < 3
10292   __pyx_m = Py_InitModule4(__Pyx_NAMESTR("TabProxies"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
10293   #else
10294   __pyx_m = PyModule_Create(&__pyx_moduledef);
10295   #endif
10296   if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10297   #if PY_MAJOR_VERSION < 3
10298   Py_INCREF(__pyx_m);
10299   #endif
10300   __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
10301   if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10302   if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10303   /*--- Initialize various global constants etc. ---*/
10304   if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10305   if (__pyx_module_is_main_TabProxies) {
10306     if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10307   }
10308   /*--- Builtin init code ---*/
10309   if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10310   /*--- Constants init code ---*/
10311   if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10312   /*--- Global init code ---*/
10313   __pyx_v_10TabProxies__FILENAME_ENCODING = ((PyObject*)Py_None); Py_INCREF(Py_None);
10314   /*--- Variable export code ---*/
10315   /*--- Function export code ---*/
10316   /*--- Type init code ---*/
10317   __pyx_vtabptr_10TabProxies_TupleProxy = &__pyx_vtable_10TabProxies_TupleProxy;
10318   __pyx_vtable_10TabProxies_TupleProxy.getMaxFields = (int (*)(struct __pyx_obj_10TabProxies_TupleProxy *, size_t))__pyx_f_10TabProxies_10TupleProxy_getMaxFields;
10319   __pyx_vtable_10TabProxies_TupleProxy.take = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_10TupleProxy_take;
10320   __pyx_vtable_10TabProxies_TupleProxy.present = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_10TupleProxy_present;
10321   __pyx_vtable_10TabProxies_TupleProxy.copy = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_10TupleProxy_copy;
10322   __pyx_vtable_10TabProxies_TupleProxy.update = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_10TupleProxy_update;
10323   if (PyType_Ready(&__pyx_type_10TabProxies_TupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10324   {
10325     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_TupleProxy, "__setitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10326     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10327       __pyx_wrapperbase_10TabProxies_10TupleProxy_10__setitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10328       __pyx_wrapperbase_10TabProxies_10TupleProxy_10__setitem__.doc = __pyx_doc_10TabProxies_10TupleProxy_10__setitem__;
10329       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_10TupleProxy_10__setitem__;
10330     }
10331   }
10332   {
10333     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_TupleProxy, "__next__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10334     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10335       __pyx_wrapperbase_10TabProxies_10TupleProxy_16__next__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10336       __pyx_wrapperbase_10TabProxies_10TupleProxy_16__next__.doc = __pyx_doc_10TabProxies_10TupleProxy_16__next__;
10337       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_10TupleProxy_16__next__;
10338     }
10339   }
10340   {
10341     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_TupleProxy, "__str__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10342     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10343       __pyx_wrapperbase_10TabProxies_10TupleProxy_18__str__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10344       __pyx_wrapperbase_10TabProxies_10TupleProxy_18__str__.doc = __pyx_doc_10TabProxies_10TupleProxy_18__str__;
10345       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_10TupleProxy_18__str__;
10346     }
10347   }
10348   if (__Pyx_SetVtable(__pyx_type_10TabProxies_TupleProxy.tp_dict, __pyx_vtabptr_10TabProxies_TupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10349   if (__Pyx_SetAttrString(__pyx_m, "TupleProxy", (PyObject *)&__pyx_type_10TabProxies_TupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10350   __pyx_ptype_10TabProxies_TupleProxy = &__pyx_type_10TabProxies_TupleProxy;
10351   __pyx_vtabptr_10TabProxies_GTFProxy = &__pyx_vtable_10TabProxies_GTFProxy;
10352   __pyx_vtable_10TabProxies_GTFProxy.__pyx_base = *__pyx_vtabptr_10TabProxies_TupleProxy;
10353   __pyx_vtable_10TabProxies_GTFProxy.__pyx_base.getMaxFields = (int (*)(struct __pyx_obj_10TabProxies_TupleProxy *, size_t))__pyx_f_10TabProxies_8GTFProxy_getMaxFields;
10354   __pyx_vtable_10TabProxies_GTFProxy.getAttributes = (char *(*)(struct __pyx_obj_10TabProxies_GTFProxy *))__pyx_f_10TabProxies_8GTFProxy_getAttributes;
10355   __pyx_type_10TabProxies_GTFProxy.tp_base = __pyx_ptype_10TabProxies_TupleProxy;
10356   if (PyType_Ready(&__pyx_type_10TabProxies_GTFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10357   {
10358     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_GTFProxy, "__getattr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10359     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10360       __pyx_wrapperbase_10TabProxies_8GTFProxy_16__getattr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10361       __pyx_wrapperbase_10TabProxies_8GTFProxy_16__getattr__.doc = __pyx_doc_10TabProxies_8GTFProxy_16__getattr__;
10362       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_8GTFProxy_16__getattr__;
10363     }
10364   }
10365   if (__Pyx_SetVtable(__pyx_type_10TabProxies_GTFProxy.tp_dict, __pyx_vtabptr_10TabProxies_GTFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10366   if (__Pyx_SetAttrString(__pyx_m, "GTFProxy", (PyObject *)&__pyx_type_10TabProxies_GTFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10367   __pyx_ptype_10TabProxies_GTFProxy = &__pyx_type_10TabProxies_GTFProxy;
10368   __pyx_vtabptr_10TabProxies_NamedTupleProxy = &__pyx_vtable_10TabProxies_NamedTupleProxy;
10369   __pyx_vtable_10TabProxies_NamedTupleProxy.__pyx_base = *__pyx_vtabptr_10TabProxies_TupleProxy;
10370   __pyx_type_10TabProxies_NamedTupleProxy.tp_base = __pyx_ptype_10TabProxies_TupleProxy;
10371   if (PyType_Ready(&__pyx_type_10TabProxies_NamedTupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10372   {
10373     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_NamedTupleProxy, "__setattr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10374     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10375       __pyx_wrapperbase_10TabProxies_15NamedTupleProxy___setattr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10376       __pyx_wrapperbase_10TabProxies_15NamedTupleProxy___setattr__.doc = __pyx_doc_10TabProxies_15NamedTupleProxy___setattr__;
10377       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_15NamedTupleProxy___setattr__;
10378     }
10379   }
10380   if (__Pyx_SetVtable(__pyx_type_10TabProxies_NamedTupleProxy.tp_dict, __pyx_vtabptr_10TabProxies_NamedTupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10381   if (__Pyx_SetAttrString(__pyx_m, "NamedTupleProxy", (PyObject *)&__pyx_type_10TabProxies_NamedTupleProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10382   __pyx_ptype_10TabProxies_NamedTupleProxy = &__pyx_type_10TabProxies_NamedTupleProxy;
10383   __pyx_vtabptr_10TabProxies_BedProxy = &__pyx_vtable_10TabProxies_BedProxy;
10384   __pyx_vtable_10TabProxies_BedProxy.__pyx_base = *__pyx_vtabptr_10TabProxies_NamedTupleProxy;
10385   __pyx_vtable_10TabProxies_BedProxy.__pyx_base.__pyx_base.getMaxFields = (int (*)(struct __pyx_obj_10TabProxies_TupleProxy *, size_t))__pyx_f_10TabProxies_8BedProxy_getMaxFields;
10386   __pyx_vtable_10TabProxies_BedProxy.__pyx_base.__pyx_base.update = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_8BedProxy_update;
10387   __pyx_type_10TabProxies_BedProxy.tp_base = __pyx_ptype_10TabProxies_NamedTupleProxy;
10388   if (PyType_Ready(&__pyx_type_10TabProxies_BedProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10389   {
10390     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_BedProxy, "__setattr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10391     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10392       __pyx_wrapperbase_10TabProxies_8BedProxy_2__setattr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10393       __pyx_wrapperbase_10TabProxies_8BedProxy_2__setattr__.doc = __pyx_doc_10TabProxies_8BedProxy_2__setattr__;
10394       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_8BedProxy_2__setattr__;
10395     }
10396   }
10397   if (__Pyx_SetVtable(__pyx_type_10TabProxies_BedProxy.tp_dict, __pyx_vtabptr_10TabProxies_BedProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10398   if (__Pyx_SetAttrString(__pyx_m, "BedProxy", (PyObject *)&__pyx_type_10TabProxies_BedProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10399   __pyx_ptype_10TabProxies_BedProxy = &__pyx_type_10TabProxies_BedProxy;
10400   __pyx_vtabptr_10TabProxies_VCFProxy = &__pyx_vtable_10TabProxies_VCFProxy;
10401   __pyx_vtable_10TabProxies_VCFProxy.__pyx_base = *__pyx_vtabptr_10TabProxies_NamedTupleProxy;
10402   __pyx_vtable_10TabProxies_VCFProxy.__pyx_base.__pyx_base.update = (PyObject *(*)(struct __pyx_obj_10TabProxies_TupleProxy *, char *, size_t))__pyx_f_10TabProxies_8VCFProxy_update;
10403   __pyx_type_10TabProxies_VCFProxy.tp_base = __pyx_ptype_10TabProxies_NamedTupleProxy;
10404   if (PyType_Ready(&__pyx_type_10TabProxies_VCFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10405   {
10406     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_VCFProxy, "__len__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10407     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10408       __pyx_wrapperbase_10TabProxies_8VCFProxy_2__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10409       __pyx_wrapperbase_10TabProxies_8VCFProxy_2__len__.doc = __pyx_doc_10TabProxies_8VCFProxy_2__len__;
10410       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_8VCFProxy_2__len__;
10411     }
10412   }
10413   {
10414     PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_10TabProxies_VCFProxy, "__setattr__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10415     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
10416       __pyx_wrapperbase_10TabProxies_8VCFProxy_4__setattr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
10417       __pyx_wrapperbase_10TabProxies_8VCFProxy_4__setattr__.doc = __pyx_doc_10TabProxies_8VCFProxy_4__setattr__;
10418       ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10TabProxies_8VCFProxy_4__setattr__;
10419     }
10420   }
10421   if (__Pyx_SetVtable(__pyx_type_10TabProxies_VCFProxy.tp_dict, __pyx_vtabptr_10TabProxies_VCFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10422   if (__Pyx_SetAttrString(__pyx_m, "VCFProxy", (PyObject *)&__pyx_type_10TabProxies_VCFProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10423   __pyx_ptype_10TabProxies_VCFProxy = &__pyx_type_10TabProxies_VCFProxy;
10424   /*--- Type import code ---*/
10425   __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10426   __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10427   /*--- Variable import code ---*/
10428   /*--- Function import code ---*/
10429   /*--- Execution code ---*/
10430
10431   /* "TabProxies.pyx":1
10432  * import types, sys             # <<<<<<<<<<<<<<
10433  * 
10434  * from cpython.version cimport PY_MAJOR_VERSION
10435  */
10436   __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__types), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10437   __Pyx_GOTREF(__pyx_t_1);
10438   if (PyObject_SetAttr(__pyx_m, __pyx_n_s__types, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10439   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10440   __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10441   __Pyx_GOTREF(__pyx_t_1);
10442   if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10443   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10444
10445   /* "TabProxies.pyx":15
10446  * # filename encoding (copied from lxml.etree.pyx)
10447  * cdef str _FILENAME_ENCODING
10448  * _FILENAME_ENCODING = sys.getfilesystemencoding()             # <<<<<<<<<<<<<<
10449  * if _FILENAME_ENCODING is None:
10450  *     _FILENAME_ENCODING = sys.getdefaultencoding()
10451  */
10452   __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10453   __Pyx_GOTREF(__pyx_t_1);
10454   __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_57); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10455   __Pyx_GOTREF(__pyx_t_2);
10456   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10457   __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10458   __Pyx_GOTREF(__pyx_t_1);
10459   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10460   if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10461   __Pyx_XGOTREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10462   __Pyx_DECREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10463   __Pyx_GIVEREF(__pyx_t_1);
10464   __pyx_v_10TabProxies__FILENAME_ENCODING = ((PyObject*)__pyx_t_1);
10465   __pyx_t_1 = 0;
10466
10467   /* "TabProxies.pyx":16
10468  * cdef str _FILENAME_ENCODING
10469  * _FILENAME_ENCODING = sys.getfilesystemencoding()
10470  * if _FILENAME_ENCODING is None:             # <<<<<<<<<<<<<<
10471  *     _FILENAME_ENCODING = sys.getdefaultencoding()
10472  * if _FILENAME_ENCODING is None:
10473  */
10474   __pyx_t_3 = (__pyx_v_10TabProxies__FILENAME_ENCODING == ((PyObject*)Py_None));
10475   if (__pyx_t_3) {
10476
10477     /* "TabProxies.pyx":17
10478  * _FILENAME_ENCODING = sys.getfilesystemencoding()
10479  * if _FILENAME_ENCODING is None:
10480  *     _FILENAME_ENCODING = sys.getdefaultencoding()             # <<<<<<<<<<<<<<
10481  * if _FILENAME_ENCODING is None:
10482  *     _FILENAME_ENCODING = 'ascii'
10483  */
10484     __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10485     __Pyx_GOTREF(__pyx_t_1);
10486     __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__getdefaultencoding); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10487     __Pyx_GOTREF(__pyx_t_2);
10488     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10489     __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10490     __Pyx_GOTREF(__pyx_t_1);
10491     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10492     if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10493     __Pyx_XGOTREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10494     __Pyx_DECREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10495     __Pyx_GIVEREF(__pyx_t_1);
10496     __pyx_v_10TabProxies__FILENAME_ENCODING = ((PyObject*)__pyx_t_1);
10497     __pyx_t_1 = 0;
10498     goto __pyx_L2;
10499   }
10500   __pyx_L2:;
10501
10502   /* "TabProxies.pyx":18
10503  * if _FILENAME_ENCODING is None:
10504  *     _FILENAME_ENCODING = sys.getdefaultencoding()
10505  * if _FILENAME_ENCODING is None:             # <<<<<<<<<<<<<<
10506  *     _FILENAME_ENCODING = 'ascii'
10507  * 
10508  */
10509   __pyx_t_3 = (__pyx_v_10TabProxies__FILENAME_ENCODING == ((PyObject*)Py_None));
10510   if (__pyx_t_3) {
10511
10512     /* "TabProxies.pyx":19
10513  *     _FILENAME_ENCODING = sys.getdefaultencoding()
10514  * if _FILENAME_ENCODING is None:
10515  *     _FILENAME_ENCODING = 'ascii'             # <<<<<<<<<<<<<<
10516  * 
10517  * cdef bytes _my_encodeFilename(object filename):
10518  */
10519     __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
10520     __Pyx_XGOTREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10521     __Pyx_DECREF(((PyObject *)__pyx_v_10TabProxies__FILENAME_ENCODING));
10522     __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ascii));
10523     __pyx_v_10TabProxies__FILENAME_ENCODING = __pyx_n_s__ascii;
10524     goto __pyx_L3;
10525   }
10526   __pyx_L3:;
10527
10528   /* "TabProxies.pyx":314
10529  *             return result.decode('ascii')
10530  * 
10531  * def toDot( v ):             # <<<<<<<<<<<<<<
10532  *     '''convert value to '.' if None'''
10533  *     if v == None: return "."
10534  */
10535   __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10TabProxies_1toDot, NULL, __pyx_n_s__TabProxies); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10536   __Pyx_GOTREF(__pyx_t_1);
10537   if (PyObject_SetAttr(__pyx_m, __pyx_n_s__toDot, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10538   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10539
10540   /* "TabProxies.pyx":319
10541  *     else: return str(v)
10542  * 
10543  * def quote( v ):             # <<<<<<<<<<<<<<
10544  *     '''return a quoted attribute.'''
10545  *     if type(v) in types.StringTypes:
10546  */
10547   __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10TabProxies_3quote, NULL, __pyx_n_s__TabProxies); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10548   __Pyx_GOTREF(__pyx_t_1);
10549   if (PyObject_SetAttr(__pyx_m, __pyx_n_s__quote, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10550   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10551
10552   /* "TabProxies.pyx":573
10553  * cdef class NamedTupleProxy( TupleProxy ):
10554  * 
10555  *     map_key2field = {}             # <<<<<<<<<<<<<<
10556  * 
10557  *     def __setattr__(self, key, value ):
10558  */
10559   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10560   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
10561   if (PyDict_SetItem((PyObject *)__pyx_ptype_10TabProxies_NamedTupleProxy->tp_dict, __pyx_n_s__map_key2field, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10562   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
10563   PyType_Modified(__pyx_ptype_10TabProxies_NamedTupleProxy);
10564
10565   /* "TabProxies.pyx":595
10566  *     This class represents a GTF entry for fast read-access.
10567  *     '''
10568  *     map_key2field = {             # <<<<<<<<<<<<<<
10569  *         'contig' : (0, bytes),
10570  *         'start' : (1, int),
10571  */
10572   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10573   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
10574
10575   /* "TabProxies.pyx":596
10576  *     '''
10577  *     map_key2field = {
10578  *         'contig' : (0, bytes),             # <<<<<<<<<<<<<<
10579  *         'start' : (1, int),
10580  *         'end' : (2, int),
10581  */
10582   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10583   __Pyx_GOTREF(__pyx_t_2);
10584   __Pyx_INCREF(__pyx_int_0);
10585   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
10586   __Pyx_GIVEREF(__pyx_int_0);
10587   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10588   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10589   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10590   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__contig), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10591   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10592
10593   /* "TabProxies.pyx":597
10594  *     map_key2field = {
10595  *         'contig' : (0, bytes),
10596  *         'start' : (1, int),             # <<<<<<<<<<<<<<
10597  *         'end' : (2, int),
10598  *         'name' : (3, bytes),
10599  */
10600   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10601   __Pyx_GOTREF(__pyx_t_2);
10602   __Pyx_INCREF(__pyx_int_1);
10603   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_1);
10604   __Pyx_GIVEREF(__pyx_int_1);
10605   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10606   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10607   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10608   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__start), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10609   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10610
10611   /* "TabProxies.pyx":598
10612  *         'contig' : (0, bytes),
10613  *         'start' : (1, int),
10614  *         'end' : (2, int),             # <<<<<<<<<<<<<<
10615  *         'name' : (3, bytes),
10616  *         'score' : (4, float),
10617  */
10618   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10619   __Pyx_GOTREF(__pyx_t_2);
10620   __Pyx_INCREF(__pyx_int_2);
10621   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_2);
10622   __Pyx_GIVEREF(__pyx_int_2);
10623   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10624   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10625   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10626   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__end), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10627   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10628
10629   /* "TabProxies.pyx":599
10630  *         'start' : (1, int),
10631  *         'end' : (2, int),
10632  *         'name' : (3, bytes),             # <<<<<<<<<<<<<<
10633  *         'score' : (4, float),
10634  *         'strand' : (5, bytes),
10635  */
10636   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10637   __Pyx_GOTREF(__pyx_t_2);
10638   __Pyx_INCREF(__pyx_int_3);
10639   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
10640   __Pyx_GIVEREF(__pyx_int_3);
10641   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10642   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10643   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10644   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10645   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10646
10647   /* "TabProxies.pyx":600
10648  *         'end' : (2, int),
10649  *         'name' : (3, bytes),
10650  *         'score' : (4, float),             # <<<<<<<<<<<<<<
10651  *         'strand' : (5, bytes),
10652  *         'thickStart' : (6, int ),
10653  */
10654   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10655   __Pyx_GOTREF(__pyx_t_2);
10656   __Pyx_INCREF(__pyx_int_4);
10657   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_4);
10658   __Pyx_GIVEREF(__pyx_int_4);
10659   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyFloat_Type))));
10660   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyFloat_Type))));
10661   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyFloat_Type))));
10662   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__score), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10663   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10664
10665   /* "TabProxies.pyx":601
10666  *         'name' : (3, bytes),
10667  *         'score' : (4, float),
10668  *         'strand' : (5, bytes),             # <<<<<<<<<<<<<<
10669  *         'thickStart' : (6, int ),
10670  *         'thickEnd' : (7, int),
10671  */
10672   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10673   __Pyx_GOTREF(__pyx_t_2);
10674   __Pyx_INCREF(__pyx_int_5);
10675   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_5);
10676   __Pyx_GIVEREF(__pyx_int_5);
10677   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10678   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10679   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10680   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__strand), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10681   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10682
10683   /* "TabProxies.pyx":602
10684  *         'score' : (4, float),
10685  *         'strand' : (5, bytes),
10686  *         'thickStart' : (6, int ),             # <<<<<<<<<<<<<<
10687  *         'thickEnd' : (7, int),
10688  *         'itemRGB' : (8, bytes),
10689  */
10690   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10691   __Pyx_GOTREF(__pyx_t_2);
10692   __Pyx_INCREF(__pyx_int_6);
10693   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_6);
10694   __Pyx_GIVEREF(__pyx_int_6);
10695   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10696   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10697   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10698   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__thickStart), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10699   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10700
10701   /* "TabProxies.pyx":603
10702  *         'strand' : (5, bytes),
10703  *         'thickStart' : (6, int ),
10704  *         'thickEnd' : (7, int),             # <<<<<<<<<<<<<<
10705  *         'itemRGB' : (8, bytes),
10706  *         'blockCount': (9, int),
10707  */
10708   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10709   __Pyx_GOTREF(__pyx_t_2);
10710   __Pyx_INCREF(__pyx_int_7);
10711   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_7);
10712   __Pyx_GIVEREF(__pyx_int_7);
10713   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10714   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10715   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10716   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__thickEnd), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10717   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10718
10719   /* "TabProxies.pyx":604
10720  *         'thickStart' : (6, int ),
10721  *         'thickEnd' : (7, int),
10722  *         'itemRGB' : (8, bytes),             # <<<<<<<<<<<<<<
10723  *         'blockCount': (9, int),
10724  *         'blockSizes': (10, bytes),
10725  */
10726   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10727   __Pyx_GOTREF(__pyx_t_2);
10728   __Pyx_INCREF(__pyx_int_8);
10729   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_8);
10730   __Pyx_GIVEREF(__pyx_int_8);
10731   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10732   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10733   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10734   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__itemRGB), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10735   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10736
10737   /* "TabProxies.pyx":605
10738  *         'thickEnd' : (7, int),
10739  *         'itemRGB' : (8, bytes),
10740  *         'blockCount': (9, int),             # <<<<<<<<<<<<<<
10741  *         'blockSizes': (10, bytes),
10742  *         'blockStarts': (11, bytes), }
10743  */
10744   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10745   __Pyx_GOTREF(__pyx_t_2);
10746   __Pyx_INCREF(__pyx_int_9);
10747   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_9);
10748   __Pyx_GIVEREF(__pyx_int_9);
10749   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10750   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10751   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10752   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__blockCount), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10753   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10754
10755   /* "TabProxies.pyx":606
10756  *         'itemRGB' : (8, bytes),
10757  *         'blockCount': (9, int),
10758  *         'blockSizes': (10, bytes),             # <<<<<<<<<<<<<<
10759  *         'blockStarts': (11, bytes), }
10760  * 
10761  */
10762   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10763   __Pyx_GOTREF(__pyx_t_2);
10764   __Pyx_INCREF(__pyx_int_10);
10765   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_10);
10766   __Pyx_GIVEREF(__pyx_int_10);
10767   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10768   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10769   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10770   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__blockSizes), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10771   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10772
10773   /* "TabProxies.pyx":607
10774  *         'blockCount': (9, int),
10775  *         'blockSizes': (10, bytes),
10776  *         'blockStarts': (11, bytes), }             # <<<<<<<<<<<<<<
10777  * 
10778  *     cdef int getMaxFields( self, size_t nbytes ):
10779  */
10780   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10781   __Pyx_GOTREF(__pyx_t_2);
10782   __Pyx_INCREF(__pyx_int_11);
10783   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_11);
10784   __Pyx_GIVEREF(__pyx_int_11);
10785   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10786   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10787   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10788   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__blockStarts), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10789   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10790   if (PyDict_SetItem((PyObject *)__pyx_ptype_10TabProxies_BedProxy->tp_dict, __pyx_n_s__map_key2field, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10791   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
10792   PyType_Modified(__pyx_ptype_10TabProxies_BedProxy);
10793
10794   /* "TabProxies.pyx":661
10795  *     The genotypes are accessed via index.
10796  *     '''
10797  *     map_key2field = {             # <<<<<<<<<<<<<<
10798  *         'contig' : (0, bytes),
10799  *         'pos' : (1, int),
10800  */
10801   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10802   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
10803
10804   /* "TabProxies.pyx":662
10805  *     '''
10806  *     map_key2field = {
10807  *         'contig' : (0, bytes),             # <<<<<<<<<<<<<<
10808  *         'pos' : (1, int),
10809  *         'id' : (2, bytes),
10810  */
10811   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10812   __Pyx_GOTREF(__pyx_t_2);
10813   __Pyx_INCREF(__pyx_int_0);
10814   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
10815   __Pyx_GIVEREF(__pyx_int_0);
10816   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10817   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10818   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10819   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__contig), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10820   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10821
10822   /* "TabProxies.pyx":663
10823  *     map_key2field = {
10824  *         'contig' : (0, bytes),
10825  *         'pos' : (1, int),             # <<<<<<<<<<<<<<
10826  *         'id' : (2, bytes),
10827  *         'ref' : (3, bytes),
10828  */
10829   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10830   __Pyx_GOTREF(__pyx_t_2);
10831   __Pyx_INCREF(__pyx_int_1);
10832   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_1);
10833   __Pyx_GIVEREF(__pyx_int_1);
10834   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10835   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyInt_Type))));
10836   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type))));
10837   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__pos), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10838   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10839
10840   /* "TabProxies.pyx":664
10841  *         'contig' : (0, bytes),
10842  *         'pos' : (1, int),
10843  *         'id' : (2, bytes),             # <<<<<<<<<<<<<<
10844  *         'ref' : (3, bytes),
10845  *         'alt' : (4, bytes),
10846  */
10847   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10848   __Pyx_GOTREF(__pyx_t_2);
10849   __Pyx_INCREF(__pyx_int_2);
10850   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_2);
10851   __Pyx_GIVEREF(__pyx_int_2);
10852   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10853   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10854   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10855   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__id), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10856   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10857
10858   /* "TabProxies.pyx":665
10859  *         'pos' : (1, int),
10860  *         'id' : (2, bytes),
10861  *         'ref' : (3, bytes),             # <<<<<<<<<<<<<<
10862  *         'alt' : (4, bytes),
10863  *         'qual' : (5, bytes),
10864  */
10865   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10866   __Pyx_GOTREF(__pyx_t_2);
10867   __Pyx_INCREF(__pyx_int_3);
10868   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
10869   __Pyx_GIVEREF(__pyx_int_3);
10870   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10871   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10872   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10873   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10874   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10875
10876   /* "TabProxies.pyx":666
10877  *         'id' : (2, bytes),
10878  *         'ref' : (3, bytes),
10879  *         'alt' : (4, bytes),             # <<<<<<<<<<<<<<
10880  *         'qual' : (5, bytes),
10881  *         'filter' : (6, bytes),
10882  */
10883   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10884   __Pyx_GOTREF(__pyx_t_2);
10885   __Pyx_INCREF(__pyx_int_4);
10886   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_4);
10887   __Pyx_GIVEREF(__pyx_int_4);
10888   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10889   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10890   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10891   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__alt), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10892   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10893
10894   /* "TabProxies.pyx":667
10895  *         'ref' : (3, bytes),
10896  *         'alt' : (4, bytes),
10897  *         'qual' : (5, bytes),             # <<<<<<<<<<<<<<
10898  *         'filter' : (6, bytes),
10899  *         'info' : (7, bytes),
10900  */
10901   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10902   __Pyx_GOTREF(__pyx_t_2);
10903   __Pyx_INCREF(__pyx_int_5);
10904   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_5);
10905   __Pyx_GIVEREF(__pyx_int_5);
10906   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10907   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10908   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10909   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__qual), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10910   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10911
10912   /* "TabProxies.pyx":668
10913  *         'alt' : (4, bytes),
10914  *         'qual' : (5, bytes),
10915  *         'filter' : (6, bytes),             # <<<<<<<<<<<<<<
10916  *         'info' : (7, bytes),
10917  *         'format' : (8, bytes) }
10918  */
10919   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10920   __Pyx_GOTREF(__pyx_t_2);
10921   __Pyx_INCREF(__pyx_int_6);
10922   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_6);
10923   __Pyx_GIVEREF(__pyx_int_6);
10924   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10925   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10926   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10927   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__filter), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10928   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10929
10930   /* "TabProxies.pyx":669
10931  *         'qual' : (5, bytes),
10932  *         'filter' : (6, bytes),
10933  *         'info' : (7, bytes),             # <<<<<<<<<<<<<<
10934  *         'format' : (8, bytes) }
10935  * 
10936  */
10937   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10938   __Pyx_GOTREF(__pyx_t_2);
10939   __Pyx_INCREF(__pyx_int_7);
10940   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_7);
10941   __Pyx_GIVEREF(__pyx_int_7);
10942   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10943   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10944   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10945   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__info), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10946   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10947
10948   /* "TabProxies.pyx":670
10949  *         'filter' : (6, bytes),
10950  *         'info' : (7, bytes),
10951  *         'format' : (8, bytes) }             # <<<<<<<<<<<<<<
10952  * 
10953  *     def __cinit__(self ):
10954  */
10955   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10956   __Pyx_GOTREF(__pyx_t_2);
10957   __Pyx_INCREF(__pyx_int_8);
10958   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_8);
10959   __Pyx_GIVEREF(__pyx_int_8);
10960   __Pyx_INCREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10961   PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((PyObject*)(&PyBytes_Type))));
10962   __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyBytes_Type))));
10963   if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__format), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10964   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
10965   if (PyDict_SetItem((PyObject *)__pyx_ptype_10TabProxies_VCFProxy->tp_dict, __pyx_n_s__map_key2field, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10966   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
10967   PyType_Modified(__pyx_ptype_10TabProxies_VCFProxy);
10968
10969   /* "TabProxies.pyx":1
10970  * import types, sys             # <<<<<<<<<<<<<<
10971  * 
10972  * from cpython.version cimport PY_MAJOR_VERSION
10973  */
10974   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10975   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
10976   if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10977   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
10978   goto __pyx_L0;
10979   __pyx_L1_error:;
10980   __Pyx_XDECREF(__pyx_t_1);
10981   __Pyx_XDECREF(__pyx_t_2);
10982   if (__pyx_m) {
10983     __Pyx_AddTraceback("init TabProxies", __pyx_clineno, __pyx_lineno, __pyx_filename);
10984     Py_DECREF(__pyx_m); __pyx_m = 0;
10985   } else if (!PyErr_Occurred()) {
10986     PyErr_SetString(PyExc_ImportError, "init TabProxies");
10987   }
10988   __pyx_L0:;
10989   __Pyx_RefNannyFinishContext();
10990   #if PY_MAJOR_VERSION < 3
10991   return;
10992   #else
10993   return __pyx_m;
10994   #endif
10995 }
10996
10997 /* Runtime support code */
10998 #if CYTHON_REFNANNY
10999 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
11000     PyObject *m = NULL, *p = NULL;
11001     void *r = NULL;
11002     m = PyImport_ImportModule((char *)modname);
11003     if (!m) goto end;
11004     p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
11005     if (!p) goto end;
11006     r = PyLong_AsVoidPtr(p);
11007 end:
11008     Py_XDECREF(p);
11009     Py_XDECREF(m);
11010     return (__Pyx_RefNannyAPIStruct *)r;
11011 }
11012 #endif /* CYTHON_REFNANNY */
11013
11014 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
11015     PyObject *result;
11016     result = PyObject_GetAttr(dict, name);
11017     if (!result) {
11018         if (dict != __pyx_b) {
11019             PyErr_Clear();
11020             result = PyObject_GetAttr(__pyx_b, name);
11021         }
11022         if (!result) {
11023             PyErr_SetObject(PyExc_NameError, name);
11024         }
11025     }
11026     return result;
11027 }
11028
11029 static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
11030 #if CYTHON_COMPILING_IN_CPYTHON
11031     PyObject *tmp_type, *tmp_value, *tmp_tb;
11032     PyThreadState *tstate = PyThreadState_GET();
11033     tmp_type = tstate->curexc_type;
11034     tmp_value = tstate->curexc_value;
11035     tmp_tb = tstate->curexc_traceback;
11036     tstate->curexc_type = type;
11037     tstate->curexc_value = value;
11038     tstate->curexc_traceback = tb;
11039     Py_XDECREF(tmp_type);
11040     Py_XDECREF(tmp_value);
11041     Py_XDECREF(tmp_tb);
11042 #else
11043     PyErr_Restore(type, value, tb);
11044 #endif
11045 }
11046 static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
11047 #if CYTHON_COMPILING_IN_CPYTHON
11048     PyThreadState *tstate = PyThreadState_GET();
11049     *type = tstate->curexc_type;
11050     *value = tstate->curexc_value;
11051     *tb = tstate->curexc_traceback;
11052     tstate->curexc_type = 0;
11053     tstate->curexc_value = 0;
11054     tstate->curexc_traceback = 0;
11055 #else
11056     PyErr_Fetch(type, value, tb);
11057 #endif
11058 }
11059
11060 #if PY_MAJOR_VERSION < 3
11061 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
11062                         CYTHON_UNUSED PyObject *cause) {
11063     Py_XINCREF(type);
11064     Py_XINCREF(value);
11065     Py_XINCREF(tb);
11066     if (tb == Py_None) {
11067         Py_DECREF(tb);
11068         tb = 0;
11069     }
11070     else if (tb != NULL && !PyTraceBack_Check(tb)) {
11071         PyErr_SetString(PyExc_TypeError,
11072             "raise: arg 3 must be a traceback or None");
11073         goto raise_error;
11074     }
11075     if (value == NULL) {
11076         value = Py_None;
11077         Py_INCREF(value);
11078     }
11079     #if PY_VERSION_HEX < 0x02050000
11080     if (!PyClass_Check(type))
11081     #else
11082     if (!PyType_Check(type))
11083     #endif
11084     {
11085         if (value != Py_None) {
11086             PyErr_SetString(PyExc_TypeError,
11087                 "instance exception may not have a separate value");
11088             goto raise_error;
11089         }
11090         Py_DECREF(value);
11091         value = type;
11092         #if PY_VERSION_HEX < 0x02050000
11093             if (PyInstance_Check(type)) {
11094                 type = (PyObject*) ((PyInstanceObject*)type)->in_class;
11095                 Py_INCREF(type);
11096             }
11097             else {
11098                 type = 0;
11099                 PyErr_SetString(PyExc_TypeError,
11100                     "raise: exception must be an old-style class or instance");
11101                 goto raise_error;
11102             }
11103         #else
11104             type = (PyObject*) Py_TYPE(type);
11105             Py_INCREF(type);
11106             if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
11107                 PyErr_SetString(PyExc_TypeError,
11108                     "raise: exception class must be a subclass of BaseException");
11109                 goto raise_error;
11110             }
11111         #endif
11112     }
11113     __Pyx_ErrRestore(type, value, tb);
11114     return;
11115 raise_error:
11116     Py_XDECREF(value);
11117     Py_XDECREF(type);
11118     Py_XDECREF(tb);
11119     return;
11120 }
11121 #else /* Python 3+ */
11122 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
11123     if (tb == Py_None) {
11124         tb = 0;
11125     } else if (tb && !PyTraceBack_Check(tb)) {
11126         PyErr_SetString(PyExc_TypeError,
11127             "raise: arg 3 must be a traceback or None");
11128         goto bad;
11129     }
11130     if (value == Py_None)
11131         value = 0;
11132     if (PyExceptionInstance_Check(type)) {
11133         if (value) {
11134             PyErr_SetString(PyExc_TypeError,
11135                 "instance exception may not have a separate value");
11136             goto bad;
11137         }
11138         value = type;
11139         type = (PyObject*) Py_TYPE(value);
11140     } else if (!PyExceptionClass_Check(type)) {
11141         PyErr_SetString(PyExc_TypeError,
11142             "raise: exception class must be a subclass of BaseException");
11143         goto bad;
11144     }
11145     if (cause) {
11146         PyObject *fixed_cause;
11147         if (PyExceptionClass_Check(cause)) {
11148             fixed_cause = PyObject_CallObject(cause, NULL);
11149             if (fixed_cause == NULL)
11150                 goto bad;
11151         }
11152         else if (PyExceptionInstance_Check(cause)) {
11153             fixed_cause = cause;
11154             Py_INCREF(fixed_cause);
11155         }
11156         else {
11157             PyErr_SetString(PyExc_TypeError,
11158                             "exception causes must derive from "
11159                             "BaseException");
11160             goto bad;
11161         }
11162         if (!value) {
11163             value = PyObject_CallObject(type, NULL);
11164         }
11165         PyException_SetCause(value, fixed_cause);
11166     }
11167     PyErr_SetObject(type, value);
11168     if (tb) {
11169         PyThreadState *tstate = PyThreadState_GET();
11170         PyObject* tmp_tb = tstate->curexc_traceback;
11171         if (tb != tmp_tb) {
11172             Py_INCREF(tb);
11173             tstate->curexc_traceback = tb;
11174             Py_XDECREF(tmp_tb);
11175         }
11176     }
11177 bad:
11178     return;
11179 }
11180 #endif
11181
11182 static void __Pyx_RaiseArgtupleInvalid(
11183     const char* func_name,
11184     int exact,
11185     Py_ssize_t num_min,
11186     Py_ssize_t num_max,
11187     Py_ssize_t num_found)
11188 {
11189     Py_ssize_t num_expected;
11190     const char *more_or_less;
11191     if (num_found < num_min) {
11192         num_expected = num_min;
11193         more_or_less = "at least";
11194     } else {
11195         num_expected = num_max;
11196         more_or_less = "at most";
11197     }
11198     if (exact) {
11199         more_or_less = "exactly";
11200     }
11201     PyErr_Format(PyExc_TypeError,
11202                  "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)",
11203                  func_name, more_or_less, num_expected,
11204                  (num_expected == 1) ? "" : "s", num_found);
11205 }
11206
11207 static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
11208     PyObject *kwdict,
11209     const char* function_name,
11210     int kw_allowed)
11211 {
11212     PyObject* key = 0;
11213     Py_ssize_t pos = 0;
11214     while (PyDict_Next(kwdict, &pos, &key, 0)) {
11215         #if PY_MAJOR_VERSION < 3
11216         if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
11217         #else
11218         if (unlikely(!PyUnicode_Check(key)))
11219         #endif
11220             goto invalid_keyword_type;
11221     }
11222     if ((!kw_allowed) && unlikely(key))
11223         goto invalid_keyword;
11224     return 1;
11225 invalid_keyword_type:
11226     PyErr_Format(PyExc_TypeError,
11227         "%s() keywords must be strings", function_name);
11228     return 0;
11229 invalid_keyword:
11230     PyErr_Format(PyExc_TypeError,
11231     #if PY_MAJOR_VERSION < 3
11232         "%s() got an unexpected keyword argument '%s'",
11233         function_name, PyString_AsString(key));
11234     #else
11235         "%s() got an unexpected keyword argument '%U'",
11236         function_name, key);
11237     #endif
11238     return 0;
11239 }
11240
11241 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
11242     PyErr_Format(PyExc_ValueError,
11243                  "need more than %"PY_FORMAT_SIZE_T"d value%s to unpack",
11244                  index, (index == 1) ? "" : "s");
11245 }
11246
11247 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
11248     PyErr_Format(PyExc_ValueError,
11249                  "too many values to unpack (expected %"PY_FORMAT_SIZE_T"d)", expected);
11250 }
11251
11252 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
11253     if (unlikely(retval)) {
11254         Py_DECREF(retval);
11255         __Pyx_RaiseTooManyValuesError(expected);
11256         return -1;
11257     } else if (PyErr_Occurred()) {
11258         if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
11259             PyErr_Clear();
11260             return 0;
11261         } else {
11262             return -1;
11263         }
11264     }
11265     return 0;
11266 }
11267
11268 static void __Pyx_RaiseDoubleKeywordsError(
11269     const char* func_name,
11270     PyObject* kw_name)
11271 {
11272     PyErr_Format(PyExc_TypeError,
11273         #if PY_MAJOR_VERSION >= 3
11274         "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
11275         #else
11276         "%s() got multiple values for keyword argument '%s'", func_name,
11277         PyString_AS_STRING(kw_name));
11278         #endif
11279 }
11280
11281 static int __Pyx_ParseOptionalKeywords(
11282     PyObject *kwds,
11283     PyObject **argnames[],
11284     PyObject *kwds2,
11285     PyObject *values[],
11286     Py_ssize_t num_pos_args,
11287     const char* function_name)
11288 {
11289     PyObject *key = 0, *value = 0;
11290     Py_ssize_t pos = 0;
11291     PyObject*** name;
11292     PyObject*** first_kw_arg = argnames + num_pos_args;
11293     while (PyDict_Next(kwds, &pos, &key, &value)) {
11294         name = first_kw_arg;
11295         while (*name && (**name != key)) name++;
11296         if (*name) {
11297             values[name-argnames] = value;
11298         } else {
11299             #if PY_MAJOR_VERSION < 3
11300             if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
11301             #else
11302             if (unlikely(!PyUnicode_Check(key))) {
11303             #endif
11304                 goto invalid_keyword_type;
11305             } else {
11306                 for (name = first_kw_arg; *name; name++) {
11307                     #if PY_MAJOR_VERSION >= 3
11308                     if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
11309                         PyUnicode_Compare(**name, key) == 0) break;
11310                     #else
11311                     if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
11312                         _PyString_Eq(**name, key)) break;
11313                     #endif
11314                 }
11315                 if (*name) {
11316                     values[name-argnames] = value;
11317                 } else {
11318                     for (name=argnames; name != first_kw_arg; name++) {
11319                         if (**name == key) goto arg_passed_twice;
11320                         #if PY_MAJOR_VERSION >= 3
11321                         if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
11322                             PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
11323                         #else
11324                         if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
11325                             _PyString_Eq(**name, key)) goto arg_passed_twice;
11326                         #endif
11327                     }
11328                     if (kwds2) {
11329                         if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
11330                     } else {
11331                         goto invalid_keyword;
11332                     }
11333                 }
11334             }
11335         }
11336     }
11337     return 0;
11338 arg_passed_twice:
11339     __Pyx_RaiseDoubleKeywordsError(function_name, **name);
11340     goto bad;
11341 invalid_keyword_type:
11342     PyErr_Format(PyExc_TypeError,
11343         "%s() keywords must be strings", function_name);
11344     goto bad;
11345 invalid_keyword:
11346     PyErr_Format(PyExc_TypeError,
11347     #if PY_MAJOR_VERSION < 3
11348         "%s() got an unexpected keyword argument '%s'",
11349         function_name, PyString_AsString(key));
11350     #else
11351         "%s() got an unexpected keyword argument '%U'",
11352         function_name, key);
11353     #endif
11354 bad:
11355     return -1;
11356 }
11357
11358
11359
11360 static double __Pyx__PyObject_AsDouble(PyObject* obj) {
11361     PyObject* float_value;
11362     if (Py_TYPE(obj)->tp_as_number && Py_TYPE(obj)->tp_as_number->nb_float) {
11363         return PyFloat_AsDouble(obj);
11364     } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
11365 #if PY_MAJOR_VERSION >= 3
11366         float_value = PyFloat_FromString(obj);
11367 #else
11368         float_value = PyFloat_FromString(obj, 0);
11369 #endif
11370     } else {
11371         PyObject* args = PyTuple_New(1);
11372         if (unlikely(!args)) goto bad;
11373         PyTuple_SET_ITEM(args, 0, obj);
11374         float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
11375         PyTuple_SET_ITEM(args, 0, 0);
11376         Py_DECREF(args);
11377     }
11378     if (likely(float_value)) {
11379         double value = PyFloat_AS_DOUBLE(float_value);
11380         Py_DECREF(float_value);
11381         return value;
11382     }
11383 bad:
11384     return (double)-1;
11385 }
11386
11387 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
11388     PyThreadState *tstate = PyThreadState_GET();
11389     *type = tstate->exc_type;
11390     *value = tstate->exc_value;
11391     *tb = tstate->exc_traceback;
11392     Py_XINCREF(*type);
11393     Py_XINCREF(*value);
11394     Py_XINCREF(*tb);
11395 }
11396 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
11397     PyObject *tmp_type, *tmp_value, *tmp_tb;
11398     PyThreadState *tstate = PyThreadState_GET();
11399     tmp_type = tstate->exc_type;
11400     tmp_value = tstate->exc_value;
11401     tmp_tb = tstate->exc_traceback;
11402     tstate->exc_type = type;
11403     tstate->exc_value = value;
11404     tstate->exc_traceback = tb;
11405     Py_XDECREF(tmp_type);
11406     Py_XDECREF(tmp_value);
11407     Py_XDECREF(tmp_tb);
11408 }
11409
11410 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) {
11411     PyObject *py_import = 0;
11412     PyObject *empty_list = 0;
11413     PyObject *module = 0;
11414     PyObject *global_dict = 0;
11415     PyObject *empty_dict = 0;
11416     PyObject *list;
11417     py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
11418     if (!py_import)
11419         goto bad;
11420     if (from_list)
11421         list = from_list;
11422     else {
11423         empty_list = PyList_New(0);
11424         if (!empty_list)
11425             goto bad;
11426         list = empty_list;
11427     }
11428     global_dict = PyModule_GetDict(__pyx_m);
11429     if (!global_dict)
11430         goto bad;
11431     empty_dict = PyDict_New();
11432     if (!empty_dict)
11433         goto bad;
11434     #if PY_VERSION_HEX >= 0x02050000
11435     {
11436         #if PY_MAJOR_VERSION >= 3
11437         if (level == -1) {
11438             if (strchr(__Pyx_MODULE_NAME, '.')) {
11439                 /* try package relative import first */
11440                 PyObject *py_level = PyInt_FromLong(1);
11441                 if (!py_level)
11442                     goto bad;
11443                 module = PyObject_CallFunctionObjArgs(py_import,
11444                     name, global_dict, empty_dict, list, py_level, NULL);
11445                 Py_DECREF(py_level);
11446                 if (!module) {
11447                     if (!PyErr_ExceptionMatches(PyExc_ImportError))
11448                         goto bad;
11449                     PyErr_Clear();
11450                 }
11451             }
11452             level = 0; /* try absolute import on failure */
11453         }
11454         #endif
11455         if (!module) {
11456             PyObject *py_level = PyInt_FromLong(level);
11457             if (!py_level)
11458                 goto bad;
11459             module = PyObject_CallFunctionObjArgs(py_import,
11460                 name, global_dict, empty_dict, list, py_level, NULL);
11461             Py_DECREF(py_level);
11462         }
11463     }
11464     #else
11465     if (level>0) {
11466         PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
11467         goto bad;
11468     }
11469     module = PyObject_CallFunctionObjArgs(py_import,
11470         name, global_dict, empty_dict, list, NULL);
11471     #endif
11472 bad:
11473     Py_XDECREF(empty_list);
11474     Py_XDECREF(py_import);
11475     Py_XDECREF(empty_dict);
11476     return module;
11477 }
11478
11479 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
11480     if (s1 == s2) {
11481         return (equals == Py_EQ);
11482     } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
11483         if (PyBytes_GET_SIZE(s1) != PyBytes_GET_SIZE(s2)) {
11484             return (equals == Py_NE);
11485         } else if (PyBytes_GET_SIZE(s1) == 1) {
11486             if (equals == Py_EQ)
11487                 return (PyBytes_AS_STRING(s1)[0] == PyBytes_AS_STRING(s2)[0]);
11488             else
11489                 return (PyBytes_AS_STRING(s1)[0] != PyBytes_AS_STRING(s2)[0]);
11490         } else {
11491             int result = memcmp(PyBytes_AS_STRING(s1), PyBytes_AS_STRING(s2), (size_t)PyBytes_GET_SIZE(s1));
11492             return (equals == Py_EQ) ? (result == 0) : (result != 0);
11493         }
11494     } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
11495         return (equals == Py_NE);
11496     } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
11497         return (equals == Py_NE);
11498     } else {
11499         int result;
11500         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
11501         if (!py_result)
11502             return -1;
11503         result = __Pyx_PyObject_IsTrue(py_result);
11504         Py_DECREF(py_result);
11505         return result;
11506     }
11507 }
11508
11509 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
11510     if (s1 == s2) {
11511         return (equals == Py_EQ);
11512     } else if (PyUnicode_CheckExact(s1) & PyUnicode_CheckExact(s2)) {
11513         #if CYTHON_PEP393_ENABLED
11514         if ((PyUnicode_READY(s1) < 0) || (PyUnicode_READY(s2) < 0))
11515             return -1;
11516         if (PyUnicode_GET_LENGTH(s1) != PyUnicode_GET_LENGTH(s2)) {
11517             return (equals == Py_NE);
11518         } else if (PyUnicode_GET_LENGTH(s1) == 1) {
11519             Py_UCS4 ch1 = PyUnicode_READ_CHAR(s1, 0);
11520             Py_UCS4 ch2 = PyUnicode_READ_CHAR(s2, 0);
11521             return (equals == Py_EQ) ? (ch1 == ch2) : (ch1 != ch2);
11522         #else
11523         if (PyUnicode_GET_SIZE(s1) != PyUnicode_GET_SIZE(s2)) {
11524             return (equals == Py_NE);
11525         } else if (PyUnicode_GET_SIZE(s1) == 1) {
11526             Py_UNICODE ch1 = PyUnicode_AS_UNICODE(s1)[0];
11527             Py_UNICODE ch2 = PyUnicode_AS_UNICODE(s2)[0];
11528             return (equals == Py_EQ) ? (ch1 == ch2) : (ch1 != ch2);
11529         #endif
11530         } else {
11531             int result = PyUnicode_Compare(s1, s2);
11532             if ((result == -1) && unlikely(PyErr_Occurred()))
11533                 return -1;
11534             return (equals == Py_EQ) ? (result == 0) : (result != 0);
11535         }
11536     } else if ((s1 == Py_None) & PyUnicode_CheckExact(s2)) {
11537         return (equals == Py_NE);
11538     } else if ((s2 == Py_None) & PyUnicode_CheckExact(s1)) {
11539         return (equals == Py_NE);
11540     } else {
11541         int result;
11542         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
11543         if (!py_result)
11544             return -1;
11545         result = __Pyx_PyObject_IsTrue(py_result);
11546         Py_DECREF(py_result);
11547         return result;
11548     }
11549 }
11550
11551 static CYTHON_INLINE uint32_t __Pyx_PyInt_from_py_uint32_t(PyObject* x) {
11552     const uint32_t neg_one = (uint32_t)-1, const_zero = (uint32_t)0;
11553     const int is_unsigned = const_zero < neg_one;
11554     if (sizeof(uint32_t) == sizeof(char)) {
11555         if (is_unsigned)
11556             return (uint32_t)__Pyx_PyInt_AsUnsignedChar(x);
11557         else
11558             return (uint32_t)__Pyx_PyInt_AsSignedChar(x);
11559     } else if (sizeof(uint32_t) == sizeof(short)) {
11560         if (is_unsigned)
11561             return (uint32_t)__Pyx_PyInt_AsUnsignedShort(x);
11562         else
11563             return (uint32_t)__Pyx_PyInt_AsSignedShort(x);
11564     } else if (sizeof(uint32_t) == sizeof(int)) {
11565         if (is_unsigned)
11566             return (uint32_t)__Pyx_PyInt_AsUnsignedInt(x);
11567         else
11568             return (uint32_t)__Pyx_PyInt_AsSignedInt(x);
11569     } else if (sizeof(uint32_t) == sizeof(long)) {
11570         if (is_unsigned)
11571             return (uint32_t)__Pyx_PyInt_AsUnsignedLong(x);
11572         else
11573             return (uint32_t)__Pyx_PyInt_AsSignedLong(x);
11574     } else if (sizeof(uint32_t) == sizeof(PY_LONG_LONG)) {
11575         if (is_unsigned)
11576             return (uint32_t)__Pyx_PyInt_AsUnsignedLongLong(x);
11577         else
11578             return (uint32_t)__Pyx_PyInt_AsSignedLongLong(x);
11579     }  else {
11580         uint32_t val;
11581         PyObject *v = __Pyx_PyNumber_Int(x);
11582         #if PY_VERSION_HEX < 0x03000000
11583         if (likely(v) && !PyLong_Check(v)) {
11584             PyObject *tmp = v;
11585             v = PyNumber_Long(tmp);
11586             Py_DECREF(tmp);
11587         }
11588         #endif
11589         if (likely(v)) {
11590             int one = 1; int is_little = (int)*(unsigned char *)&one;
11591             unsigned char *bytes = (unsigned char *)&val;
11592             int ret = _PyLong_AsByteArray((PyLongObject *)v,
11593                                           bytes, sizeof(val),
11594                                           is_little, !is_unsigned);
11595             Py_DECREF(v);
11596             if (likely(!ret))
11597                 return val;
11598         }
11599         return (uint32_t)-1;
11600     }
11601 }
11602
11603 static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_uint32_t(uint32_t val) {
11604     const uint32_t neg_one = (uint32_t)-1, const_zero = (uint32_t)0;
11605     const int is_unsigned = const_zero < neg_one;
11606     if ((sizeof(uint32_t) == sizeof(char))  ||
11607         (sizeof(uint32_t) == sizeof(short))) {
11608         return PyInt_FromLong((long)val);
11609     } else if ((sizeof(uint32_t) == sizeof(int)) ||
11610                (sizeof(uint32_t) == sizeof(long))) {
11611         if (is_unsigned)
11612             return PyLong_FromUnsignedLong((unsigned long)val);
11613         else
11614             return PyInt_FromLong((long)val);
11615     } else if (sizeof(uint32_t) == sizeof(PY_LONG_LONG)) {
11616         if (is_unsigned)
11617             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
11618         else
11619             return PyLong_FromLongLong((PY_LONG_LONG)val);
11620     } else {
11621         int one = 1; int little = (int)*(unsigned char *)&one;
11622         unsigned char *bytes = (unsigned char *)&val;
11623         return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
11624                                      little, !is_unsigned);
11625     }
11626 }
11627
11628 static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
11629     const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
11630     const int is_unsigned = neg_one > const_zero;
11631     if (sizeof(unsigned char) < sizeof(long)) {
11632         long val = __Pyx_PyInt_AsLong(x);
11633         if (unlikely(val != (long)(unsigned char)val)) {
11634             if (!unlikely(val == -1 && PyErr_Occurred())) {
11635                 PyErr_SetString(PyExc_OverflowError,
11636                     (is_unsigned && unlikely(val < 0)) ?
11637                     "can't convert negative value to unsigned char" :
11638                     "value too large to convert to unsigned char");
11639             }
11640             return (unsigned char)-1;
11641         }
11642         return (unsigned char)val;
11643     }
11644     return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
11645 }
11646
11647 static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
11648     const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
11649     const int is_unsigned = neg_one > const_zero;
11650     if (sizeof(unsigned short) < sizeof(long)) {
11651         long val = __Pyx_PyInt_AsLong(x);
11652         if (unlikely(val != (long)(unsigned short)val)) {
11653             if (!unlikely(val == -1 && PyErr_Occurred())) {
11654                 PyErr_SetString(PyExc_OverflowError,
11655                     (is_unsigned && unlikely(val < 0)) ?
11656                     "can't convert negative value to unsigned short" :
11657                     "value too large to convert to unsigned short");
11658             }
11659             return (unsigned short)-1;
11660         }
11661         return (unsigned short)val;
11662     }
11663     return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
11664 }
11665
11666 static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
11667     const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
11668     const int is_unsigned = neg_one > const_zero;
11669     if (sizeof(unsigned int) < sizeof(long)) {
11670         long val = __Pyx_PyInt_AsLong(x);
11671         if (unlikely(val != (long)(unsigned int)val)) {
11672             if (!unlikely(val == -1 && PyErr_Occurred())) {
11673                 PyErr_SetString(PyExc_OverflowError,
11674                     (is_unsigned && unlikely(val < 0)) ?
11675                     "can't convert negative value to unsigned int" :
11676                     "value too large to convert to unsigned int");
11677             }
11678             return (unsigned int)-1;
11679         }
11680         return (unsigned int)val;
11681     }
11682     return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
11683 }
11684
11685 static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
11686     const char neg_one = (char)-1, const_zero = 0;
11687     const int is_unsigned = neg_one > const_zero;
11688     if (sizeof(char) < sizeof(long)) {
11689         long val = __Pyx_PyInt_AsLong(x);
11690         if (unlikely(val != (long)(char)val)) {
11691             if (!unlikely(val == -1 && PyErr_Occurred())) {
11692                 PyErr_SetString(PyExc_OverflowError,
11693                     (is_unsigned && unlikely(val < 0)) ?
11694                     "can't convert negative value to char" :
11695                     "value too large to convert to char");
11696             }
11697             return (char)-1;
11698         }
11699         return (char)val;
11700     }
11701     return (char)__Pyx_PyInt_AsLong(x);
11702 }
11703
11704 static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
11705     const short neg_one = (short)-1, const_zero = 0;
11706     const int is_unsigned = neg_one > const_zero;
11707     if (sizeof(short) < sizeof(long)) {
11708         long val = __Pyx_PyInt_AsLong(x);
11709         if (unlikely(val != (long)(short)val)) {
11710             if (!unlikely(val == -1 && PyErr_Occurred())) {
11711                 PyErr_SetString(PyExc_OverflowError,
11712                     (is_unsigned && unlikely(val < 0)) ?
11713                     "can't convert negative value to short" :
11714                     "value too large to convert to short");
11715             }
11716             return (short)-1;
11717         }
11718         return (short)val;
11719     }
11720     return (short)__Pyx_PyInt_AsLong(x);
11721 }
11722
11723 static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
11724     const int neg_one = (int)-1, const_zero = 0;
11725     const int is_unsigned = neg_one > const_zero;
11726     if (sizeof(int) < sizeof(long)) {
11727         long val = __Pyx_PyInt_AsLong(x);
11728         if (unlikely(val != (long)(int)val)) {
11729             if (!unlikely(val == -1 && PyErr_Occurred())) {
11730                 PyErr_SetString(PyExc_OverflowError,
11731                     (is_unsigned && unlikely(val < 0)) ?
11732                     "can't convert negative value to int" :
11733                     "value too large to convert to int");
11734             }
11735             return (int)-1;
11736         }
11737         return (int)val;
11738     }
11739     return (int)__Pyx_PyInt_AsLong(x);
11740 }
11741
11742 static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
11743     const signed char neg_one = (signed char)-1, const_zero = 0;
11744     const int is_unsigned = neg_one > const_zero;
11745     if (sizeof(signed char) < sizeof(long)) {
11746         long val = __Pyx_PyInt_AsLong(x);
11747         if (unlikely(val != (long)(signed char)val)) {
11748             if (!unlikely(val == -1 && PyErr_Occurred())) {
11749                 PyErr_SetString(PyExc_OverflowError,
11750                     (is_unsigned && unlikely(val < 0)) ?
11751                     "can't convert negative value to signed char" :
11752                     "value too large to convert to signed char");
11753             }
11754             return (signed char)-1;
11755         }
11756         return (signed char)val;
11757     }
11758     return (signed char)__Pyx_PyInt_AsSignedLong(x);
11759 }
11760
11761 static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
11762     const signed short neg_one = (signed short)-1, const_zero = 0;
11763     const int is_unsigned = neg_one > const_zero;
11764     if (sizeof(signed short) < sizeof(long)) {
11765         long val = __Pyx_PyInt_AsLong(x);
11766         if (unlikely(val != (long)(signed short)val)) {
11767             if (!unlikely(val == -1 && PyErr_Occurred())) {
11768                 PyErr_SetString(PyExc_OverflowError,
11769                     (is_unsigned && unlikely(val < 0)) ?
11770                     "can't convert negative value to signed short" :
11771                     "value too large to convert to signed short");
11772             }
11773             return (signed short)-1;
11774         }
11775         return (signed short)val;
11776     }
11777     return (signed short)__Pyx_PyInt_AsSignedLong(x);
11778 }
11779
11780 static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
11781     const signed int neg_one = (signed int)-1, const_zero = 0;
11782     const int is_unsigned = neg_one > const_zero;
11783     if (sizeof(signed int) < sizeof(long)) {
11784         long val = __Pyx_PyInt_AsLong(x);
11785         if (unlikely(val != (long)(signed int)val)) {
11786             if (!unlikely(val == -1 && PyErr_Occurred())) {
11787                 PyErr_SetString(PyExc_OverflowError,
11788                     (is_unsigned && unlikely(val < 0)) ?
11789                     "can't convert negative value to signed int" :
11790                     "value too large to convert to signed int");
11791             }
11792             return (signed int)-1;
11793         }
11794         return (signed int)val;
11795     }
11796     return (signed int)__Pyx_PyInt_AsSignedLong(x);
11797 }
11798
11799 static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
11800     const int neg_one = (int)-1, const_zero = 0;
11801     const int is_unsigned = neg_one > const_zero;
11802     if (sizeof(int) < sizeof(long)) {
11803         long val = __Pyx_PyInt_AsLong(x);
11804         if (unlikely(val != (long)(int)val)) {
11805             if (!unlikely(val == -1 && PyErr_Occurred())) {
11806                 PyErr_SetString(PyExc_OverflowError,
11807                     (is_unsigned && unlikely(val < 0)) ?
11808                     "can't convert negative value to int" :
11809                     "value too large to convert to int");
11810             }
11811             return (int)-1;
11812         }
11813         return (int)val;
11814     }
11815     return (int)__Pyx_PyInt_AsLong(x);
11816 }
11817
11818 static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
11819     const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
11820     const int is_unsigned = neg_one > const_zero;
11821 #if PY_VERSION_HEX < 0x03000000
11822     if (likely(PyInt_Check(x))) {
11823         long val = PyInt_AS_LONG(x);
11824         if (is_unsigned && unlikely(val < 0)) {
11825             PyErr_SetString(PyExc_OverflowError,
11826                             "can't convert negative value to unsigned long");
11827             return (unsigned long)-1;
11828         }
11829         return (unsigned long)val;
11830     } else
11831 #endif
11832     if (likely(PyLong_Check(x))) {
11833         if (is_unsigned) {
11834             if (unlikely(Py_SIZE(x) < 0)) {
11835                 PyErr_SetString(PyExc_OverflowError,
11836                                 "can't convert negative value to unsigned long");
11837                 return (unsigned long)-1;
11838             }
11839             return (unsigned long)PyLong_AsUnsignedLong(x);
11840         } else {
11841             return (unsigned long)PyLong_AsLong(x);
11842         }
11843     } else {
11844         unsigned long val;
11845         PyObject *tmp = __Pyx_PyNumber_Int(x);
11846         if (!tmp) return (unsigned long)-1;
11847         val = __Pyx_PyInt_AsUnsignedLong(tmp);
11848         Py_DECREF(tmp);
11849         return val;
11850     }
11851 }
11852
11853 static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
11854     const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
11855     const int is_unsigned = neg_one > const_zero;
11856 #if PY_VERSION_HEX < 0x03000000
11857     if (likely(PyInt_Check(x))) {
11858         long val = PyInt_AS_LONG(x);
11859         if (is_unsigned && unlikely(val < 0)) {
11860             PyErr_SetString(PyExc_OverflowError,
11861                             "can't convert negative value to unsigned PY_LONG_LONG");
11862             return (unsigned PY_LONG_LONG)-1;
11863         }
11864         return (unsigned PY_LONG_LONG)val;
11865     } else
11866 #endif
11867     if (likely(PyLong_Check(x))) {
11868         if (is_unsigned) {
11869             if (unlikely(Py_SIZE(x) < 0)) {
11870                 PyErr_SetString(PyExc_OverflowError,
11871                                 "can't convert negative value to unsigned PY_LONG_LONG");
11872                 return (unsigned PY_LONG_LONG)-1;
11873             }
11874             return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
11875         } else {
11876             return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
11877         }
11878     } else {
11879         unsigned PY_LONG_LONG val;
11880         PyObject *tmp = __Pyx_PyNumber_Int(x);
11881         if (!tmp) return (unsigned PY_LONG_LONG)-1;
11882         val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
11883         Py_DECREF(tmp);
11884         return val;
11885     }
11886 }
11887
11888 static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
11889     const long neg_one = (long)-1, const_zero = 0;
11890     const int is_unsigned = neg_one > const_zero;
11891 #if PY_VERSION_HEX < 0x03000000
11892     if (likely(PyInt_Check(x))) {
11893         long val = PyInt_AS_LONG(x);
11894         if (is_unsigned && unlikely(val < 0)) {
11895             PyErr_SetString(PyExc_OverflowError,
11896                             "can't convert negative value to long");
11897             return (long)-1;
11898         }
11899         return (long)val;
11900     } else
11901 #endif
11902     if (likely(PyLong_Check(x))) {
11903         if (is_unsigned) {
11904             if (unlikely(Py_SIZE(x) < 0)) {
11905                 PyErr_SetString(PyExc_OverflowError,
11906                                 "can't convert negative value to long");
11907                 return (long)-1;
11908             }
11909             return (long)PyLong_AsUnsignedLong(x);
11910         } else {
11911             return (long)PyLong_AsLong(x);
11912         }
11913     } else {
11914         long val;
11915         PyObject *tmp = __Pyx_PyNumber_Int(x);
11916         if (!tmp) return (long)-1;
11917         val = __Pyx_PyInt_AsLong(tmp);
11918         Py_DECREF(tmp);
11919         return val;
11920     }
11921 }
11922
11923 static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
11924     const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
11925     const int is_unsigned = neg_one > const_zero;
11926 #if PY_VERSION_HEX < 0x03000000
11927     if (likely(PyInt_Check(x))) {
11928         long val = PyInt_AS_LONG(x);
11929         if (is_unsigned && unlikely(val < 0)) {
11930             PyErr_SetString(PyExc_OverflowError,
11931                             "can't convert negative value to PY_LONG_LONG");
11932             return (PY_LONG_LONG)-1;
11933         }
11934         return (PY_LONG_LONG)val;
11935     } else
11936 #endif
11937     if (likely(PyLong_Check(x))) {
11938         if (is_unsigned) {
11939             if (unlikely(Py_SIZE(x) < 0)) {
11940                 PyErr_SetString(PyExc_OverflowError,
11941                                 "can't convert negative value to PY_LONG_LONG");
11942                 return (PY_LONG_LONG)-1;
11943             }
11944             return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
11945         } else {
11946             return (PY_LONG_LONG)PyLong_AsLongLong(x);
11947         }
11948     } else {
11949         PY_LONG_LONG val;
11950         PyObject *tmp = __Pyx_PyNumber_Int(x);
11951         if (!tmp) return (PY_LONG_LONG)-1;
11952         val = __Pyx_PyInt_AsLongLong(tmp);
11953         Py_DECREF(tmp);
11954         return val;
11955     }
11956 }
11957
11958 static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
11959     const signed long neg_one = (signed long)-1, const_zero = 0;
11960     const int is_unsigned = neg_one > const_zero;
11961 #if PY_VERSION_HEX < 0x03000000
11962     if (likely(PyInt_Check(x))) {
11963         long val = PyInt_AS_LONG(x);
11964         if (is_unsigned && unlikely(val < 0)) {
11965             PyErr_SetString(PyExc_OverflowError,
11966                             "can't convert negative value to signed long");
11967             return (signed long)-1;
11968         }
11969         return (signed long)val;
11970     } else
11971 #endif
11972     if (likely(PyLong_Check(x))) {
11973         if (is_unsigned) {
11974             if (unlikely(Py_SIZE(x) < 0)) {
11975                 PyErr_SetString(PyExc_OverflowError,
11976                                 "can't convert negative value to signed long");
11977                 return (signed long)-1;
11978             }
11979             return (signed long)PyLong_AsUnsignedLong(x);
11980         } else {
11981             return (signed long)PyLong_AsLong(x);
11982         }
11983     } else {
11984         signed long val;
11985         PyObject *tmp = __Pyx_PyNumber_Int(x);
11986         if (!tmp) return (signed long)-1;
11987         val = __Pyx_PyInt_AsSignedLong(tmp);
11988         Py_DECREF(tmp);
11989         return val;
11990     }
11991 }
11992
11993 static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
11994     const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
11995     const int is_unsigned = neg_one > const_zero;
11996 #if PY_VERSION_HEX < 0x03000000
11997     if (likely(PyInt_Check(x))) {
11998         long val = PyInt_AS_LONG(x);
11999         if (is_unsigned && unlikely(val < 0)) {
12000             PyErr_SetString(PyExc_OverflowError,
12001                             "can't convert negative value to signed PY_LONG_LONG");
12002             return (signed PY_LONG_LONG)-1;
12003         }
12004         return (signed PY_LONG_LONG)val;
12005     } else
12006 #endif
12007     if (likely(PyLong_Check(x))) {
12008         if (is_unsigned) {
12009             if (unlikely(Py_SIZE(x) < 0)) {
12010                 PyErr_SetString(PyExc_OverflowError,
12011                                 "can't convert negative value to signed PY_LONG_LONG");
12012                 return (signed PY_LONG_LONG)-1;
12013             }
12014             return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
12015         } else {
12016             return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
12017         }
12018     } else {
12019         signed PY_LONG_LONG val;
12020         PyObject *tmp = __Pyx_PyNumber_Int(x);
12021         if (!tmp) return (signed PY_LONG_LONG)-1;
12022         val = __Pyx_PyInt_AsSignedLongLong(tmp);
12023         Py_DECREF(tmp);
12024         return val;
12025     }
12026 }
12027
12028 static void __Pyx_WriteUnraisable(const char *name, int clineno,
12029                                   int lineno, const char *filename) {
12030     PyObject *old_exc, *old_val, *old_tb;
12031     PyObject *ctx;
12032     __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
12033     #if PY_MAJOR_VERSION < 3
12034     ctx = PyString_FromString(name);
12035     #else
12036     ctx = PyUnicode_FromString(name);
12037     #endif
12038     __Pyx_ErrRestore(old_exc, old_val, old_tb);
12039     if (!ctx) {
12040         PyErr_WriteUnraisable(Py_None);
12041     } else {
12042         PyErr_WriteUnraisable(ctx);
12043         Py_DECREF(ctx);
12044     }
12045 }
12046
12047 static int __Pyx_check_binary_version(void) {
12048     char ctversion[4], rtversion[4];
12049     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
12050     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
12051     if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
12052         char message[200];
12053         PyOS_snprintf(message, sizeof(message),
12054                       "compiletime version %s of module '%.100s' "
12055                       "does not match runtime version %s",
12056                       ctversion, __Pyx_MODULE_NAME, rtversion);
12057         #if PY_VERSION_HEX < 0x02050000
12058         return PyErr_Warn(NULL, message);
12059         #else
12060         return PyErr_WarnEx(NULL, message, 1);
12061         #endif
12062     }
12063     return 0;
12064 }
12065
12066 static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
12067 #if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
12068     PyObject *ob = PyCapsule_New(vtable, 0, 0);
12069 #else
12070     PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
12071 #endif
12072     if (!ob)
12073         goto bad;
12074     if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
12075         goto bad;
12076     Py_DECREF(ob);
12077     return 0;
12078 bad:
12079     Py_XDECREF(ob);
12080     return -1;
12081 }
12082
12083 #ifndef __PYX_HAVE_RT_ImportType
12084 #define __PYX_HAVE_RT_ImportType
12085 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
12086     size_t size, int strict)
12087 {
12088     PyObject *py_module = 0;
12089     PyObject *result = 0;
12090     PyObject *py_name = 0;
12091     char warning[200];
12092     py_module = __Pyx_ImportModule(module_name);
12093     if (!py_module)
12094         goto bad;
12095     py_name = __Pyx_PyIdentifier_FromString(class_name);
12096     if (!py_name)
12097         goto bad;
12098     result = PyObject_GetAttr(py_module, py_name);
12099     Py_DECREF(py_name);
12100     py_name = 0;
12101     Py_DECREF(py_module);
12102     py_module = 0;
12103     if (!result)
12104         goto bad;
12105     if (!PyType_Check(result)) {
12106         PyErr_Format(PyExc_TypeError,
12107             "%s.%s is not a type object",
12108             module_name, class_name);
12109         goto bad;
12110     }
12111     if (!strict && (size_t)((PyTypeObject *)result)->tp_basicsize > size) {
12112         PyOS_snprintf(warning, sizeof(warning),
12113             "%s.%s size changed, may indicate binary incompatibility",
12114             module_name, class_name);
12115         #if PY_VERSION_HEX < 0x02050000
12116         if (PyErr_Warn(NULL, warning) < 0) goto bad;
12117         #else
12118         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
12119         #endif
12120     }
12121     else if ((size_t)((PyTypeObject *)result)->tp_basicsize != size) {
12122         PyErr_Format(PyExc_ValueError,
12123             "%s.%s has the wrong size, try recompiling",
12124             module_name, class_name);
12125         goto bad;
12126     }
12127     return (PyTypeObject *)result;
12128 bad:
12129     Py_XDECREF(py_module);
12130     Py_XDECREF(result);
12131     return NULL;
12132 }
12133 #endif
12134
12135 #ifndef __PYX_HAVE_RT_ImportModule
12136 #define __PYX_HAVE_RT_ImportModule
12137 static PyObject *__Pyx_ImportModule(const char *name) {
12138     PyObject *py_name = 0;
12139     PyObject *py_module = 0;
12140     py_name = __Pyx_PyIdentifier_FromString(name);
12141     if (!py_name)
12142         goto bad;
12143     py_module = PyImport_Import(py_name);
12144     Py_DECREF(py_name);
12145     return py_module;
12146 bad:
12147     Py_XDECREF(py_name);
12148     return 0;
12149 }
12150 #endif
12151
12152 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
12153     int start = 0, mid = 0, end = count - 1;
12154     if (end >= 0 && code_line > entries[end].code_line) {
12155         return count;
12156     }
12157     while (start < end) {
12158         mid = (start + end) / 2;
12159         if (code_line < entries[mid].code_line) {
12160             end = mid;
12161         } else if (code_line > entries[mid].code_line) {
12162              start = mid + 1;
12163         } else {
12164             return mid;
12165         }
12166     }
12167     if (code_line <= entries[mid].code_line) {
12168         return mid;
12169     } else {
12170         return mid + 1;
12171     }
12172 }
12173 static PyCodeObject *__pyx_find_code_object(int code_line) {
12174     PyCodeObject* code_object;
12175     int pos;
12176     if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
12177         return NULL;
12178     }
12179     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
12180     if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
12181         return NULL;
12182     }
12183     code_object = __pyx_code_cache.entries[pos].code_object;
12184     Py_INCREF(code_object);
12185     return code_object;
12186 }
12187 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
12188     int pos, i;
12189     __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
12190     if (unlikely(!code_line)) {
12191         return;
12192     }
12193     if (unlikely(!entries)) {
12194         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
12195         if (likely(entries)) {
12196             __pyx_code_cache.entries = entries;
12197             __pyx_code_cache.max_count = 64;
12198             __pyx_code_cache.count = 1;
12199             entries[0].code_line = code_line;
12200             entries[0].code_object = code_object;
12201             Py_INCREF(code_object);
12202         }
12203         return;
12204     }
12205     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
12206     if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
12207         PyCodeObject* tmp = entries[pos].code_object;
12208         entries[pos].code_object = code_object;
12209         Py_DECREF(tmp);
12210         return;
12211     }
12212     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
12213         int new_max = __pyx_code_cache.max_count + 64;
12214         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
12215             __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
12216         if (unlikely(!entries)) {
12217             return;
12218         }
12219         __pyx_code_cache.entries = entries;
12220         __pyx_code_cache.max_count = new_max;
12221     }
12222     for (i=__pyx_code_cache.count; i>pos; i--) {
12223         entries[i] = entries[i-1];
12224     }
12225     entries[pos].code_line = code_line;
12226     entries[pos].code_object = code_object;
12227     __pyx_code_cache.count++;
12228     Py_INCREF(code_object);
12229 }
12230
12231 #include "compile.h"
12232 #include "frameobject.h"
12233 #include "traceback.h"
12234 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
12235             const char *funcname, int c_line,
12236             int py_line, const char *filename) {
12237     PyCodeObject *py_code = 0;
12238     PyObject *py_srcfile = 0;
12239     PyObject *py_funcname = 0;
12240     #if PY_MAJOR_VERSION < 3
12241     py_srcfile = PyString_FromString(filename);
12242     #else
12243     py_srcfile = PyUnicode_FromString(filename);
12244     #endif
12245     if (!py_srcfile) goto bad;
12246     if (c_line) {
12247         #if PY_MAJOR_VERSION < 3
12248         py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
12249         #else
12250         py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
12251         #endif
12252     }
12253     else {
12254         #if PY_MAJOR_VERSION < 3
12255         py_funcname = PyString_FromString(funcname);
12256         #else
12257         py_funcname = PyUnicode_FromString(funcname);
12258         #endif
12259     }
12260     if (!py_funcname) goto bad;
12261     py_code = __Pyx_PyCode_New(
12262         0,            /*int argcount,*/
12263         0,            /*int kwonlyargcount,*/
12264         0,            /*int nlocals,*/
12265         0,            /*int stacksize,*/
12266         0,            /*int flags,*/
12267         __pyx_empty_bytes, /*PyObject *code,*/
12268         __pyx_empty_tuple, /*PyObject *consts,*/
12269         __pyx_empty_tuple, /*PyObject *names,*/
12270         __pyx_empty_tuple, /*PyObject *varnames,*/
12271         __pyx_empty_tuple, /*PyObject *freevars,*/
12272         __pyx_empty_tuple, /*PyObject *cellvars,*/
12273         py_srcfile,   /*PyObject *filename,*/
12274         py_funcname,  /*PyObject *name,*/
12275         py_line,      /*int firstlineno,*/
12276         __pyx_empty_bytes  /*PyObject *lnotab*/
12277     );
12278     Py_DECREF(py_srcfile);
12279     Py_DECREF(py_funcname);
12280     return py_code;
12281 bad:
12282     Py_XDECREF(py_srcfile);
12283     Py_XDECREF(py_funcname);
12284     return NULL;
12285 }
12286 static void __Pyx_AddTraceback(const char *funcname, int c_line,
12287                                int py_line, const char *filename) {
12288     PyCodeObject *py_code = 0;
12289     PyObject *py_globals = 0;
12290     PyFrameObject *py_frame = 0;
12291     py_code = __pyx_find_code_object(c_line ? c_line : py_line);
12292     if (!py_code) {
12293         py_code = __Pyx_CreateCodeObjectForTraceback(
12294             funcname, c_line, py_line, filename);
12295         if (!py_code) goto bad;
12296         __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
12297     }
12298     py_globals = PyModule_GetDict(__pyx_m);
12299     if (!py_globals) goto bad;
12300     py_frame = PyFrame_New(
12301         PyThreadState_GET(), /*PyThreadState *tstate,*/
12302         py_code,             /*PyCodeObject *code,*/
12303         py_globals,          /*PyObject *globals,*/
12304         0                    /*PyObject *locals*/
12305     );
12306     if (!py_frame) goto bad;
12307     py_frame->f_lineno = py_line;
12308     PyTraceBack_Here(py_frame);
12309 bad:
12310     Py_XDECREF(py_code);
12311     Py_XDECREF(py_frame);
12312 }
12313
12314 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
12315     while (t->p) {
12316         #if PY_MAJOR_VERSION < 3
12317         if (t->is_unicode) {
12318             *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
12319         } else if (t->intern) {
12320             *t->p = PyString_InternFromString(t->s);
12321         } else {
12322             *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
12323         }
12324         #else  /* Python 3+ has unicode identifiers */
12325         if (t->is_unicode | t->is_str) {
12326             if (t->intern) {
12327                 *t->p = PyUnicode_InternFromString(t->s);
12328             } else if (t->encoding) {
12329                 *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
12330             } else {
12331                 *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
12332             }
12333         } else {
12334             *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
12335         }
12336         #endif
12337         if (!*t->p)
12338             return -1;
12339         ++t;
12340     }
12341     return 0;
12342 }
12343
12344
12345 /* Type Conversion Functions */
12346
12347 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
12348    int is_true = x == Py_True;
12349    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
12350    else return PyObject_IsTrue(x);
12351 }
12352
12353 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
12354   PyNumberMethods *m;
12355   const char *name = NULL;
12356   PyObject *res = NULL;
12357 #if PY_VERSION_HEX < 0x03000000
12358   if (PyInt_Check(x) || PyLong_Check(x))
12359 #else
12360   if (PyLong_Check(x))
12361 #endif
12362     return Py_INCREF(x), x;
12363   m = Py_TYPE(x)->tp_as_number;
12364 #if PY_VERSION_HEX < 0x03000000
12365   if (m && m->nb_int) {
12366     name = "int";
12367     res = PyNumber_Int(x);
12368   }
12369   else if (m && m->nb_long) {
12370     name = "long";
12371     res = PyNumber_Long(x);
12372   }
12373 #else
12374   if (m && m->nb_int) {
12375     name = "int";
12376     res = PyNumber_Long(x);
12377   }
12378 #endif
12379   if (res) {
12380 #if PY_VERSION_HEX < 0x03000000
12381     if (!PyInt_Check(res) && !PyLong_Check(res)) {
12382 #else
12383     if (!PyLong_Check(res)) {
12384 #endif
12385       PyErr_Format(PyExc_TypeError,
12386                    "__%s__ returned non-%s (type %.200s)",
12387                    name, name, Py_TYPE(res)->tp_name);
12388       Py_DECREF(res);
12389       return NULL;
12390     }
12391   }
12392   else if (!PyErr_Occurred()) {
12393     PyErr_SetString(PyExc_TypeError,
12394                     "an integer is required");
12395   }
12396   return res;
12397 }
12398
12399 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
12400   Py_ssize_t ival;
12401   PyObject* x = PyNumber_Index(b);
12402   if (!x) return -1;
12403   ival = PyInt_AsSsize_t(x);
12404   Py_DECREF(x);
12405   return ival;
12406 }
12407
12408 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
12409 #if PY_VERSION_HEX < 0x02050000
12410    if (ival <= LONG_MAX)
12411        return PyInt_FromLong((long)ival);
12412    else {
12413        unsigned char *bytes = (unsigned char *) &ival;
12414        int one = 1; int little = (int)*(unsigned char*)&one;
12415        return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
12416    }
12417 #else
12418    return PyInt_FromSize_t(ival);
12419 #endif
12420 }
12421
12422 static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
12423    unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
12424    if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
12425        return (size_t)-1;
12426    } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
12427        PyErr_SetString(PyExc_OverflowError,
12428                        "value too large to convert to size_t");
12429        return (size_t)-1;
12430    }
12431    return (size_t)val;
12432 }
12433
12434
12435 #endif /* Py_PYTHON_H */