#include #include using namespace std; enum ExportFileFieldName { Machine=0, RunNumber, Lane, Tile, XCoordinate, YCoordinate, IndexString, ReadNumber, Read, QualityString, MatchChromosome, MatchContig, MatchPosition, MatchStrand, MatchDescriptor, SingleReadAlignmentScore, PairedReadAlignmentScore, PartnerChromosome, PartnerContig, PartnerOffset, PartnerStrand, Filtering, NumberOfEntries // not a field, but if you stick it // on the end of the list of fields it automatically gets right value }; class ExportFileReaderImp; // ExportFileReader class ExportFileReader { public: ExportFileReader(ExportFileReaderImp* p): p_(p) {} ~ExportFileReader() {} // Returns pointer to ASCII sequence of next oligo, or null if at end bool getNextEntry( void ) ; // Rewind - next oligo read will be first in list void rewind ( void ); const char* getMachine( void ) const; int getRunNumber( void ) const; int getLane( void ) const; int getTile( void ) const; int getXCoordinate( void ) const; int getYCoordinate( void ) const; const char* getIndexString( void ) const; int getReadNumber( void ) const; const char* getRead ( void ) const; const char* getQualityString( void ) const; const char* getMatchChromosome( void ) const; const char* getMatchContig( void ) const; int getMatchPosition( void ) const; char getMatchStrand( void ) const; const char* getMatchDescriptor( void ) const; int getSingleReadAlignmentScore( void ) const; int getPairedReadAlignmentScore( void ) const; const char* getPartnerChromosome( void ) const; const char* getPartnerContig( void ) const; int getPartnerOffset( void ) const; char getPartnerStrand( void ) const; char getFiltering( void ) const; protected: ExportFileReaderImp* p_; }; // ~class ExportFile class ExportFileReaderImp { public: virtual ~ExportFileReaderImp() {} // Returns pointer to ASCII sequence of next oligo, or null if at end virtual bool getNextEntry( void ) =0; // Rewind - next oligo read will be first in list virtual void rewind ( void ) =0; virtual const char* getMachine( void ) const=0; virtual int getRunNumber( void ) const=0; virtual int getLane( void ) const=0; virtual int getTile( void ) const=0; virtual int getXCoordinate( void ) const=0; virtual int getYCoordinate( void ) const=0; virtual const char* getIndexString( void ) const=0; virtual int getReadNumber( void ) const=0; virtual const char* getRead ( void ) const=0; virtual const char* getQualityString( void ) const=0; virtual const char* getMatchChromosome( void ) const=0; virtual const char* getMatchContig( void ) const=0; virtual int getMatchPosition( void ) const=0; virtual char getMatchStrand( void ) const=0; virtual const char* getMatchDescriptor( void ) const=0; virtual int getSingleReadAlignmentScore( void ) const=0; virtual int getPairedReadAlignmentScore( void ) const=0; virtual const char* getPartnerChromosome( void ) const=0; virtual const char* getPartnerContig( void ) const=0; virtual int getPartnerOffset( void ) const=0; virtual char getPartnerStrand( void ) const=0; virtual char getFiltering( void ) const=0; protected: }; // ~class ExportFileReaderImp class ExportFileReaderActual : public ExportFileReaderImp { public: ExportFileReaderActual( const char* exportFileName ); virtual ~ExportFileReaderActual(); // Returns pointer to ASCII sequence of next oligo, or null if at end virtual bool getNextEntry( void ); // Rewind - next oligo read will be first in list virtual void rewind ( void ); virtual const char* getMachine( void ) const; virtual int getRunNumber( void ) const; virtual int getLane( void ) const; virtual int getTile( void ) const; virtual int getXCoordinate( void ) const; virtual int getYCoordinate( void ) const; virtual const char* getIndexString( void ) const; virtual int getReadNumber( void ) const; virtual const char* getRead ( void ) const; virtual const char* getQualityString( void ) const; virtual const char* getMatchChromosome( void ) const; virtual const char* getMatchContig( void ) const; virtual int getMatchPosition( void ) const; virtual char getMatchStrand( void ) const; virtual const char* getMatchDescriptor( void ) const; virtual int getSingleReadAlignmentScore( void ) const; virtual int getPairedReadAlignmentScore( void ) const; virtual const char* getPartnerChromosome( void ) const; virtual const char* getPartnerContig( void ) const; virtual int getPartnerOffset( void ) const; virtual char getPartnerStrand( void ) const; virtual char getFiltering( void ) const; protected: char buf_[120000]; vector entry_; FILE* pFile_; }; // ~class ExportFileReaderActual