diff --git a/CMakeLists.txt b/CMakeLists.txt index ec69d6f9e..4472445e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -588,6 +588,7 @@ set(TDLIB_SOURCE td/telegram/InputGroupCallId.h td/telegram/InputMessageText.h td/telegram/JsonValue.h + td/telegram/LabeledPricePart.h td/telegram/LanguagePackManager.h td/telegram/LinkManager.h td/telegram/Location.h diff --git a/td/telegram/LabeledPricePart.h b/td/telegram/LabeledPricePart.h new file mode 100644 index 000000000..7788d7640 --- /dev/null +++ b/td/telegram/LabeledPricePart.h @@ -0,0 +1,47 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022 +// +// 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/StringBuilder.h" + +namespace td { + +struct LabeledPricePart { + string label; + int64 amount = 0; + + LabeledPricePart() = default; + LabeledPricePart(string &&label, int64 amount) : label(std::move(label)), amount(amount) { + } + + template + void store(StorerT &storer) const { + storer.store_string(label); + storer.store_binary(amount); + } + + template + void parse(ParserT &parser) { + label = parser.template fetch_string(); + amount = parser.fetch_long(); + } +}; + +inline bool operator==(const LabeledPricePart &lhs, const LabeledPricePart &rhs) { + return lhs.label == rhs.label && lhs.amount == rhs.amount; +} + +inline bool operator!=(const LabeledPricePart &lhs, const LabeledPricePart &rhs) { + return !(lhs == rhs); +} + +inline StringBuilder &operator<<(StringBuilder &string_builder, const LabeledPricePart &labeled_price_part) { + return string_builder << '[' << labeled_price_part.label << ": " << labeled_price_part.amount << ']'; +} + +} // namespace td diff --git a/td/telegram/Payments.cpp b/td/telegram/Payments.cpp index 9c01a3776..d067afec9 100644 --- a/td/telegram/Payments.cpp +++ b/td/telegram/Payments.cpp @@ -707,18 +707,6 @@ class GetBankCardInfoQuery final : public Td::ResultHandler { } }; -bool operator==(const LabeledPricePart &lhs, const LabeledPricePart &rhs) { - return lhs.label == rhs.label && lhs.amount == rhs.amount; -} - -bool operator!=(const LabeledPricePart &lhs, const LabeledPricePart &rhs) { - return !(lhs == rhs); -} - -StringBuilder &operator<<(StringBuilder &string_builder, const LabeledPricePart &labeled_price_part) { - return string_builder << "[" << labeled_price_part.label << ": " << labeled_price_part.amount << "]"; -} - bool operator==(const Invoice &lhs, const Invoice &rhs) { return lhs.is_test == rhs.is_test && lhs.need_name == rhs.need_name && lhs.need_phone_number == rhs.need_phone_number && lhs.need_email_address == rhs.need_email_address && diff --git a/td/telegram/Payments.h b/td/telegram/Payments.h index d968e478a..2f673f102 100644 --- a/td/telegram/Payments.h +++ b/td/telegram/Payments.h @@ -9,6 +9,7 @@ #include "td/telegram/DialogId.h" #include "td/telegram/files/FileId.h" #include "td/telegram/FullMessageId.h" +#include "td/telegram/LabeledPricePart.h" #include "td/telegram/MessageExtendedMedia.h" #include "td/telegram/MessageId.h" #include "td/telegram/Photo.h" @@ -25,15 +26,6 @@ namespace td { class Td; -struct LabeledPricePart { - string label; - int64 amount = 0; - - LabeledPricePart() = default; - LabeledPricePart(string &&label, int64 amount) : label(std::move(label)), amount(amount) { - } -}; - struct Invoice { string currency; vector price_parts; diff --git a/td/telegram/Payments.hpp b/td/telegram/Payments.hpp index 20c978779..0dec2c03b 100644 --- a/td/telegram/Payments.hpp +++ b/td/telegram/Payments.hpp @@ -16,18 +16,6 @@ namespace td { -template -void store(const LabeledPricePart &labeled_price_part, StorerT &storer) { - store(labeled_price_part.label, storer); - store(labeled_price_part.amount, storer); -} - -template -void parse(LabeledPricePart &labeled_price_part, ParserT &parser) { - parse(labeled_price_part.label, parser); - parse(labeled_price_part.amount, parser); -} - template void store(const Invoice &invoice, StorerT &storer) { bool has_tip = invoice.max_tip_amount != 0;