boolean bedUniqueInTree(struct rbTree *bedTree, struct intronEv *iv) { static struct bed searchLo, searchHi; struct slRef *refList = NULL, *ref = NULL; searchLo.chrom = iv->chrom; searchLo.chromStart =iv->e1S; searchLo.chromEnd = iv->e2E; /* searchHi.chrom = iv->chrom; */ /* searchHi.chromStart = iv->e2E; */ /* searchHi.chromEnd = iv->e2E; */ refList = rbTreeItemsInRange(bedTree, &searchLo, &searchLo); if(refList == NULL) return TRUE; else slFreeList(&refList); return FALSE; }
void chainNetGetRange(char *db, char *netTable, char *chrom, int start, int end, char *extraWhere, struct cnFill **fill, struct chainNet **toFree) /* Load up the appropriate chainNet list for this range. */ { struct cnFill *searchHi=NULL, *searchLo = NULL; struct slRef *refList = NULL, *ref = NULL; (*fill) = NULL; (*toFree) = NULL; if(differentString(workingChrom, chrom)) return; if(netTree != NULL) { AllocVar(searchLo); searchLo->tStart = start; searchLo->tSize = 0; AllocVar(searchHi); searchHi->tStart = end; searchHi->tSize = 0; refList = rbTreeItemsInRange(netTree, searchLo, searchHi); for(ref = refList; ref != NULL; ref = ref->next) { slSafeAddHead(fill, ((struct slList *)ref->val)); } slReverse(fill); freez(&searchHi); freez(&searchLo); (*toFree) = NULL; } else { struct chainNet *net =chainNetLoadRange(db, netTable, chrom, start, end, NULL); if(net != NULL) (*fill) = net->fillList; else (*fill) = NULL; (*toFree) = net; } }