33#ifdef __ZLIB_AVAILABLE__
37#define BGZF_BLOCK_SIZE 0x10000
39#define BGZF_ERR_ZLIB 1
40#define BGZF_ERR_HEADER 2
42#define BGZF_ERR_MISUSE 8
45 int open_mode:8, compress_level:8, errcode:16;
47 int block_length, block_offset;
48 int64_t block_address;
49 void *uncompressed_block, *compressed_block;
55#define KSTRING_T kstring_t
80 BGZF* bgzf_dopen(
int fd,
const char *mode);
85 BGZF* bgzf_open(
const char* path,
const char *mode);
93 int bgzf_close(
BGZF *fp);
103 ssize_t bgzf_read(
BGZF *fp,
void *data, ssize_t length);
113 ssize_t bgzf_write(
BGZF *fp,
const void *data, ssize_t length);
118 int bgzf_flush(
BGZF *fp);
126 #define bgzf_tell(fp) ((fp->block_address << 16) | (fp->block_offset & 0xFFFF))
136 int64_t bgzf_seek(
BGZF *fp, int64_t pos,
int whence);
144 int bgzf_check_EOF(
BGZF *fp);
152 int bgzf_is_bgzf(
const char *fn);
164 void bgzf_set_cache_size(
BGZF *fp,
int size);
169 int bgzf_flush_try(
BGZF *fp, ssize_t size);
176 int bgzf_getc(
BGZF *fp);
191 int bgzf_read_block(
BGZF *fp);