@@ -371,7 +371,7 @@ int bcf_sr_add_reader(bcf_srs_t *files, const char *fname)
371371 if ( !files -> regions )
372372 files -> regions = _regions_init_string (names [i ]);
373373 else
374- _regions_add (files -> regions , names [i ], -1 , -1 );
374+ _regions_add (files -> regions , names [i ], CSI_COOR_EMPTY , CSI_COOR_EMPTY );
375375 }
376376 free (names );
377377 _regions_sort_and_merge (files -> regions );
@@ -555,7 +555,7 @@ static int _readers_next_region(bcf_srs_t *files)
555555 int prev_iseq = files -> regions -> iseq ;
556556 hts_pos_t prev_end = files -> regions -> end ;
557557 if ( bcf_sr_regions_next (files -> regions )< 0 ) return -1 ;
558- files -> regions -> prev_end = prev_iseq == files -> regions -> iseq ? prev_end : -1 ;
558+ files -> regions -> prev_end = prev_iseq == files -> regions -> iseq ? prev_end : CSI_COOR_EMPTY ;
559559
560560 for (i = 0 ; i < files -> nreaders ; i ++ )
561561 _reader_seek (& files -> readers [i ],files -> regions -> seq_names [files -> regions -> iseq ],files -> regions -> start ,files -> regions -> end );
@@ -616,7 +616,7 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
616616 {
617617 reader -> buffer [reader -> mbuffer - i ] = bcf_init1 ();
618618 reader -> buffer [reader -> mbuffer - i ]-> max_unpack = files -> max_unpack ;
619- reader -> buffer [reader -> mbuffer - i ]-> pos = -1 ; // for rare cases when VCF starts from 1
619+ reader -> buffer [reader -> mbuffer - i ]-> pos = CSI_COOR_EMPTY ; // for rare cases when VCF starts from 1 or 0
620620 }
621621 }
622622 if ( files -> streaming )
@@ -656,7 +656,6 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
656656 if ( ret < 0 ) break ; // no more lines or an error
657657 bcf_subset_format (reader -> header ,reader -> buffer [reader -> nbuffer + 1 ]);
658658 }
659-
660659 // Prevent creation of duplicates from records overlapping multiple regions
661660 // and recognize true variant overlaps vs record overlaps (e.g. TA>T vs A>-)
662661 if ( files -> regions )
@@ -676,7 +675,6 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
676675 hts_log_error ("This should never happen, just to keep clang compiler happy: %d" ,BCF_SR_AUX (files )-> targets_overlap );
677676 exit (1 );
678677 }
679-
680678 if ( beg <= files -> regions -> prev_end || end < files -> regions -> start || beg > files -> regions -> end ) continue ;
681679 }
682680
@@ -954,9 +952,9 @@ int bcf_sr_set_samples(bcf_srs_t *files, const char *fname, int is_file)
954952// inclusive. Sorting and merging step needed afterwards: qsort(..,cmp_regions) and merge_regions().
955953static int _regions_add (bcf_sr_regions_t * reg , const char * chr , hts_pos_t start , hts_pos_t end )
956954{
957- if ( start == -1 && end == -1 )
955+ if ( start == CSI_COOR_EMPTY && end == CSI_COOR_EMPTY )
958956 {
959- start = 0 ; end = MAX_CSI_COOR - 1 ;
957+ start = -1 ; end = MAX_CSI_COOR - 1 ;
960958 }
961959 else
962960 {
@@ -1029,8 +1027,9 @@ void _regions_sort_and_merge(bcf_sr_regions_t *reg)
10291027static bcf_sr_regions_t * _regions_init_string (const char * str )
10301028{
10311029 bcf_sr_regions_t * reg = (bcf_sr_regions_t * ) calloc (1 , sizeof (bcf_sr_regions_t ));
1032- reg -> start = reg -> end = -1 ;
1033- reg -> prev_start = reg -> prev_end = reg -> prev_seq = -1 ;
1030+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1031+ reg -> prev_start = reg -> prev_end = CSI_COOR_EMPTY ;
1032+ reg -> prev_seq = -1 ;
10341033
10351034 kstring_t tmp = {0 ,0 ,0 };
10361035 const char * sp = str , * ep = str ;
@@ -1075,7 +1074,7 @@ static bcf_sr_regions_t *_regions_init_string(const char *str)
10751074 }
10761075 else
10771076 {
1078- if ( tmp .l ) _regions_add (reg , tmp .s , -1 , -1 );
1077+ if ( tmp .l ) _regions_add (reg , tmp .s , CSI_COOR_EMPTY , CSI_COOR_EMPTY );
10791078 if ( !* ep ) break ;
10801079 sp = ++ ep ;
10811080 }
@@ -1157,8 +1156,9 @@ bcf_sr_regions_t *bcf_sr_regions_init(const char *regions, int is_file, int ichr
11571156 }
11581157
11591158 reg = (bcf_sr_regions_t * ) calloc (1 , sizeof (bcf_sr_regions_t ));
1160- reg -> start = reg -> end = -1 ;
1161- reg -> prev_start = reg -> prev_end = reg -> prev_seq = -1 ;
1159+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1160+ reg -> prev_start = reg -> prev_end = CSI_COOR_EMPTY ;
1161+ reg -> prev_seq = -1 ;
11621162
11631163 reg -> file = hts_open (regions , "rb" );
11641164 if ( !reg -> file )
@@ -1253,7 +1253,8 @@ void bcf_sr_regions_destroy(bcf_sr_regions_t *reg)
12531253
12541254int bcf_sr_regions_seek (bcf_sr_regions_t * reg , const char * seq )
12551255{
1256- reg -> iseq = reg -> start = reg -> end = -1 ;
1256+ reg -> iseq = -1 ;
1257+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
12571258 if ( khash_str2int_get (reg -> seq_hash , seq , & reg -> iseq ) < 0 ) return -1 ; // sequence seq not in regions
12581259
12591260 // using in-memory regions
@@ -1284,7 +1285,7 @@ static int advance_creg(region_t *reg)
12841285int bcf_sr_regions_next (bcf_sr_regions_t * reg )
12851286{
12861287 if ( reg -> iseq < 0 ) return -1 ;
1287- reg -> start = reg -> end = -1 ;
1288+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
12881289 reg -> nals = 0 ;
12891290
12901291 // using in-memory regions
@@ -1442,7 +1443,7 @@ static int _bcf_sr_regions_overlap(bcf_sr_regions_t *reg, const char *seq, hts_p
14421443 bcf_sr_regions_flush (reg );
14431444
14441445 bcf_sr_regions_seek (reg , seq );
1445- reg -> start = reg -> end = -1 ;
1446+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
14461447 }
14471448 if ( reg -> prev_seq == iseq && reg -> iseq != iseq ) return -2 ; // no more regions on this chromosome
14481449 reg -> prev_seq = reg -> iseq ;
0 commit comments