#include "bgzf.h"
typedef struct {
- int fmt, len; // len is the unit length
+ uint32_t fmt;
+ int len; // len is the unit length
void *data;
// derived info: fmt, len
} bcf_ginfo_t;
int bcf_destroy(bcf1_t *b);
char *bcf_fmt(const bcf_hdr_t *h, bcf1_t *b);
+ bcf_t *vcf_open(const char *fn, const char *mode);
int vcf_close(bcf_t *bp);
+ bcf_hdr_t *vcf_hdr_read(bcf_t *bp);
+ int vcf_hdr_write(bcf_t *bp, const bcf_hdr_t *h);
+ int vcf_write(bcf_t *bp, bcf_hdr_t *h, bcf1_t *b);
+ int vcf_read(bcf_t *bp, bcf_hdr_t *h, bcf1_t *b);
void *bcf_build_refhash(bcf_hdr_t *h);
void bcf_str2id_destroy(void *_hash);
+ int bcf_str2id_add(void *_hash, const char *str);
int bcf_str2id(void *_hash, const char *str);
+ void *bcf_str2id_init();
int bcf_idx_build(const char *fn);
uint64_t bcf_idx_query(const bcf_idx_t *idx, int tid, int beg, int end);
}
#endif
+static inline uint32_t bcf_str2int(const char *str, int l)
+{
+ int i;
+ uint32_t x = 0;
+ for (i = 0; i < l && i < 4; ++i) {
+ if (str[i] == 0) return x;
+ x = x<<8 | str[i];
+ }
+ return x;
+}
+
#endif