00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
#ifndef _gnFileSource_h_
00013
#define _gnFileSource_h_
00014
00015
#include "gn/gnDefs.h"
00016
00017
#include <string>
00018
#include <fstream>
00019
#include "gn/gnBaseSource.h"
00020
#include "gn/gnFileContig.h"
00021
#include "gn/gnException.h"
00022
00027 class GNDLLEXPORT gnFileSource :
public gnBaseSource
00028 {
00029
public:
00030 gnFileSource(){}
00031 gnFileSource(
const gnFileSource& gnfs);
00032 virtual ~gnFileSource(){}
00033
virtual gnFileSource*
Clone() const = 0;
00034
00035 virtual
void Open( string openString );
00036 virtual
void Open();
00037 virtual
void Close();
00038 virtual string GetOpenString() const ;
00039
00040 virtual const
gnFilter* GetFilter() const ;
00041 virtual
void SetFilter(
gnFilter* filter );
00042
00043 virtual
boolean Read( const
uint64 pos,
char* buf,
gnSeqI& bufLen );
00048 virtual
gnFileContig* GetFileContig( const
uint32 contigI ) const = 0;
00049 protected:
00050
void DetermineNewlineType();
00051
00052 string m_openString;
00053 ifstream m_ifstream;
00054 const
gnFilter* m_pFilter;
00055 gnNewlineType m_newlineType;
00056 uint32 m_newlineSize;
00057 private:
00058 virtual
boolean ParseStream( istream& fin ) = 0;
00059 };
00060
00061 inline
00062 string gnFileSource::GetOpenString( )
const
00063
{
00064
return m_openString;
00065 }
00066
00067
inline
00068 const gnFilter*
gnFileSource::GetFilter()
const
00069
{
00070
return m_pFilter;
00071 }
00072
00073
inline
00074 void gnFileSource::SetFilter(
gnFilter* filter )
00075 {
00076
if(filter == NULL){
00077
Throw_gnEx(NullPointer());
00078 }
00079
m_pFilter = filter;
00080 }
00081
00082
#endif
00083