From 83dfdcd9ee9945ae1cde9b59097ad260e90dd3a9 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 1 May 2023 22:33:52 +0300 Subject: [PATCH] Add class StoryId. --- CMakeLists.txt | 1 + td/telegram/StoryId.h | 66 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 td/telegram/StoryId.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b280590cd..eaba216e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -756,6 +756,7 @@ set(TDLIB_SOURCE td/telegram/StickersManager.h td/telegram/StickerType.h td/telegram/StorageManager.h + td/telegram/StoryId.h td/telegram/StoryManager.h td/telegram/SuggestedAction.h td/telegram/Support.h diff --git a/td/telegram/StoryId.h b/td/telegram/StoryId.h new file mode 100644 index 000000000..36f0d7df1 --- /dev/null +++ b/td/telegram/StoryId.h @@ -0,0 +1,66 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#pragma once + +#include "td/utils/common.h" +#include "td/utils/HashTableUtils.h" +#include "td/utils/StringBuilder.h" +#include "td/utils/tl_helpers.h" + +#include + +namespace td { + +class StoryId { + int32 id = 0; + + public: + StoryId() = default; + + explicit StoryId(int32 story_id) : id(story_id) { + } + template ::value>> + StoryId(T story_id) = delete; + + int32 get() const { + return id; + } + + bool operator==(const StoryId &other) const { + return id == other.id; + } + + bool operator!=(const StoryId &other) const { + return id != other.id; + } + + bool is_valid() const { + return id != 0; + } + + template + void store(StorerT &storer) const { + td::store(id, storer); + } + + template + void parse(ParserT &parser) { + td::parse(id, parser); + } +}; + +struct StoryIdHash { + uint32 operator()(StoryId story_id) const { + return Hash()(story_id.get()); + } +}; + +inline StringBuilder &operator<<(StringBuilder &string_builder, StoryId story_id) { + return string_builder << "story " << story_id.get(); +} + +} // namespace td