faa368a1cfe1b850ee6604919c1ef054f9949e4f kent Thu Jul 25 11:03:23 2013 -0700 Adding functions to sum up size of all ranges in tree. diff --git src/inc/rangeTree.h src/inc/rangeTree.h index e2ceeca..7361d02 100644 --- src/inc/rangeTree.h +++ src/inc/rangeTree.h @@ -73,26 +73,33 @@ * range of start, end or total size return value. */ struct range *rangeTreeFindEnclosing(struct rbTree *tree, int start, int end); /* Find item in range tree that encloses range between start and end * if there is any such item. */ struct range *rangeTreeAllOverlapping(struct rbTree *tree, int start, int end); /* Return list of all items in range tree that overlap interval start-end. * Do not free this list, it is owned by tree. However it is only good until * next call to rangeTreeFindInRange or rangTreeList. Not thread safe. */ struct range *rangeTreeMaxOverlapping(struct rbTree *tree, int start, int end); /* Return item that overlaps most with start-end. Not thread safe. Trashes list used * by rangeTreeAllOverlapping. */ +void rangeTreeSumRangeCallback(void *item, void *context); +/* This is a callback for rbTreeTraverse with context. It just adds up + * end-start */ + +long long rangeTreeSumRanges(struct rbTree *tree); +/* Return sum of end-start of all items. */ + struct range *rangeTreeList(struct rbTree *tree); /* Return list of all ranges in tree in order. Not thread safe. * No need to free this when done, memory is local to tree. */ struct rbTree *rangeTreeNewDetailed(struct lm *lm, struct rbTreeNode *stack[128]); /* Allocate rangeTree on an existing local memory & stack. This is for cases * where you want a lot of trees, and don't want the overhead for each one. * Note, to clean these up, just do freez(&rbTree) rather than rbFreeTree(&rbTree). */ #endif /* RANGETREE_H */