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;}