/************************************************************************ $Id: configurationparser.cpp,v 1.2 2005/01/06 17:59:28 jonico Exp $ RTB - Team Framework: Framework for RealTime Battle robots to communicate efficiently in a team Copyright (C) 2004 The RTB- Team Framework Group: http://rtb-team.sourceforge.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Log: configurationparser.cpp,v $ Revision 1.2 2005/01/06 17:59:28 jonico Now all files in the repository have their new header format. **************************************************************************/ #include #include #include #include #include #include "configurationparser.h" namespace Parser { using std::ifstream; using std::ostringstream; using std::streampos; using std::ios_base; using std::cerr; using std::endl; using std::cout; using std::getline; ConfigurationParser::ConfigurationParser() throw (bad_exception) { } enum parserstate { ISSECTION, // A section name is being read ISKEY, // A key is being read ISVALUE, // A value is being read BEFOREVALUE, // The parser is waiting for a value enclosed in "" BEFORESECTION, // The parser is waiting for a section (initial state) SORK, // The parser is waiting for a section or a key BEFOREEOL, // The parser is waiting for a comment or a newline COMMENT, // A comment is being read QUOTE // A quote (\) was read }; bool ConfigurationParser::iscchar(int c) const throw () { return isgraph(c) || c==' ' || c=='\t' || c=='ß' || c=='ä' || c=='ö' || c=='ü' || c=='Ä' || c=='Ö' || c=='Ü'; } string ConfigurationParser::erase_wspace(const string& s) const throw (bad_exception) { string dst; int i; int start=0; int last=s.find_last_not_of(' '); dst.reserve(s.length()); while(s[start]==' ') ++start; for(i=start;i >& ConfigurationParser::getConfigurationData() const throw () { return _configurationData; } }