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