inc/rangeTree.h File Reference

#include "rbTree.h"

Include dependency graph for rangeTree.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  range

Defines

#define rangeTreeFree(a)   rbTreeFree(a)

Functions

rbTreerangeTreeNew ()
int rangeCmp (void *va, void *vb)
rangerangeTreeAdd (struct rbTree *tree, int start, int end)
boolean rangeTreeOverlaps (struct rbTree *tree, int start, int end)
int rangeTreeOverlapSize (struct rbTree *tree, int start, int end)
rangerangeTreeFindEnclosing (struct rbTree *tree, int start, int end)
rangerangeTreeAllOverlapping (struct rbTree *tree, int start, int end)
rangerangeTreeList (struct rbTree *tree)
rbTreerangeTreeNewDetailed (struct lm *lm, struct rbTreeNode *stack[128])


Define Documentation

#define rangeTreeFree (  )     rbTreeFree(a)

Definition at line 26 of file rangeTree.h.


Function Documentation

int rangeCmp ( void *  va,
void *  vb 
)

Definition at line 13 of file rangeTree.c.

References range::end, and range::start.

Referenced by rangeTreeNew(), and rangeTreeNewDetailed().

00016 {
00017 struct range *a = va;
00018 struct range *b = vb;
00019 if (a->end <= b->start)
00020     return -1;
00021 else if (b->end <= a->start)
00022     return 1;
00023 else
00024     return 0;
00025 }

Here is the caller graph for this function:

struct range* rangeTreeAdd ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 27 of file rangeTree.c.

References range::end, rbTree::lm, lmCloneMem(), max, min, rbTreeAdd(), rbTreeRemove(), range::start, and range::val.

00029 {
00030 struct range tempR, *existing;
00031 tempR.start = start;
00032 tempR.end = end;
00033 tempR.val = NULL;
00034 while ((existing = rbTreeRemove(tree, &tempR)) != NULL)
00035      {
00036      tempR.start = min(tempR.start, existing->start);
00037      tempR.end = max(tempR.end, existing->end);
00038      }
00039 struct range *r = lmCloneMem(tree->lm, &tempR, sizeof(tempR));
00040 rbTreeAdd(tree, r);
00041 return r;
00042 }

Here is the call graph for this function:

struct range* rangeTreeAllOverlapping ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 86 of file rangeTree.c.

References range::end, rangeList, rangeListAdd(), rbTreeTraverseRange(), slReverse(), and range::start.

00090 {
00091 struct range tempR;
00092 tempR.start = start;
00093 tempR.end = end;
00094 rangeList = NULL;
00095 rbTreeTraverseRange(tree, &tempR, &tempR, rangeListAdd);
00096 slReverse(&rangeList);
00097 return rangeList;
00098 }

Here is the call graph for this function:

struct range* rangeTreeFindEnclosing ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 73 of file rangeTree.c.

References range::end, rbTreeFind(), and range::start.

00076 {
00077 struct range tempR, *r;
00078 tempR.start = start;
00079 tempR.end = end;
00080 r = rbTreeFind(tree, &tempR);
00081 if (r != NULL && r->start <= start && r->end >= end)
00082     return r;
00083 return NULL;
00084 }

Here is the call graph for this function:

struct range* rangeTreeList ( struct rbTree tree  )  [read]

Definition at line 63 of file rangeTree.c.

References rangeList, rangeListAdd(), rbTreeTraverse(), and slReverse().

00066 {
00067 rangeList = NULL;
00068 rbTreeTraverse(tree, rangeListAdd);
00069 slReverse(&rangeList);
00070 return rangeList;
00071 }

Here is the call graph for this function:

struct rbTree* rangeTreeNew (  )  [read]

Definition at line 126 of file rangeTree.c.

References rangeCmp(), and rbTreeNew().

00128 {
00129 return rbTreeNew(rangeCmp);
00130 }

Here is the call graph for this function:

struct rbTree* rangeTreeNewDetailed ( struct lm lm,
struct rbTreeNode stack[128] 
) [read]

Definition at line 132 of file rangeTree.c.

References lm, rangeCmp(), rbTreeNewDetailed(), and rbTree::stack.

00136 {
00137 return rbTreeNewDetailed(rangeCmp, lm, stack);
00138 }

Here is the call graph for this function:

boolean rangeTreeOverlaps ( struct rbTree tree,
int  start,
int  end 
)

Definition at line 44 of file rangeTree.c.

References range::end, rbTreeFind(), range::start, and range::val.

00046 {
00047 struct range tempR;
00048 tempR.start = start;
00049 tempR.end = end;
00050 tempR.val = NULL;
00051 return rbTreeFind(tree, &tempR) != NULL;
00052 }

Here is the call graph for this function:

int rangeTreeOverlapSize ( struct rbTree tree,
int  start,
int  end 
)

Definition at line 112 of file rangeTree.c.

References addOverlap(), range::end, overlapEnd, overlapStart, rbTreeTraverseRange(), range::start, and totalOverlap.

Referenced by pslRangeTreeOverlap().

00116 {
00117 struct range tempR;
00118 tempR.start = overlapStart = start;
00119 tempR.end = overlapEnd = end;
00120 totalOverlap = 0;
00121 rbTreeTraverseRange(tree, &tempR, &tempR, addOverlap);
00122 return totalOverlap;
00123 }

Here is the call graph for this function:

Here is the caller graph for this function:


Generated on Tue Dec 25 19:13:54 2007 for blat by  doxygen 1.5.2