31857342d47d49372089fe3b5aa802932313f3ef kent Sat Jun 18 06:30:38 2022 -0700 Fixed bug in rangeTreeAddToCoverageDepth. Added parallel rangeTreeAddToCoverageList. diff --git src/inc/rangeTree.h src/inc/rangeTree.h index 7361d02..15bae7c 100644 --- src/inc/rangeTree.h +++ src/inc/rangeTree.h @@ -44,30 +44,34 @@ struct range *rangeTreeAddValCount(struct rbTree *tree, int start, int end); /* Add range to tree, merging with existing ranges if need be. * Set range val to count of elements in the range. Counts are pointers to * ints allocated in tree localmem */ struct range *rangeTreeAddValList(struct rbTree *tree, int start, int end, void *val); /* Add range to tree, merging with existing ranges if need be. * Add val to the list of values (if any) in each range. * val must be valid argument to slCat (ie, be a struct with a 'next' pointer as its first member) */ void rangeTreeAddToCoverageDepth(struct rbTree *tree, int start, int end); /* Add area from start to end to a tree that is being built up to store the * depth of coverage. Recover coverage back out by looking at ptToInt(range->val) * on tree elements. */ +void rangeTreeAddToCoverageList(struct rbTree *tree, int start, int end, void *val); +/* Add area from start to end to a tree that is being built up to store the + * list of items in each range. Recover list by looking at range->val as list head */ + boolean rangeTreeOverlaps(struct rbTree *tree, int start, int end); /* Return TRUE if start-end overlaps anything in tree */ int rangeTreeOverlapSize(struct rbTree *tree, int start, int end); /* Return the total size of intersection between interval * from start to end, and items in range tree. Sadly not * thread-safe. * On 32 bit machines be careful not to overflow * range of start, end or total size return value. */ int rangeTreeOverlapTotalSize(struct rbTree *tree); /* Return the total size of all ranges in range tree. * Sadly not thread-safe. * On 32 bit machines be careful not to overflow * range of start, end or total size return value. */