]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_c/Maasha/src/lib/barray.c
added bed2tag_contigs.c
[biopieces.git] / code_c / Maasha / src / lib / barray.c
index 08fdc02a356754363ab69e5e65fc00b02a372826..474e56ddff0874f426d58e5b292f81dcce800d50 100644 (file)
@@ -64,7 +64,7 @@ void barray_print( barray *ba )
 
     int i;
 
-    printf( "\nnmemb: %zu   end: %zu\n", ba->nmemb, ba->end );
+    printf( "\nba->nmemb: %zu   ba->end: %zu\n", ba->nmemb, ba->end );
 
     for ( i = 0; i < ba->nmemb; i++ ) {
         printf( "%d: %d\n", i, ba->array[ i ] );
@@ -82,6 +82,7 @@ void barray_interval_inc( barray *ba, size_t beg, size_t end, ushort score )
     assert( beg >= 0 );
     assert( end >= 0 );
     assert( end >= beg );
+    assert( score > 0 );
 
     if ( end > ba->nmemb ) {
         barray_resize( ba, barray_new_size( end ) );
@@ -108,7 +109,7 @@ bool barray_interval_scan( barray *ba, size_t *pos_pt, size_t *beg_pt, size_t *e
     size_t beg = *beg_pt;
     size_t end = *end_pt;
 
-    if ( pos > ba->end ) {
+    if ( pos > ba->end || ba->end == 0 ) {
         return FALSE;
     }
 
@@ -138,6 +139,23 @@ bool barray_interval_scan( barray *ba, size_t *pos_pt, size_t *beg_pt, size_t *e
 }
 
 
+ushort barray_interval_max( barray *ba, size_t beg, size_t end )
+{
+    /* Martin A. Hansen, December 2008. */
+
+    /* Locate the max value in an interval within a byte array. */ 
+
+    size_t i   = 0;
+    ushort max = 0;
+
+    for ( i = beg; i <= end; i++ ) {
+        max = MAX( max, ba->array[ i ] );
+    }
+
+    return max;
+}
+
+
 void barray_destroy( barray **ba_ppt )
 {
     /* Martin A. Hansen, November 2008. */