for(string::iterator X = str.begin(); X != str.end(); ++X) {
static void switch_slashes(string & name);// Ugly hack for supporting different pathsstatic std::map<string, string> path_map;void add_system_path(const string& key, const string& value){	path_map[key] = value;}string get_system_path(const string &path){	string::size_type pos = path.find('/');	// If there is no separator, return the path as is	if(pos == string::npos)		return path;			// See if we can translate this prefix	string new_prefix(path_map[path.substr(0, pos).c_str()]);	// If the prefix path is not recognised, return the path as is	if(new_prefix.empty())		return path;		string new_path = new_prefix + path.substr(pos);	switch_slashes(new_path);	return new_path;}/* *	Convert a buffer to upper-case. * *	Output: ->original buffer, changed to upper case. */static void to_uppercase	(	string &str	)	{	for(string::iterator X = str.begin(); X != str.end(); ++X)		{#ifndef BEOS		*X = std::toupper(*X);#else//sigh...        if ((*X >= 'a') && (*X <= 'z')) *X -= 32;#endif         		}	}static void switch_slashes(	string & name	)	{#ifdef WIN32		for(string::iterator X = name.begin(); X != name.end(); ++X)			{			if(*X == '/' )				*X =  '\\';			}#elif defined(MACOS)		for(string::iterator X = name.begin(); X != name.end(); ++X)			{			if(*X == '/' )				*X =  ':';			}#else	// do nothing#endif	}