from libc.stdint cimport int8_t, int16_t, int32_t, int64_t from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from libc.stdlib cimport malloc, calloc, realloc, free from libc.string cimport memcpy, memcmp, strncpy, strlen, strdup from libc.stdio cimport FILE, printf # Note: this replaces python "open"! cdef extern from "fcntl.h": int open(char *pathname, int flags) cdef extern from "unistd.h" nogil: ctypedef int ssize_t ssize_t read(int fd, void *buf, size_t count) int close(int fd) from pysam.libchtslib cimport hts_idx_t, hts_itr_t, htsFile, \ tbx_t, kstring_t, BGZF, HTSFile # These functions are put here and not in chtslib.pxd in order # to avoid warnings for unused functions. cdef extern from "pysam_stream.h" nogil: ctypedef struct kstream_t: pass ctypedef struct kseq_t: kstring_t name kstring_t comment kstring_t seq kstring_t qual kseq_t *kseq_init(BGZF *) int kseq_read(kseq_t *) void kseq_destroy(kseq_t *) kstream_t *ks_init(BGZF *) void ks_destroy(kstream_t *) # Retrieve characters from stream until delimiter # is reached placing results in str. int ks_getuntil(kstream_t *, int delimiter, kstring_t * str, int * dret) cdef class tabix_file_iterator: cdef BGZF * fh cdef kstream_t * kstream cdef kstring_t buffer cdef size_t size cdef Parser parser cdef int fd cdef int duplicated_fd cdef infile cdef __cnext__(self) cdef class TabixFile(HTSFile): # pointer to index structure cdef tbx_t * index cdef readonly object filename_index cdef Parser parser cdef encoding cdef class Parser: cdef encoding cdef parse(self, char * buffer, int len) cdef class asTuple(Parser): cdef parse(self, char * buffer, int len) cdef class asGTF(Parser): pass cdef class asGFF3(Parser): pass cdef class asBed(Parser): pass cdef class asVCF(Parser): pass cdef class TabixIterator: cdef hts_itr_t * iterator cdef TabixFile tabixfile cdef kstring_t buffer cdef encoding cdef int __cnext__(self) cdef class TabixIteratorParsed(TabixIterator): cdef Parser parser cdef class GZIterator: cdef object _filename cdef BGZF * gzipfile cdef kstream_t * kstream cdef kstring_t buffer cdef int __cnext__(self) cdef encoding cdef class GZIteratorHead(GZIterator): pass cdef class GZIteratorParsed(GZIterator): cdef Parser parser # Compatibility Layer for pysam < 0.8 cdef class Tabixfile(TabixFile): pass