84 lines
1.1 KiB
C++
84 lines
1.1 KiB
C++
#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;
|
|
}
|
|
}
|