All pastes #233379 Raw Edit

c_parser.cpp

public cpp v1 · immutable
·published 2006-11-01 22:31 UTC
rendered paste body
/* c_parser's definition */#include "c_parser.h"/* constructor */c_parser::c_parser(){  m_buffer.clear();  m_line.clear();  m_nick.clear();  m_ident.clear();  m_hostname.clear();  m_type.clear();  m_where.clear();  m_msg.clear();  m_pong.clear();}/* destructor */c_parser::~c_parser(){  m_buffer.clear();  m_line.clear();  m_nick.clear();  m_ident.clear();  m_hostname.clear();  m_type.clear();  m_where.clear();  m_msg.clear();  m_pong.clear();}void c_parser::setBuffer(char recvBuffer[2048]){  m_buffer += recvBuffer;  }bool c_parser::getLine(){  string::size_type posFin;  posFin = m_buffer.find('\n', 0);  if(posFin==string::npos) {	cout<<"m_buffer's end found."<<endl;	return false;	}  m_line = m_buffer.substr(0, posFin-1);  cout << "received: +"<<m_line<<"+"<<endl;  m_buffer.erase(0, posFin+1);  return true;}bool c_parser::parse(){  /* erasing */  m_nick.clear();  m_ident.clear();  m_hostname.clear();  m_type.clear();  m_where.clear();  m_msg.clear();  string::size_type posFin;  /* if PING */  if(m_line[0] != ':') {	if(!m_line.compare(0, 6, "PING :")) {		m_line.erase(0,6);		m_pong = "PONG :";		m_pong += m_line;		m_line.clear();		return true;		}	else {		cout<<"ERROR: invalid line."<<endl;		return false;		}	}  /* m_nick search */  posFin = m_line.find('!', 0);  if(posFin==string::npos) {	cout <<"buffer's end was found before m_nick."<<endl;	return false;	}  m_nick = m_line.substr(1, posFin-1);  m_line.erase(0, posFin+1); //erasing already read  /* m_ident search */  posFin = m_line.find('@', 0);  if(posFin==string::npos) {	cout <<"buffer's end was found before m_ident."<<endl;	return false;	}  m_ident = m_line.substr(0, posFin);  m_line.erase(0, posFin+1); //erasing already read  /* m_hostname search */  posFin = m_line.find(' ', 0);  if(posFin==string::npos) {	cout <<"buffer's end was found before m_hostname."<<endl;	return false;	}  m_hostname = m_line.substr(0, posFin);  m_line.erase(0, posFin+1); //erasing already read  /* m_type search */  posFin = m_line.find(' ', 0);  if(posFin==string::npos) {	cout <<"buffer's end was found before m_type."<<endl;	return false;	}  m_type = m_line.substr(0, posFin);  m_line.erase(0, posFin+1); //erasing already read  /* m_where search */  posFin = m_line.find(' ', 0);  if(posFin==string::npos) {	cout <<"buffer's end was found before m_where."<<endl;	return false;	}  m_where = m_line.substr(0, posFin);  m_line.erase(0, posFin+2); //erasing already read  /* m_msg search */  m_msg = m_line;  m_line.clear(); //erasing all (the rest) of m_line  return true;}string c_parser::getnick(){  return m_nick;}string c_parser::getident(){  return m_ident;}string c_parser::gethostname(){  return m_hostname;}string c_parser::gettype(){  return m_type;}string c_parser::getwhere(){  return m_where;}string c_parser::getmsg(){  return m_msg;}string c_parser::getpong(){  return m_pong;}