/* cDnaReader - read PSLs into cDnaQuery objects, also collects stats on
 * filtering */

/* Copyright (C) 2011 The Regents of the University of California 
 * See README in this or parent directory for licensing information. */
#ifndef CDNAREADER_H
#define CDNAREADER_H
#include "cDnaStats.h"

struct cDnaReader
/* Object to read cDNA alignments.  To minimize memory requirements,
 * alignments are read for one cDNA at a time and processed.  Also collects
 * statistics on filtering. */
{
    struct lineFile *pslLf;       /* object for reading psl rows */
    struct cDnaQuery *cdna;       /* current cDNA */
    unsigned opts;                /* option bit set from cDnaOpts */
    struct psl *nextCDnaPsl;      /* if not null, psl for next cDNA */
    struct hash *polyASizes;      /* hash of polyASizes */
    struct hapRegions *hapRegions; /* optional table of haplotype regions */
    struct cDnaStats stats;       /* all statistics */
};

struct cDnaReader *cDnaReaderNew(char *pslFile, unsigned opts, char *polyASizeFile,
                                 struct hapRegions *hapRegions);
/* construct a new object, opening the psl file */

void cDnaReaderFree(struct cDnaReader **readerPtr);
/* free object */

boolean cDnaReaderNext(struct cDnaReader *reader);
/* load the next set of cDNA alignments, return FALSE if no more */


#endif
