static inline void writeUsr(const UsrMap &usr, UsrMap ¤t, SymbolMap &symbols) { UsrMap::const_iterator it = usr.begin(); const UsrMap::const_iterator end = usr.end(); while (it != end) { Set<Location> &value = current[it->first]; int count = 0; value.unite(it->second, &count); if (count && value.size() > 1) joinCursors(symbols, value); ++it; } }
void dirtyUsr(UsrMap &map, const Set<uint32_t> &dirty) { UsrMap::iterator it = map.begin(); while (it != map.end()) { Set<Location> &locations = it->second; Set<Location>::iterator i = locations.begin(); while (i != locations.end()) { if (dirty.contains(i->fileId())) { locations.erase(i++); } else { ++i; } } if (locations.isEmpty()) { map.erase(it++); } else { ++it; } } }