struct seqDataReader gt_SAIMakeBWTReader(SuffixarrayFileInterface *sai) { struct seqDataReader reader = { NULL, NULL}; if (!sai->sa->bwttabstream.fp || sai->numBWTFileReaders > 0) { if (sai->sa->encseq) { struct encSeqTrState bwtReadState = { .readmode = sai->sa->readmode, .encseq = sai->sa->encseq }; struct saTaggedXltorState *stateStore = gt_addSuffixarrayXltor(&sai->xltorStates, SFX_REQUEST_BWTTAB, bwtReadState); struct seqDataTranslator xltor = { { .ref = &stateStore->state }, gt_translateSuftab2BWT, gt_translateSuftab2BWTSuffixsortspace }; reader = gt_seqReaderSetRegisterConsumer(&sai->baseClass.readerSet, SFX_REQUEST_BWTTAB, xltor); } else {
SeqDataReader gt_SASSGenericCreateReader(SASeqSrc *src, enum sfxDataRequest request) { return gt_seqReaderSetRegisterConsumer(&src->readerSet, request, src->createTranslator(src, request)); }