void Library::rebuildMaps() const { //FunctionTimer timer(__PRETTY_FUNCTION__); myAuthors.clear(); myBooksByAuthor.clear(); myTags.clear(); myBooksByTag.clear(); myFirstLetters.clear(); myBooksByFirstLetter.clear(); for (BookSet::const_iterator it = myBooks.begin(); it != myBooks.end(); ++it) { if ((*it).isNull()) { continue; } const AuthorList &bookAuthors = (*it)->authors(); if (bookAuthors.empty()) { myBooksByAuthor[0].push_back(*it); } else { for(AuthorList::const_iterator jt = bookAuthors.begin(); jt != bookAuthors.end(); ++jt) { myBooksByAuthor[*jt].push_back(*it); } } const TagList &bookTags = (*it)->tags(); if (bookTags.empty()) { myBooksByTag[0].push_back(*it); } else { for(TagList::const_iterator kt = bookTags.begin(); kt != bookTags.end(); ++kt) { myBooksByTag[*kt].push_back(*it); } } std::string firstLetter = getFirstTitleLetter((*it)->title()); if (!firstLetter.empty()) { myBooksByFirstLetter[firstLetter].push_back(*it); } } for (BooksByAuthor::iterator mit = myBooksByAuthor.begin(); mit != myBooksByAuthor.end(); ++mit) { myAuthors.push_back(mit->first); std::sort(mit->second.begin(), mit->second.end(), BookComparator()); } for (BooksByTag::iterator mjt = myBooksByTag.begin(); mjt != myBooksByTag.end(); ++mjt) { myTags.push_back(mjt->first); std::sort(mjt->second.begin(), mjt->second.end(), BookComparator()); } for (BooksByFirstLetter::iterator mit = myBooksByFirstLetter.begin(); mit != myBooksByFirstLetter.end(); ++mit) { myFirstLetters.push_back(mit->first); std::sort(mit->second.begin(), mit->second.end(), BookComparator()); } }
void Library::rebuildMaps() const { myAuthors.clear(); myBooksByAuthor.clear(); myTags.clear(); myBooksByTag.clear(); for (BookSet::const_iterator it = myBooks.begin(); it != myBooks.end(); ++it) { if ((*it).isNull()) { continue; } const AuthorList &bookAuthors = (*it)->authors(); if (bookAuthors.empty()) { myBooksByAuthor[0].push_back(*it); } else { for(AuthorList::const_iterator jt = bookAuthors.begin(); jt != bookAuthors.end(); ++jt) { myBooksByAuthor[*jt].push_back(*it); } } const TagList &bookTags = (*it)->tags(); if (bookTags.empty()) { myBooksByTag[0].push_back(*it); } else { for(TagList::const_iterator kt = bookTags.begin(); kt != bookTags.end(); ++kt) { myBooksByTag[*kt].push_back(*it); } } } for (BooksByAuthor::iterator mit = myBooksByAuthor.begin(); mit != myBooksByAuthor.end(); ++mit) { myAuthors.push_back(mit->first); std::sort(mit->second.begin(), mit->second.end(), BookComparator()); } for (BooksByTag::iterator mjt = myBooksByTag.begin(); mjt != myBooksByTag.end(); ++mjt) { myTags.push_back(mjt->first); std::sort(mjt->second.begin(), mjt->second.end(), BookComparator()); } }