Move ImportOrUpdate and header cleanup

This commit is contained in:
Fangrui Song 2018-02-06 21:26:38 -08:00
parent e9f45dd601
commit 55c7519e93
5 changed files with 17 additions and 24 deletions

View File

@ -791,19 +791,19 @@ void QueryDatabase::ApplyIndexUpdate(IndexUpdate* update) {
ImportOrUpdate(update->files_def_update);
RemoveUsrs(SymbolKind::Type, update->types_removed);
ImportOrUpdate(update->types_def_update);
ImportOrUpdate(std::move(update->types_def_update));
HANDLE_MERGEABLE(types_derived, derived, types);
HANDLE_MERGEABLE(types_instances, instances, types);
HANDLE_MERGEABLE(types_uses, uses, types);
RemoveUsrs(SymbolKind::Func, update->funcs_removed);
ImportOrUpdate(update->funcs_def_update);
ImportOrUpdate(std::move(update->funcs_def_update));
HANDLE_MERGEABLE(funcs_declarations, declarations, funcs);
HANDLE_MERGEABLE(funcs_derived, derived, funcs);
HANDLE_MERGEABLE(funcs_callers, callers, funcs);
RemoveUsrs(SymbolKind::Var, update->vars_removed);
ImportOrUpdate(update->vars_def_update);
ImportOrUpdate(std::move(update->vars_def_update));
HANDLE_MERGEABLE(vars_declarations, declarations, vars);
HANDLE_MERGEABLE(vars_uses, uses, vars);
@ -827,7 +827,7 @@ void QueryDatabase::ImportOrUpdate(
}
void QueryDatabase::ImportOrUpdate(
const std::vector<QueryType::DefUpdate>& updates) {
std::vector<QueryType::DefUpdate>&& updates) {
// This function runs on the querydb thread.
for (auto& def : updates) {
@ -842,7 +842,7 @@ void QueryDatabase::ImportOrUpdate(
// Keep the existing definition if it is higher quality.
if (!(existing.def && existing.def->definition_spelling &&
!def.value.definition_spelling)) {
existing.def = def.value;
existing.def = std::move(def.value);
UpdateSymbols(&existing.symbol_idx, SymbolKind::Type,
it->second.id);
}
@ -850,7 +850,7 @@ void QueryDatabase::ImportOrUpdate(
}
void QueryDatabase::ImportOrUpdate(
const std::vector<QueryFunc::DefUpdate>& updates) {
std::vector<QueryFunc::DefUpdate>&& updates) {
// This function runs on the querydb thread.
for (auto& def : updates) {
@ -865,15 +865,14 @@ void QueryDatabase::ImportOrUpdate(
// Keep the existing definition if it is higher quality.
if (!(existing.def && existing.def->definition_spelling &&
!def.value.definition_spelling)) {
existing.def = def.value;
existing.def = std::move(def.value);
UpdateSymbols(&existing.symbol_idx, SymbolKind::Func,
it->second.id);
}
}
}
void QueryDatabase::ImportOrUpdate(
const std::vector<QueryVar::DefUpdate>& updates) {
void QueryDatabase::ImportOrUpdate(std::vector<QueryVar::DefUpdate>&& updates) {
// This function runs on the querydb thread.
for (auto& def : updates) {
@ -888,7 +887,7 @@ void QueryDatabase::ImportOrUpdate(
// Keep the existing definition if it is higher quality.
if (!(existing.def && existing.def->definition_spelling &&
!def.value.definition_spelling)) {
existing.def = def.value;
existing.def = std::move(def.value);
if (!def.value.is_local())
UpdateSymbols(&existing.symbol_idx, SymbolKind::Var,
it->second.id);

View File

@ -409,9 +409,9 @@ struct QueryDatabase {
// Insert the contents of |update| into |db|.
void ApplyIndexUpdate(IndexUpdate* update);
void ImportOrUpdate(const std::vector<QueryFile::DefUpdate>& updates);
void ImportOrUpdate(const std::vector<QueryType::DefUpdate>& updates);
void ImportOrUpdate(const std::vector<QueryFunc::DefUpdate>& updates);
void ImportOrUpdate(const std::vector<QueryVar::DefUpdate>& updates);
void ImportOrUpdate(std::vector<QueryType::DefUpdate>&& updates);
void ImportOrUpdate(std::vector<QueryFunc::DefUpdate>&& updates);
void ImportOrUpdate(std::vector<QueryVar::DefUpdate>&& updates);
void UpdateSymbols(Maybe<Id<void>>* symbol_idx, SymbolKind kind, RawId idx);
std::string_view GetSymbolDetailedName(RawId symbol_idx) const;
std::string_view GetSymbolShortName(RawId symbol_idx) const;

View File

@ -3,6 +3,7 @@
#include "queue_manager.h"
#include <climits>
#include <queue>
namespace {

View File

@ -13,8 +13,7 @@
#include <cstring>
#include <fstream>
#include <functional>
#include <iostream>
#include <locale>
#include <queue>
#include <sstream>
#include <string>
#include <unordered_map>

View File

@ -5,7 +5,7 @@
#include <algorithm>
#include <functional>
#include <memory>
#include <queue>
#include <iterator>
#include <string>
#include <unordered_map>
#include <vector>
@ -137,14 +137,8 @@ void AddRange(std::vector<T>* dest, const std::vector<T>& to_add) {
template <typename T>
void AddRange(std::vector<T>* dest, std::vector<T>&& to_add) {
for (T& x : to_add)
dest->push_back(std::move(x));
}
template <typename T>
void PushRange(std::queue<T>* dest, const std::vector<T>& to_add) {
for (const T& e : to_add)
dest->push(e);
dest->push_back(dest->end(), std::make_move_iterator(to_add.begin()),
std::make_move_iterator(to_add.end()));
}
template <typename T>