#include "ITextParser.h" #include "IDataStream.h" ITextParser::ITextParser() :m_stream(NULL) { // } ITextParser::ITextParser(IDataStream * stream) :m_stream(stream) { // } ITextParser::~ITextParser() { // } void ITextParser::Attach(IDataStream * stream) { m_stream = stream; } void ITextParser::SkipWhitespace(void) { while(!m_stream->HitEOF()) { char data = m_stream->Peek8(); if(!isspace(data)) break; m_stream->Skip(1); } } void ITextParser::SkipLine(void) { while(!m_stream->HitEOF()) { char data = m_stream->Peek8(); if((data != '\n') && (data != '\r')) break; m_stream->Skip(1); } } void ITextParser::ReadLine(char * out, UInt32 length) { m_stream->ReadString(out, length, '\n', '\r'); } void ITextParser::ReadToken(char * buf, UInt32 bufLength) { char * traverse = buf; ASSERT_STR(bufLength > 0, "ITextParser::ReadToken: zero-sized buffer"); if(bufLength == 1) { buf[0] = 0; } else { bufLength--; for(UInt32 i = 0; (i < bufLength) && !m_stream->HitEOF(); i++) { UInt8 data = m_stream->Read8(); if(isspace(data) || !data) break; *traverse++ = data; } *traverse++ = 0; } }