diff options
Diffstat (limited to 'libs/tdlib/td/td/tl/tl_object_parse.h')
-rw-r--r-- | libs/tdlib/td/td/tl/tl_object_parse.h | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/libs/tdlib/td/td/tl/tl_object_parse.h b/libs/tdlib/td/td/tl/tl_object_parse.h deleted file mode 100644 index 953e0940b3..0000000000 --- a/libs/tdlib/td/td/tl/tl_object_parse.h +++ /dev/null @@ -1,145 +0,0 @@ -// -// 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/tl/TlObject.h" - -#include "td/utils/int_types.h" - -#include <cstdint> -#include <memory> -#include <string> -#include <vector> - -namespace td { - -template <class Func, std::int32_t constructor_id> -class TlFetchBoxed { - public: - template <class ParserT> - static auto parse(ParserT &p) -> decltype(Func::parse(p)) { - if (p.fetch_int() != constructor_id) { - p.set_error("Wrong constructor found"); - return decltype(Func::parse(p))(); - } - return Func::parse(p); - } -}; - -class TlFetchTrue { - public: - template <class ParserT> - static bool parse(ParserT &p) { - return true; - } -}; - -class TlFetchBool { - public: - template <class ParserT> - static bool parse(ParserT &p) { - constexpr std::int32_t ID_BOOL_FALSE = 0xbc799737; - constexpr std::int32_t ID_BOOL_TRUE = 0x997275b5; - - std::int32_t c = p.fetch_int(); - if (c == ID_BOOL_TRUE) { - return true; - } - if (c != ID_BOOL_FALSE) { - p.set_error("Bool expected"); - } - return false; - } -}; - -class TlFetchInt { - public: - template <class ParserT> - static std::int32_t parse(ParserT &p) { - return p.fetch_int(); - } -}; - -class TlFetchLong { - public: - template <class ParserT> - static std::int64_t parse(ParserT &p) { - return p.fetch_long(); - } -}; - -class TlFetchDouble { - public: - template <class ParserT> - static double parse(ParserT &p) { - return p.fetch_double(); - } -}; - -class TlFetchInt128 { - public: - template <class ParserT> - static UInt128 parse(ParserT &p) { - return p.template fetch_binary<UInt128>(); - } -}; - -class TlFetchInt256 { - public: - template <class ParserT> - static UInt256 parse(ParserT &p) { - return p.template fetch_binary<UInt256>(); - } -}; - -template <class T> -class TlFetchString { - public: - template <class ParserT> - static T parse(ParserT &p) { - return p.template fetch_string<T>(); - } -}; - -template <class T> -class TlFetchBytes { - public: - template <class ParserT> - static T parse(ParserT &p) { - return p.template fetch_string<T>(); - } -}; - -template <class Func> -class TlFetchVector { - public: - template <class ParserT> - static auto parse(ParserT &p) -> std::vector<decltype(Func::parse(p))> { - const std::uint32_t multiplicity = p.fetch_int(); - std::vector<decltype(Func::parse(p))> v; - if (p.get_left_len() < multiplicity) { - p.set_error("Wrong vector length"); - } else { - v.reserve(multiplicity); - for (std::uint32_t i = 0; i < multiplicity; i++) { - v.push_back(Func::parse(p)); - } - } - return v; - } -}; - -template <class T> -class TlFetchObject { - public: - template <class ParserT> - static tl_object_ptr<T> parse(ParserT &p) { - return T::fetch(p); - } -}; - -} // namespace td |