]> git.donarmstrong.com Git - samtools.git/blobdiff - bcftools/bcf.h
faster for large sample size (in principle)
[samtools.git] / bcftools / bcf.h
index 09235740584413e1548e264424137e6784c0555f..c317440a21fafbe2334a77efd48f8b05d9d8681e 100644 (file)
@@ -6,7 +6,8 @@
 #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;
@@ -57,11 +58,18 @@ extern "C" {
        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);
@@ -73,4 +81,15 @@ extern "C" {
 }
 #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