int bcf_write(bcf_t *bp, const bcf_hdr_t *h, const bcf1_t *b)
{
- uint32_t x;
int i, l = 0;
if (b == 0) return -1;
bgzf_write(bp->fp, &b->tid, 4);
bgzf_write(bp->fp, &b->pos, 4);
- x = b->qual<<24 | b->l_str;
- bgzf_write(bp->fp, &x, 4);
+ bgzf_write(bp->fp, &b->qual, 4);
+ bgzf_write(bp->fp, &b->l_str, 4);
bgzf_write(bp->fp, b->str, b->l_str);
l = 12 + b->l_str;
for (i = 0; i < b->n_gi; ++i) {
int bcf_read(bcf_t *bp, const bcf_hdr_t *h, bcf1_t *b)
{
int i, l = 0;
- uint32_t x;
if (b == 0) return -1;
if (bgzf_read(bp->fp, &b->tid, 4) == 0) return -1;
bgzf_read(bp->fp, &b->pos, 4);
- bgzf_read(bp->fp, &x, 4);
- b->qual = x >> 24; b->l_str = x << 8 >> 8;
+ bgzf_read(bp->fp, &b->qual, 4);
+ bgzf_read(bp->fp, &b->l_str, 4);
if (b->l_str > b->m_str) {
b->m_str = b->l_str;
kroundup32(b->m_str);
typedef struct {
int32_t tid, pos;
- uint32_t qual:8, l_str:24;
- int m_str;
+ int32_t l_str, m_str;
+ float qual;
char *str, *ref, *alt, *flt, *info, *fmt; // fmt, ref, alt and info point to str
int n_gi, m_gi;
bcf_ginfo_t *gi;
\multicolumn{5}{|c|}{\it \color{gray}{List of records until the end of the file}}\\\cline{2-5}
& {\tt seq\_id} & Reference sequence ID & {\tt int32\_t} & \\\cline{2-5}
& {\tt pos} & Position & {\tt int32\_t} & \\\cline{2-5}
-& {\tt qual\_slen} & {\tt varQual\char60\char60 24 | slen} & {\tt uint32\_t} & \\\cline{2-5}
+& {\tt qual} & Variant quality & {\tt float} & \\\cline{2-5}
+& {\tt l\_str} & Length of str & {\tt int32\_t} & \\\cline{2-5}
& {\tt str} & {\tt ID+REF+ALT+FILTER+INFO+FORMAT}, {\tt NULL} padded & {\tt char[slen]} &\\\cline{2-5}
& \multicolumn{4}{c|}{Blocks of data; \#blocks and formats defined by {\tt FORMAT} (table below)}\\
\hline