af33eaad49280351fe016fbfd6436cd32d1c08a9 angie Fri Dec 14 16:54:00 2012 -0800 minor: needed to reset one more private variable when region changes. diff --git src/lib/annoStreamBigBed.c src/lib/annoStreamBigBed.c index 7a29771..c0b71b0 100644 --- src/lib/annoStreamBigBed.c +++ src/lib/annoStreamBigBed.c @@ -1,43 +1,42 @@ /* annoStreamBigBed -- subclass of annoStreamer for bigBed file or URL */ #include "annoStreamBigBed.h" -#include "annoGratorQuery.h" #include "bigBed.h" #include "localmem.h" #include "sqlNum.h" struct annoStreamBigBed { struct annoStreamer streamer; // Parent class members & methods // Private members struct bbiFile *bbi; // bbi handle for bigBed file/URL. struct lm *intervalQueryLm; // localmem object for bigBedIntervalQuery struct bigBedInterval *intervalList; // results of bigBedIntervalQuery struct bigBedInterval *nextInterval; // next result to be translated into row int maxItems; // max items returned from bigBedIntervalQuery char **row; // storage for results of bigBedIntervalToRow char *startBuf; // storage for stringified start from bigBedIntervalToRow char *endBuf; // storage for stringified end from bigBedIntervalToRow }; static void asbbSetRegion(struct annoStreamer *vSelf, char *chrom, uint regionStart, uint regionEnd) /* Set region -- and free localmem from previous query if necessary. */ { annoStreamerSetRegion(vSelf, chrom, regionStart, regionEnd); struct annoStreamBigBed *self = (struct annoStreamBigBed *)vSelf; -self->intervalList = NULL; +self->nextInterval = self->intervalList = NULL; lmCleanup(&(self->intervalQueryLm)); } static void asbbDoQuery(struct annoStreamBigBed *self) /* Store results of an interval query. [Would be nice to make a streaming version of this.] */ { struct annoStreamer *streamer = &(self->streamer); if (self->intervalQueryLm == NULL) self->intervalQueryLm = lmInit(0); self->intervalList = bigBedIntervalQuery(self->bbi, streamer->chrom, streamer->regionStart, streamer->regionEnd, self->maxItems, self->intervalQueryLm); self->nextInterval = self->intervalList; }