www.pudn.com > myseelite_2007_06_28.zip > ConfigFile.cpp


/* 
*  Openmysee 
* 
*  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 
* 
*/ 
#include "StdAfx.h" 
#include "ConfigFile.h" 
 
ConfigFile::ConfigFile(string const& configFile) { 
	ifstream file(configFile.c_str()); 
	string line; 
	string name; 
	string value; 
	string inSection; 
	int posEqual; 
	while (getline(file,line)) { 
		if ( !line.length()) continue; 
		if ( line[0] == '#') continue; 
		if ( line[0] == ';') continue; 
 
		if ( line[0] == '[') { 
			inSection=line.substr(1,line.find(']')-1); 
			continue; 
		} 
 
		posEqual=line.find('='); 
		name = line.substr(0,posEqual); 
		value = line.substr(posEqual+1); 
		int index = value.find('\r'); 
		if(index != -1) 
			value = value.substr(0, index); 
		index = value.find('\n'); 
		if(index != -1) 
			value = value.substr(0, index); 
		content_[inSection + '/' + name]=value; 
	} 
	fileNotFound = (content_.empty()); 
} 
 
 
string ConfigFile::Value(string const& section, string const& entry) { 
	stringNotFound = false; 
	map::const_iterator ci = content_.find(section + '/' + entry); 
	if (ci == content_.end()) { 
		stringNotFound = true; 
		return ""; // does not exist 
	} 
	return ci->second; 
}