00001
00002 #include <sstream>
00003
00004 #include "SDXStreamReader.h"
00005
00006 using namespace std;
00007 using namespace SDX::Helpers;
00008
00009 StreamReader::StreamReader(istream* iStream, ContentHandler* contentHandler) :
00010 ResourceReader(contentHandler),
00011 m_iStream(iStream)
00012 {
00013 }
00014
00015 void StreamReader::setStream(istream* iStream){
00016 m_iStream = iStream;
00017 }
00018
00019 void StreamReader::process(){
00020 openStream();
00021 if(!m_iStream || !m_iStream->good()){
00022 setError("Could not open stream");
00023 return;
00024 }
00025
00026 startProcessing();
00027 m_curLine = 0;
00028
00029 string curLineStr;
00030 while(m_iStream->good() && !m_iStream->eof()){
00031 getline(*m_iStream, curLineStr);
00032
00033 ++m_curLine;
00034 if(!processLine(curLineStr))
00035 break;
00036 }
00037 endProcessing();
00038
00039 closeStream();
00040 }
00041
00042 void StreamReader::openStream(){}
00043 void StreamReader::closeStream(){}
00044 void StreamReader::startProcessing(){}
00045 void StreamReader::endProcessing(){}
00046
00047 void StreamReader::setError(string message){
00048 ostringstream retVal;
00049 retVal << "Line ";
00050 retVal << m_curLine;
00051 retVal << ": ";
00052 retVal << message;
00053
00054 m_error = retVal.str();
00055 }