00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014
00015 #include <fstream>
00016 #include "gn/gnFilter.h"
00017
00018
00019 gnFileSource::gnFileSource(const gnFileSource& gnfs){
00020 m_openString = gnfs.m_openString;
00021 m_pFilter = gnfs.m_pFilter;
00022 m_newlineType = gnfs.m_newlineType;
00023 m_newlineSize = gnfs.m_newlineSize;
00024 m_ifstream.open( m_openString.c_str(), ios::in | ios::binary );
00025 if( !m_ifstream.is_open() )
00026 m_ifstream.clear();
00027 }
00028
00029
00030 void gnFileSource::Open( string openString )
00031 {
00032 m_ifstream.open(openString.c_str(), ios::in | ios::binary );
00033 if( m_ifstream.is_open() )
00034 {
00035 m_openString = openString;
00036 if( ParseStream(m_ifstream) )
00037 {
00038 ;
00039 }
00040 else{
00041 m_ifstream.clear();
00042 m_ifstream.close();
00043 }
00044 }else{
00045 m_ifstream.clear();
00046 Throw_gnEx(FileNotOpened());
00047 }
00048 }
00049 void gnFileSource::Open( )
00050 {
00051 m_ifstream.open( m_openString.c_str(), ios::in | ios::binary );
00052 if( !m_ifstream.is_open() ){
00053 m_ifstream.clear();
00054 Throw_gnEx(FileNotOpened());
00055 }
00056 }
00057 void gnFileSource::Close()
00058 {
00059 m_ifstream.close();
00060 if( m_ifstream.is_open() )
00061 Throw_gnEx(IOStreamFailed());
00062 }
00063
00064 boolean gnFileSource::Read( const uint64 pos, char* buf, uint32& bufLen)
00065 {
00066 m_ifstream.seekg(pos, ios::beg);
00067 m_ifstream.read(buf, bufLen);
00068 if(m_ifstream.fail()){
00069 m_ifstream.clear();
00070 return false;
00071 }
00072 return true;
00073 }