Beispiel #1
0
void Format::ItemGroup::Traverse(std::basic_ifstream<Char> &from, Extension &ext) const
{
	ext.FormatTimes = 1;
	if(ext.OfFormat.length())
	{
		ext.ElemName = name;
		ext.Runtime.GenerateEvent(Extension::Trigger::Load::SubFormat);
	}
	for(unsigned i = 0, k = ext.FormatTimes; i < k; ++i)
	{
		for(items_t::const_iterator it = items.begin(); it != items.end(); ++it)
		{
			ext.FormatTimes = i;
			ext.OfFormat = name;
			ext.ElemName = (*it)->name;
			(*it)->Traverse(from, ext);
			if(!ext.Assert(from.good(), String(_T("An error occured while reading the file after: "))+(*it)->name)) return;
		}
	}
}