Add combine_hashes function.
This commit is contained in:
parent
5c8b12b105
commit
070399c89a
@ -136,8 +136,8 @@ struct ContactEqual {
|
||||
|
||||
struct ContactHash {
|
||||
uint32 operator()(const Contact &contact) const {
|
||||
return (Hash<string>()(contact.phone_number_) * 2023654985u + Hash<string>()(contact.first_name_)) * 2023654985u +
|
||||
Hash<string>()(contact.last_name_);
|
||||
return combine_hashes(combine_hashes(Hash<string>()(contact.phone_number_), Hash<string>()(contact.first_name_)),
|
||||
Hash<string>()(contact.last_name_));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1922,7 +1922,7 @@ class ContactsManager final : public Actor {
|
||||
WaitFreeHashMap<UserId, tl_object_ptr<telegram_api::UserProfilePhoto>, UserIdHash> pending_user_photos_;
|
||||
struct UserIdPhotoIdHash {
|
||||
uint32 operator()(const std::pair<UserId, int64> &pair) const {
|
||||
return UserIdHash()(pair.first) * 2023654985u + Hash<int64>()(pair.second);
|
||||
return combine_hashes(UserIdHash()(pair.first), Hash<int64>()(pair.second));
|
||||
}
|
||||
};
|
||||
WaitFreeHashMap<std::pair<UserId, int64>, FileSourceId, UserIdPhotoIdHash> user_profile_photo_file_source_ids_;
|
||||
|
@ -62,7 +62,7 @@ const int64 DEFAULT_ORDER = -1;
|
||||
|
||||
struct DialogDateHash {
|
||||
uint32 operator()(const DialogDate &dialog_date) const {
|
||||
return Hash<int64>()(dialog_date.get_order()) * 2023654985u + DialogIdHash()(dialog_date.get_dialog_id());
|
||||
return combine_hashes(Hash<int64>()(dialog_date.get_order()), DialogIdHash()(dialog_date.get_dialog_id()));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -62,8 +62,8 @@ struct FullMessageId {
|
||||
|
||||
struct FullMessageIdHash {
|
||||
uint32 operator()(FullMessageId full_message_id) const {
|
||||
return DialogIdHash()(full_message_id.get_dialog_id()) * 2023654985u +
|
||||
MessageIdHash()(full_message_id.get_message_id());
|
||||
return combine_hashes(DialogIdHash()(full_message_id.get_dialog_id()),
|
||||
MessageIdHash()(full_message_id.get_message_id()));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -135,9 +135,9 @@ struct FormattedTextHash {
|
||||
uint32 operator()(const FormattedText &formatted_text) const {
|
||||
auto hash = Hash<string>()(formatted_text.text);
|
||||
for (auto &entity : formatted_text.entities) {
|
||||
hash = hash * 2023654985u + Hash<int32>()(static_cast<int32>(entity.type));
|
||||
hash = hash * 2023654985u + Hash<int32>()(entity.length);
|
||||
hash = hash * 2023654985u + Hash<int32>()(entity.offset);
|
||||
hash = combine_hashes(hash, Hash<int32>()(static_cast<int32>(entity.type)));
|
||||
hash = combine_hashes(hash, Hash<int32>()(entity.length));
|
||||
hash = combine_hashes(hash, Hash<int32>()(entity.offset));
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ struct StoryFullId {
|
||||
|
||||
struct StoryFullIdHash {
|
||||
uint32 operator()(StoryFullId story_full_id) const {
|
||||
return DialogIdHash()(story_full_id.get_dialog_id()) * 2023654985u + StoryIdHash()(story_full_id.get_story_id());
|
||||
return combine_hashes(DialogIdHash()(story_full_id.get_dialog_id()), StoryIdHash()(story_full_id.get_story_id()));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -69,4 +69,8 @@ inline uint32 Hash<string>::operator()(const string &value) const {
|
||||
return static_cast<uint32>(std::hash<string>()(value));
|
||||
}
|
||||
|
||||
inline uint32 combine_hashes(uint32 first_hash, uint32 second_hash) {
|
||||
return first_hash * 2023654985u + second_hash;
|
||||
}
|
||||
|
||||
} // namespace td
|
||||
|
Loading…
Reference in New Issue
Block a user