2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 06:26:18 +00:00

Allow to send scheduled messages instantly.

This commit is contained in:
John Preston
2019-08-09 18:58:58 +01:00
parent 956bb876f6
commit 694f771131
17 changed files with 256 additions and 51 deletions

View File

@@ -9,24 +9,29 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Api {
uint32 HashInit() {
[[nodiscard]] inline uint32 HashInit() {
return 0;
}
template <
typename Int,
typename = std::enable_if_t<
std::is_same_v<Int, int32> || std::is_same_v<Int, uint32>>>
void HashUpdate(uint32 &already, Int value) {
already += (already * 20261) + uint32(value);
inline void HashUpdate(uint32 &already, uint32 value) {
already = (already * 20261) + uint32(value);
}
int32 HashFinalize(uint32 already) {
inline void HashUpdate(uint32 &already, int32 value) {
HashUpdate(already, uint32(value));
}
inline void HashUpdate(uint32 &already, uint64 value) {
HashUpdate(already, uint32(value >> 32));
HashUpdate(already, uint32(value & 0xFFFFFFFFULL));
}
[[nodiscard]] inline int32 HashFinalize(uint32 already) {
return int32(already & 0x7FFFFFFF);
}
template <typename IntRange>
inline int32 CountHash(IntRange &&range) {
[[nodiscard]] inline int32 CountHash(IntRange &&range) {
auto result = HashInit();
for (const auto value : range) {
HashUpdate(result, value);