mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-26 09:31:59 +00:00
Convert some copy constructors to move constructors in query.cc
This commit is contained in:
parent
55c7519e93
commit
e440a7c52f
14
src/query.cc
14
src/query.cc
@ -100,7 +100,7 @@ optional<QueryVar::Def> ToQuery(const IdMap& id_map, const IndexVar::Def& var) {
|
|||||||
template <typename TId, typename TValue>
|
template <typename TId, typename TValue>
|
||||||
void AddMergeableRange(
|
void AddMergeableRange(
|
||||||
std::vector<MergeableUpdate<TId, TValue>>* dest,
|
std::vector<MergeableUpdate<TId, TValue>>* dest,
|
||||||
const std::vector<MergeableUpdate<TId, TValue>>& source) {
|
std::vector<MergeableUpdate<TId, TValue>>&& source) {
|
||||||
// TODO: Consider caching the lookup table. It can probably save even more
|
// TODO: Consider caching the lookup table. It can probably save even more
|
||||||
// time at the cost of some additional memory.
|
// time at the cost of some additional memory.
|
||||||
|
|
||||||
@ -111,13 +111,13 @@ void AddMergeableRange(
|
|||||||
id_to_index[(*dest)[i].id] = i;
|
id_to_index[(*dest)[i].id] = i;
|
||||||
|
|
||||||
// Add entries. Try to add them to an existing entry.
|
// Add entries. Try to add them to an existing entry.
|
||||||
for (const auto& entry : source) {
|
for (auto& entry : source) {
|
||||||
auto it = id_to_index.find(entry.id);
|
auto it = id_to_index.find(entry.id);
|
||||||
if (it != id_to_index.end()) {
|
if (it != id_to_index.end()) {
|
||||||
AddRange(&(*dest)[it->second].to_add, entry.to_add);
|
AddRange(&(*dest)[it->second].to_add, std::move(entry.to_add));
|
||||||
AddRange(&(*dest)[it->second].to_remove, entry.to_remove);
|
AddRange(&(*dest)[it->second].to_remove, std::move(entry.to_remove));
|
||||||
} else {
|
} else {
|
||||||
dest->push_back(entry);
|
dest->push_back(std::move(entry));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -664,8 +664,8 @@ IndexUpdate::IndexUpdate(const IdMap& previous_id_map,
|
|||||||
|
|
||||||
// This function runs on an indexer thread.
|
// This function runs on an indexer thread.
|
||||||
void IndexUpdate::Merge(IndexUpdate&& update) {
|
void IndexUpdate::Merge(IndexUpdate&& update) {
|
||||||
#define INDEX_UPDATE_APPEND(name) AddRange(&name, update.name);
|
#define INDEX_UPDATE_APPEND(name) AddRange(&name, std::move(update.name));
|
||||||
#define INDEX_UPDATE_MERGE(name) AddMergeableRange(&name, update.name);
|
#define INDEX_UPDATE_MERGE(name) AddMergeableRange(&name, std::move(update.name));
|
||||||
|
|
||||||
INDEX_UPDATE_APPEND(files_removed);
|
INDEX_UPDATE_APPEND(files_removed);
|
||||||
INDEX_UPDATE_APPEND(files_def_update);
|
INDEX_UPDATE_APPEND(files_def_update);
|
||||||
|
@ -185,7 +185,7 @@ void Reflect(Reader& visitor, optional<T>& value) {
|
|||||||
}
|
}
|
||||||
T real_value;
|
T real_value;
|
||||||
Reflect(visitor, real_value);
|
Reflect(visitor, real_value);
|
||||||
value = real_value;
|
value = std::move(real_value);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void Reflect(Writer& visitor, optional<T>& value) {
|
void Reflect(Writer& visitor, optional<T>& value) {
|
||||||
@ -204,7 +204,7 @@ void Reflect(Reader& visitor, Maybe<T>& value) {
|
|||||||
}
|
}
|
||||||
T real_value;
|
T real_value;
|
||||||
Reflect(visitor, real_value);
|
Reflect(visitor, real_value);
|
||||||
value = real_value;
|
value = std::move(real_value);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void Reflect(Writer& visitor, Maybe<T>& value) {
|
void Reflect(Writer& visitor, Maybe<T>& value) {
|
||||||
@ -254,7 +254,7 @@ struct ReflectVariant {
|
|||||||
ReflectTag(Reader& visitor, std::variant<Ts...>& value) {
|
ReflectTag(Reader& visitor, std::variant<Ts...>& value) {
|
||||||
T a;
|
T a;
|
||||||
Reflect(visitor, a);
|
Reflect(visitor, a);
|
||||||
value = a;
|
value = std::move(a);
|
||||||
}
|
}
|
||||||
// This SFINAE overload is used to prevent compile error. value = a; is not
|
// This SFINAE overload is used to prevent compile error. value = a; is not
|
||||||
// allowed if T does not appear in Ts...
|
// allowed if T does not appear in Ts...
|
||||||
|
@ -137,7 +137,7 @@ void AddRange(std::vector<T>* dest, const std::vector<T>& to_add) {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void AddRange(std::vector<T>* dest, std::vector<T>&& to_add) {
|
void AddRange(std::vector<T>* dest, std::vector<T>&& to_add) {
|
||||||
dest->push_back(dest->end(), std::make_move_iterator(to_add.begin()),
|
dest->insert(dest->end(), std::make_move_iterator(to_add.begin()),
|
||||||
std::make_move_iterator(to_add.end()));
|
std::make_move_iterator(to_add.end()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user