From f63a73b6a622f76386236c64e00752e1a71359dd Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 2 Apr 2018 01:45:51 +0300 Subject: [PATCH] Add MessageEntity.hpp. GitOrigin-RevId: 424a9918012d2285a04beead79c6edad1fb7ca28 --- CMakeLists.txt | 1 + td/telegram/Game.hpp | 1 + td/telegram/MessageEntity.h | 38 +++-------------------- td/telegram/MessageEntity.hpp | 55 +++++++++++++++++++++++++++++++++ td/telegram/MessagesManager.cpp | 1 + 5 files changed, 62 insertions(+), 34 deletions(-) create mode 100644 td/telegram/MessageEntity.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 216fc8de5..a5d4de9ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -547,6 +547,7 @@ set(TDLIB_SOURCE td/telegram/files/FileId.hpp td/telegram/files/FileManager.hpp td/telegram/Game.hpp + td/telegram/MessageEntity.hpp td/telegram/Payments.hpp td/telegram/Photo.hpp td/telegram/ReplyMarkup.hpp diff --git a/td/telegram/Game.hpp b/td/telegram/Game.hpp index ba5b773d6..497362eac 100644 --- a/td/telegram/Game.hpp +++ b/td/telegram/Game.hpp @@ -8,6 +8,7 @@ #include "td/telegram/Game.h" #include "td/telegram/AnimationsManager.hpp" +#include "td/telegram/MessageEntity.hpp" #include "td/telegram/Photo.hpp" #include "td/telegram/Version.h" diff --git a/td/telegram/MessageEntity.h b/td/telegram/MessageEntity.h index 783765108..29c7f5d13 100644 --- a/td/telegram/MessageEntity.h +++ b/td/telegram/MessageEntity.h @@ -12,7 +12,6 @@ #include "td/utils/Slice.h" #include "td/utils/Status.h" #include "td/utils/StringBuilder.h" -#include "td/utils/tl_helpers.h" #include "td/telegram/secret_api.h" #include "td/telegram/td_api.h" @@ -76,34 +75,11 @@ class MessageEntity { return !(*this == rhs); } - // TODO move to hpp template - void store(StorerT &storer) const { - using td::store; - store(type, storer); - store(offset, storer); - store(length, storer); - if (type == Type::PreCode || type == Type::TextUrl) { - store(argument, storer); - } - if (type == Type::MentionName) { - store(user_id, storer); - } - } + void store(StorerT &storer) const; template - void parse(ParserT &parser) { - using td::parse; - parse(type, parser); - parse(offset, parser); - parse(length, parser); - if (type == Type::PreCode || type == Type::TextUrl) { - parse(argument, parser); - } - if (type == Type::MentionName) { - parse(user_id, parser); - } - } + void parse(ParserT &parser); }; StringBuilder &operator<<(StringBuilder &string_builder, const MessageEntity &message_entity); @@ -113,16 +89,10 @@ struct FormattedText { vector entities; template - void store(StorerT &storer) const { - td::store(text, storer); - td::store(entities, storer); - } + void store(StorerT &storer) const; template - void parse(ParserT &parser) { - td::parse(text, parser); - td::parse(entities, parser); - } + void parse(ParserT &parser); }; inline bool operator==(const FormattedText &lhs, const FormattedText &rhs) { diff --git a/td/telegram/MessageEntity.hpp b/td/telegram/MessageEntity.hpp new file mode 100644 index 000000000..58b736009 --- /dev/null +++ b/td/telegram/MessageEntity.hpp @@ -0,0 +1,55 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 +// +// 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/telegram/MessageEntity.h" + +#include "td/utils/tl_helpers.h" + +namespace td { + +template +void MessageEntity::store(StorerT &storer) const { + using td::store; + store(type, storer); + store(offset, storer); + store(length, storer); + if (type == Type::PreCode || type == Type::TextUrl) { + store(argument, storer); + } + if (type == Type::MentionName) { + store(user_id, storer); + } +} + +template +void MessageEntity::parse(ParserT &parser) { + using td::parse; + parse(type, parser); + parse(offset, parser); + parse(length, parser); + if (type == Type::PreCode || type == Type::TextUrl) { + parse(argument, parser); + } + if (type == Type::MentionName) { + parse(user_id, parser); + } +} + +template +void FormattedText::store(StorerT &storer) const { + td::store(text, storer); + td::store(entities, storer); +} + +template +void FormattedText::parse(ParserT &parser) { + td::parse(text, parser); + td::parse(entities, parser); +} + +} // namespace td diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index ccf278e7a..453951f86 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -32,6 +32,7 @@ #include "td/telegram/HashtagHints.h" #include "td/telegram/InlineQueriesManager.h" #include "td/telegram/logevent/LogEvent.h" +#include "td/telegram/MessageEntity.hpp" #include "td/telegram/MessagesDb.h" #include "td/telegram/misc.h" #include "td/telegram/net/NetActor.h"