void CardSet::Validate(XML::Document& D) { string name=(*D.Base())["name"]; string abbrev=(*D.Base())["abbrev"]; string dir=(*D.Base())["dir"]; age[abbrev]=sets.size(); if((*D.Base())["age"]!="") { age[abbrev]=atoi((*D.Base())["age"].c_str()); for(list<string>::iterator i=sets.begin(); i!=sets.end(); i++) if(age[*i]>=age[abbrev]) age[*i]++; } sets.push_back(abbrev); set_name[abbrev]=name; directory[abbrev]=dir; list<XML::Element*>::iterator i; list<XML::Element*> cards=D("cards","card"); first_card[abbrev]=nextcard; for(i=cards.begin(); i!=cards.end(); i++) { (**i).AddAttribute("set",abbrev); numbers[(**i)["name"]].push_back(nextcard); nextcard++; } last_card[abbrev]=nextcard-1; }