Copy disabled (too large)
Download .txt
Showing preview only (28,493K chars total). Download the full file to get everything.
Repository: tdlib/td
Branch: master
Commit: 0ae923c493bc
Files: 1609
Total size: 26.9 MB
Directory structure:
gitextract_al8j02rj/
├── .clang-format
├── .gitattributes
├── .gitignore
├── CHANGELOG.md
├── CMake/
│ ├── AddCXXCompilerFlag.cmake
│ ├── FindAtomics.cmake
│ ├── FindReadline.cmake
│ ├── GeneratePkgConfig.cmake
│ ├── GetGitRevisionDescription.cmake
│ ├── GetGitRevisionDescription.cmake.in
│ ├── PreventInSourceBuild.cmake
│ ├── TdSetUpCompiler.cmake
│ ├── iOS.cmake
│ └── illumos.cmake
├── CMakeLists.txt
├── Doxyfile
├── LICENSE_1_0.txt
├── README.md
├── SplitSource.php
├── TdConfig.cmake
├── benchmark/
│ ├── CMakeLists.txt
│ ├── bench_actor.cpp
│ ├── bench_crypto.cpp
│ ├── bench_db.cpp
│ ├── bench_empty.cpp
│ ├── bench_handshake.cpp
│ ├── bench_http.cpp
│ ├── bench_http_reader.cpp
│ ├── bench_http_server.cpp
│ ├── bench_http_server_cheat.cpp
│ ├── bench_http_server_fast.cpp
│ ├── bench_log.cpp
│ ├── bench_misc.cpp
│ ├── bench_queue.cpp
│ ├── bench_tddb.cpp
│ ├── check_proxy.cpp
│ ├── check_tls.cpp
│ ├── hashmap_build.cpp
│ ├── hashset_memory.cpp
│ ├── rmdir.cpp
│ └── wget.cpp
├── build.html
├── example/
│ ├── README.md
│ ├── android/
│ │ ├── .gitignore
│ │ ├── AddIntDef.php
│ │ ├── CMakeLists.txt
│ │ ├── Dockerfile
│ │ ├── README.md
│ │ ├── build-openssl.sh
│ │ ├── build-tdlib.sh
│ │ ├── check-environment.sh
│ │ └── fetch-sdk.sh
│ ├── cpp/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── td_example.cpp
│ │ └── tdjson_example.cpp
│ ├── csharp/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── TdExample.cs
│ │ ├── TdExample.csproj
│ │ └── TdExample.sln
│ ├── ios/
│ │ ├── Python-Apple-support.patch
│ │ ├── README.md
│ │ ├── build-openssl.sh
│ │ └── build.sh
│ ├── java/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── org/
│ │ │ └── drinkless/
│ │ │ └── tdlib/
│ │ │ ├── Client.java
│ │ │ ├── JsonClient.java
│ │ │ └── example/
│ │ │ ├── Example.java
│ │ │ └── JsonExample.java
│ │ └── td_jni.cpp
│ ├── python/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ └── tdjson_example.py
│ ├── swift/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── src/
│ │ │ ├── main.swift
│ │ │ └── td-Bridging-Header.h
│ │ └── td.xcodeproj/
│ │ └── project.pbxproj
│ ├── uwp/
│ │ ├── LICENSE_1_0.txt
│ │ ├── README.md
│ │ ├── SDKManifest.xml
│ │ ├── Telegram.Td.UWP.nuspec
│ │ ├── Telegram.Td.UWP.targets
│ │ ├── [Content_Types].xml
│ │ ├── app/
│ │ │ ├── .gitignore
│ │ │ ├── App.xaml
│ │ │ ├── App.xaml.cs
│ │ │ ├── ApplicationInsights.config
│ │ │ ├── MainPage.xaml
│ │ │ ├── MainPage.xaml.cs
│ │ │ ├── Package.appxmanifest
│ │ │ ├── Properties/
│ │ │ │ ├── AssemblyInfo.cs
│ │ │ │ └── Default.rd.xml
│ │ │ ├── TdApp.csproj
│ │ │ ├── TdApp.sln
│ │ │ ├── TdApp_TemporaryKey.pfx
│ │ │ └── project.json
│ │ ├── build.ps1
│ │ └── extension.vsixmanifest
│ └── web/
│ ├── .gitignore
│ ├── README.md
│ ├── build-openssl.sh
│ ├── build-tdlib.sh
│ ├── build-tdweb.sh
│ ├── copy-tdlib.sh
│ └── tdweb/
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── index.js
│ │ ├── logger.js
│ │ ├── wasm-utils.js
│ │ └── worker.js
│ └── webpack.config.js
├── format.ps1
├── format.sh
├── memprof/
│ ├── memprof.cpp
│ ├── memprof.h
│ ├── memprof_stat.cpp
│ └── memprof_stat.h
├── post.js
├── sqlite/
│ ├── CMakeLists.txt
│ └── sqlite/
│ ├── LICENSE
│ ├── sqlite3.c
│ ├── sqlite3.h
│ ├── sqlite3ext.h
│ └── sqlite3session.h
├── src.ps1
├── src.sh
├── td/
│ ├── generate/
│ │ ├── CMakeLists.txt
│ │ ├── DotnetTlDocumentationGenerator.php
│ │ ├── DoxygenTlDocumentationGenerator.php
│ │ ├── JavadocTlDocumentationGenerator.php
│ │ ├── TlDocumentationGenerator.php
│ │ ├── generate_c.cpp
│ │ ├── generate_common.cpp
│ │ ├── generate_dotnet.cpp
│ │ ├── generate_java.cpp
│ │ ├── generate_json.cpp
│ │ ├── generate_mtproto.cpp
│ │ ├── scheme/
│ │ │ ├── e2e_api.tl
│ │ │ ├── mtproto_api.tl
│ │ │ ├── secret_api.tl
│ │ │ ├── td_api.tl
│ │ │ └── telegram_api.tl
│ │ ├── tl-parser/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── crc32.c
│ │ │ ├── crc32.h
│ │ │ ├── portable_endian.h
│ │ │ ├── tl-parser-tree.h
│ │ │ ├── tl-parser.c
│ │ │ ├── tl-parser.h
│ │ │ ├── tl-tl.h
│ │ │ ├── tlc.c
│ │ │ ├── wgetopt.c
│ │ │ └── wgetopt.h
│ │ ├── tl_json_converter.cpp
│ │ ├── tl_json_converter.h
│ │ ├── tl_writer_c.h
│ │ ├── tl_writer_cpp.cpp
│ │ ├── tl_writer_cpp.h
│ │ ├── tl_writer_dotnet.h
│ │ ├── tl_writer_h.cpp
│ │ ├── tl_writer_h.h
│ │ ├── tl_writer_hpp.cpp
│ │ ├── tl_writer_hpp.h
│ │ ├── tl_writer_java.cpp
│ │ ├── tl_writer_java.h
│ │ ├── tl_writer_jni_cpp.cpp
│ │ ├── tl_writer_jni_cpp.h
│ │ ├── tl_writer_jni_h.cpp
│ │ ├── tl_writer_jni_h.h
│ │ ├── tl_writer_td.cpp
│ │ └── tl_writer_td.h
│ ├── mtproto/
│ │ ├── AuthData.cpp
│ │ ├── AuthData.h
│ │ ├── AuthKey.h
│ │ ├── ConnectionManager.cpp
│ │ ├── ConnectionManager.h
│ │ ├── CryptoStorer.h
│ │ ├── DhCallback.h
│ │ ├── DhHandshake.cpp
│ │ ├── DhHandshake.h
│ │ ├── Handshake.cpp
│ │ ├── Handshake.h
│ │ ├── HandshakeActor.cpp
│ │ ├── HandshakeActor.h
│ │ ├── HandshakeConnection.h
│ │ ├── HttpTransport.cpp
│ │ ├── HttpTransport.h
│ │ ├── IStreamTransport.cpp
│ │ ├── IStreamTransport.h
│ │ ├── KDF.cpp
│ │ ├── KDF.h
│ │ ├── MessageId.h
│ │ ├── MtprotoQuery.h
│ │ ├── NoCryptoStorer.h
│ │ ├── PacketInfo.h
│ │ ├── PacketStorer.h
│ │ ├── Ping.cpp
│ │ ├── Ping.h
│ │ ├── PingConnection.cpp
│ │ ├── PingConnection.h
│ │ ├── ProxySecret.cpp
│ │ ├── ProxySecret.h
│ │ ├── RSA.cpp
│ │ ├── RSA.h
│ │ ├── RawConnection.cpp
│ │ ├── RawConnection.h
│ │ ├── SessionConnection.cpp
│ │ ├── SessionConnection.h
│ │ ├── TcpTransport.cpp
│ │ ├── TcpTransport.h
│ │ ├── TlsInit.cpp
│ │ ├── TlsInit.h
│ │ ├── TlsReaderByteFlow.cpp
│ │ ├── TlsReaderByteFlow.h
│ │ ├── Transport.cpp
│ │ ├── Transport.h
│ │ ├── TransportType.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── telegram/
│ │ ├── AccentColorId.h
│ │ ├── AccessRights.h
│ │ ├── AccountManager.cpp
│ │ ├── AccountManager.h
│ │ ├── ActiveStoryState.cpp
│ │ ├── ActiveStoryState.h
│ │ ├── AffectedHistory.h
│ │ ├── AffiliateType.cpp
│ │ ├── AffiliateType.h
│ │ ├── AgeVerificationParameters.cpp
│ │ ├── AgeVerificationParameters.h
│ │ ├── AgeVerificationParameters.hpp
│ │ ├── AlarmManager.cpp
│ │ ├── AlarmManager.h
│ │ ├── AnimationsManager.cpp
│ │ ├── AnimationsManager.h
│ │ ├── AnimationsManager.hpp
│ │ ├── Application.cpp
│ │ ├── Application.h
│ │ ├── AttachMenuManager.cpp
│ │ ├── AttachMenuManager.h
│ │ ├── AuctionBidLevel.cpp
│ │ ├── AuctionBidLevel.h
│ │ ├── AudiosManager.cpp
│ │ ├── AudiosManager.h
│ │ ├── AudiosManager.hpp
│ │ ├── AuthManager.cpp
│ │ ├── AuthManager.h
│ │ ├── AuthManager.hpp
│ │ ├── AutoDownloadSettings.cpp
│ │ ├── AutoDownloadSettings.h
│ │ ├── AutosaveManager.cpp
│ │ ├── AutosaveManager.h
│ │ ├── BackgroundId.h
│ │ ├── BackgroundInfo.cpp
│ │ ├── BackgroundInfo.h
│ │ ├── BackgroundInfo.hpp
│ │ ├── BackgroundManager.cpp
│ │ ├── BackgroundManager.h
│ │ ├── BackgroundType.cpp
│ │ ├── BackgroundType.h
│ │ ├── BackgroundType.hpp
│ │ ├── BaseTheme.cpp
│ │ ├── BaseTheme.h
│ │ ├── Birthdate.cpp
│ │ ├── Birthdate.h
│ │ ├── Birthdate.hpp
│ │ ├── BlockListId.h
│ │ ├── BoostManager.cpp
│ │ ├── BoostManager.h
│ │ ├── BotCommand.cpp
│ │ ├── BotCommand.h
│ │ ├── BotCommandScope.cpp
│ │ ├── BotCommandScope.h
│ │ ├── BotInfoManager.cpp
│ │ ├── BotInfoManager.h
│ │ ├── BotMenuButton.cpp
│ │ ├── BotMenuButton.h
│ │ ├── BotQueries.cpp
│ │ ├── BotQueries.h
│ │ ├── BotRecommendationManager.cpp
│ │ ├── BotRecommendationManager.h
│ │ ├── BotVerification.cpp
│ │ ├── BotVerification.h
│ │ ├── BotVerification.hpp
│ │ ├── BotVerifierSettings.cpp
│ │ ├── BotVerifierSettings.h
│ │ ├── BotVerifierSettings.hpp
│ │ ├── BusinessAwayMessage.cpp
│ │ ├── BusinessAwayMessage.h
│ │ ├── BusinessAwayMessage.hpp
│ │ ├── BusinessAwayMessageSchedule.cpp
│ │ ├── BusinessAwayMessageSchedule.h
│ │ ├── BusinessAwayMessageSchedule.hpp
│ │ ├── BusinessBotManageBar.cpp
│ │ ├── BusinessBotManageBar.h
│ │ ├── BusinessBotRights.cpp
│ │ ├── BusinessBotRights.h
│ │ ├── BusinessBotRights.hpp
│ │ ├── BusinessChatLink.cpp
│ │ ├── BusinessChatLink.h
│ │ ├── BusinessConnectedBot.cpp
│ │ ├── BusinessConnectedBot.h
│ │ ├── BusinessConnectedBot.hpp
│ │ ├── BusinessConnectionId.h
│ │ ├── BusinessConnectionManager.cpp
│ │ ├── BusinessConnectionManager.h
│ │ ├── BusinessGreetingMessage.cpp
│ │ ├── BusinessGreetingMessage.h
│ │ ├── BusinessGreetingMessage.hpp
│ │ ├── BusinessInfo.cpp
│ │ ├── BusinessInfo.h
│ │ ├── BusinessInfo.hpp
│ │ ├── BusinessIntro.cpp
│ │ ├── BusinessIntro.h
│ │ ├── BusinessIntro.hpp
│ │ ├── BusinessManager.cpp
│ │ ├── BusinessManager.h
│ │ ├── BusinessRecipients.cpp
│ │ ├── BusinessRecipients.h
│ │ ├── BusinessRecipients.hpp
│ │ ├── BusinessWorkHours.cpp
│ │ ├── BusinessWorkHours.h
│ │ ├── BusinessWorkHours.hpp
│ │ ├── CallActor.cpp
│ │ ├── CallActor.h
│ │ ├── CallDiscardReason.cpp
│ │ ├── CallDiscardReason.h
│ │ ├── CallId.h
│ │ ├── CallManager.cpp
│ │ ├── CallManager.h
│ │ ├── CallbackQueriesManager.cpp
│ │ ├── CallbackQueriesManager.h
│ │ ├── ChainId.h
│ │ ├── ChannelId.h
│ │ ├── ChannelParticipantFilter.cpp
│ │ ├── ChannelParticipantFilter.h
│ │ ├── ChannelRecommendationManager.cpp
│ │ ├── ChannelRecommendationManager.h
│ │ ├── ChannelType.h
│ │ ├── ChatId.h
│ │ ├── ChatManager.cpp
│ │ ├── ChatManager.h
│ │ ├── ChatReactions.cpp
│ │ ├── ChatReactions.h
│ │ ├── ChatReactions.hpp
│ │ ├── ChatTheme.cpp
│ │ ├── ChatTheme.h
│ │ ├── ChatTheme.hpp
│ │ ├── Client.cpp
│ │ ├── Client.h
│ │ ├── ClientActor.cpp
│ │ ├── ClientActor.h
│ │ ├── ClientDotNet.cpp
│ │ ├── ClientJson.cpp
│ │ ├── ClientJson.h
│ │ ├── CommonDialogManager.cpp
│ │ ├── CommonDialogManager.h
│ │ ├── ConfigManager.cpp
│ │ ├── ConfigManager.h
│ │ ├── ConnectionState.cpp
│ │ ├── ConnectionState.h
│ │ ├── ConnectionStateManager.cpp
│ │ ├── ConnectionStateManager.h
│ │ ├── Contact.cpp
│ │ ├── Contact.h
│ │ ├── CountryInfoManager.cpp
│ │ ├── CountryInfoManager.h
│ │ ├── CurrencyAmount.cpp
│ │ ├── CurrencyAmount.h
│ │ ├── CurrencyAmount.hpp
│ │ ├── CustomEmojiId.h
│ │ ├── DelayDispatcher.cpp
│ │ ├── DelayDispatcher.h
│ │ ├── Dependencies.cpp
│ │ ├── Dependencies.h
│ │ ├── DeviceTokenManager.cpp
│ │ ├── DeviceTokenManager.h
│ │ ├── DhCache.cpp
│ │ ├── DhCache.h
│ │ ├── DhConfig.h
│ │ ├── DialogAction.cpp
│ │ ├── DialogAction.h
│ │ ├── DialogActionBar.cpp
│ │ ├── DialogActionBar.h
│ │ ├── DialogActionManager.cpp
│ │ ├── DialogActionManager.h
│ │ ├── DialogAdministrator.cpp
│ │ ├── DialogAdministrator.h
│ │ ├── DialogBoostLinkInfo.h
│ │ ├── DialogDate.h
│ │ ├── DialogDb.cpp
│ │ ├── DialogDb.h
│ │ ├── DialogEventLog.cpp
│ │ ├── DialogEventLog.h
│ │ ├── DialogFilter.cpp
│ │ ├── DialogFilter.h
│ │ ├── DialogFilter.hpp
│ │ ├── DialogFilterDialogInfo.h
│ │ ├── DialogFilterId.h
│ │ ├── DialogFilterInviteLink.cpp
│ │ ├── DialogFilterInviteLink.h
│ │ ├── DialogFilterManager.cpp
│ │ ├── DialogFilterManager.h
│ │ ├── DialogId.cpp
│ │ ├── DialogId.h
│ │ ├── DialogInviteLink.cpp
│ │ ├── DialogInviteLink.h
│ │ ├── DialogInviteLink.hpp
│ │ ├── DialogInviteLinkManager.cpp
│ │ ├── DialogInviteLinkManager.h
│ │ ├── DialogListId.cpp
│ │ ├── DialogListId.h
│ │ ├── DialogLocation.cpp
│ │ ├── DialogLocation.h
│ │ ├── DialogManager.cpp
│ │ ├── DialogManager.h
│ │ ├── DialogNotificationSettings.cpp
│ │ ├── DialogNotificationSettings.h
│ │ ├── DialogNotificationSettings.hpp
│ │ ├── DialogParticipant.cpp
│ │ ├── DialogParticipant.h
│ │ ├── DialogParticipantFilter.cpp
│ │ ├── DialogParticipantFilter.h
│ │ ├── DialogParticipantManager.cpp
│ │ ├── DialogParticipantManager.h
│ │ ├── DialogPhoto.cpp
│ │ ├── DialogPhoto.h
│ │ ├── DialogPhoto.hpp
│ │ ├── DialogSource.cpp
│ │ ├── DialogSource.h
│ │ ├── Dimensions.cpp
│ │ ├── Dimensions.h
│ │ ├── Dimensions.hpp
│ │ ├── DisallowedGiftsSettings.cpp
│ │ ├── DisallowedGiftsSettings.h
│ │ ├── DisallowedGiftsSettings.hpp
│ │ ├── Document.cpp
│ │ ├── Document.h
│ │ ├── Document.hpp
│ │ ├── DocumentsManager.cpp
│ │ ├── DocumentsManager.h
│ │ ├── DocumentsManager.hpp
│ │ ├── DownloadManager.cpp
│ │ ├── DownloadManager.h
│ │ ├── DownloadManagerCallback.cpp
│ │ ├── DownloadManagerCallback.h
│ │ ├── DraftMessage.cpp
│ │ ├── DraftMessage.h
│ │ ├── DraftMessage.hpp
│ │ ├── EmailVerification.cpp
│ │ ├── EmailVerification.h
│ │ ├── EmojiGameInfo.cpp
│ │ ├── EmojiGameInfo.h
│ │ ├── EmojiGroup.cpp
│ │ ├── EmojiGroup.h
│ │ ├── EmojiGroup.hpp
│ │ ├── EmojiGroupType.cpp
│ │ ├── EmojiGroupType.h
│ │ ├── EmojiStatus.cpp
│ │ ├── EmojiStatus.h
│ │ ├── EncryptedFile.h
│ │ ├── FactCheck.cpp
│ │ ├── FactCheck.h
│ │ ├── FactCheck.hpp
│ │ ├── FileReferenceManager.cpp
│ │ ├── FileReferenceManager.h
│ │ ├── FileReferenceManager.hpp
│ │ ├── FolderId.h
│ │ ├── ForumTopic.cpp
│ │ ├── ForumTopic.h
│ │ ├── ForumTopic.hpp
│ │ ├── ForumTopicEditedData.cpp
│ │ ├── ForumTopicEditedData.h
│ │ ├── ForumTopicEditedData.hpp
│ │ ├── ForumTopicFullId.h
│ │ ├── ForumTopicIcon.cpp
│ │ ├── ForumTopicIcon.h
│ │ ├── ForumTopicIcon.hpp
│ │ ├── ForumTopicId.h
│ │ ├── ForumTopicInfo.cpp
│ │ ├── ForumTopicInfo.h
│ │ ├── ForumTopicInfo.hpp
│ │ ├── ForumTopicManager.cpp
│ │ ├── ForumTopicManager.h
│ │ ├── Game.cpp
│ │ ├── Game.h
│ │ ├── Game.hpp
│ │ ├── GameManager.cpp
│ │ ├── GameManager.h
│ │ ├── GitCommitHash.cpp.in
│ │ ├── GitCommitHash.h
│ │ ├── GiveawayParameters.cpp
│ │ ├── GiveawayParameters.h
│ │ ├── GiveawayParameters.hpp
│ │ ├── Global.cpp
│ │ ├── Global.h
│ │ ├── GlobalPrivacySettings.cpp
│ │ ├── GlobalPrivacySettings.h
│ │ ├── GroupCallId.h
│ │ ├── GroupCallJoinParameters.cpp
│ │ ├── GroupCallJoinParameters.h
│ │ ├── GroupCallManager.cpp
│ │ ├── GroupCallManager.h
│ │ ├── GroupCallMessage.cpp
│ │ ├── GroupCallMessage.h
│ │ ├── GroupCallMessageLimit.cpp
│ │ ├── GroupCallMessageLimit.h
│ │ ├── GroupCallMessageLimit.hpp
│ │ ├── GroupCallParticipant.cpp
│ │ ├── GroupCallParticipant.h
│ │ ├── GroupCallParticipantOrder.cpp
│ │ ├── GroupCallParticipantOrder.h
│ │ ├── GroupCallVideoPayload.cpp
│ │ ├── GroupCallVideoPayload.h
│ │ ├── HashtagHints.cpp
│ │ ├── HashtagHints.h
│ │ ├── InlineMessageManager.cpp
│ │ ├── InlineMessageManager.h
│ │ ├── InlineQueriesManager.cpp
│ │ ├── InlineQueriesManager.h
│ │ ├── InputBusinessChatLink.cpp
│ │ ├── InputBusinessChatLink.h
│ │ ├── InputCallId.cpp
│ │ ├── InputCallId.h
│ │ ├── InputDialogId.cpp
│ │ ├── InputDialogId.h
│ │ ├── InputGroupCall.cpp
│ │ ├── InputGroupCall.h
│ │ ├── InputGroupCallId.cpp
│ │ ├── InputGroupCallId.h
│ │ ├── InputInvoice.cpp
│ │ ├── InputInvoice.h
│ │ ├── InputInvoice.hpp
│ │ ├── InputMessageText.cpp
│ │ ├── InputMessageText.h
│ │ ├── InputMessageText.hpp
│ │ ├── JsonValue.cpp
│ │ ├── JsonValue.h
│ │ ├── KeyboardButtonStyle.cpp
│ │ ├── KeyboardButtonStyle.h
│ │ ├── KeyboardButtonStyle.hpp
│ │ ├── LabeledPricePart.h
│ │ ├── LanguagePackManager.cpp
│ │ ├── LanguagePackManager.h
│ │ ├── LinkManager.cpp
│ │ ├── LinkManager.h
│ │ ├── Location.cpp
│ │ ├── Location.h
│ │ ├── Log.cpp
│ │ ├── Log.h
│ │ ├── Logging.cpp
│ │ ├── Logging.h
│ │ ├── MediaArea.cpp
│ │ ├── MediaArea.h
│ │ ├── MediaArea.hpp
│ │ ├── MediaAreaCoordinates.cpp
│ │ ├── MediaAreaCoordinates.h
│ │ ├── MediaAreaCoordinates.hpp
│ │ ├── MessageContent.cpp
│ │ ├── MessageContent.h
│ │ ├── MessageContentType.cpp
│ │ ├── MessageContentType.h
│ │ ├── MessageCopyOptions.cpp
│ │ ├── MessageCopyOptions.h
│ │ ├── MessageCover.cpp
│ │ ├── MessageCover.h
│ │ ├── MessageDb.cpp
│ │ ├── MessageDb.h
│ │ ├── MessageEffectId.h
│ │ ├── MessageEntity.cpp
│ │ ├── MessageEntity.h
│ │ ├── MessageEntity.hpp
│ │ ├── MessageExtendedMedia.cpp
│ │ ├── MessageExtendedMedia.h
│ │ ├── MessageExtendedMedia.hpp
│ │ ├── MessageForwardInfo.cpp
│ │ ├── MessageForwardInfo.h
│ │ ├── MessageForwardInfo.hpp
│ │ ├── MessageFullId.h
│ │ ├── MessageId.cpp
│ │ ├── MessageId.h
│ │ ├── MessageImportManager.cpp
│ │ ├── MessageImportManager.h
│ │ ├── MessageInputReplyTo.cpp
│ │ ├── MessageInputReplyTo.h
│ │ ├── MessageInputReplyTo.hpp
│ │ ├── MessageLinkInfo.h
│ │ ├── MessageOrigin.cpp
│ │ ├── MessageOrigin.h
│ │ ├── MessageOrigin.hpp
│ │ ├── MessageQueryManager.cpp
│ │ ├── MessageQueryManager.h
│ │ ├── MessageQuote.cpp
│ │ ├── MessageQuote.h
│ │ ├── MessageQuote.hpp
│ │ ├── MessageReaction.cpp
│ │ ├── MessageReaction.h
│ │ ├── MessageReaction.hpp
│ │ ├── MessageReactor.cpp
│ │ ├── MessageReactor.h
│ │ ├── MessageReactor.hpp
│ │ ├── MessageReplyHeader.cpp
│ │ ├── MessageReplyHeader.h
│ │ ├── MessageReplyInfo.cpp
│ │ ├── MessageReplyInfo.h
│ │ ├── MessageReplyInfo.hpp
│ │ ├── MessageSearchFilter.cpp
│ │ ├── MessageSearchFilter.h
│ │ ├── MessageSearchOffset.cpp
│ │ ├── MessageSearchOffset.h
│ │ ├── MessageSelfDestructType.cpp
│ │ ├── MessageSelfDestructType.h
│ │ ├── MessageSendOptions.cpp
│ │ ├── MessageSendOptions.h
│ │ ├── MessageSender.cpp
│ │ ├── MessageSender.h
│ │ ├── MessageSource.cpp
│ │ ├── MessageSource.h
│ │ ├── MessageThreadDb.cpp
│ │ ├── MessageThreadDb.h
│ │ ├── MessageThreadInfo.h
│ │ ├── MessageTopic.cpp
│ │ ├── MessageTopic.h
│ │ ├── MessageTtl.cpp
│ │ ├── MessageTtl.h
│ │ ├── MessageViewer.cpp
│ │ ├── MessageViewer.h
│ │ ├── MessagesInfo.cpp
│ │ ├── MessagesInfo.h
│ │ ├── MessagesManager.cpp
│ │ ├── MessagesManager.h
│ │ ├── MinChannel.h
│ │ ├── MinChannel.hpp
│ │ ├── MissingInvitee.cpp
│ │ ├── MissingInvitee.h
│ │ ├── NewPasswordState.cpp
│ │ ├── NewPasswordState.h
│ │ ├── Notification.h
│ │ ├── NotificationGroupFromDatabase.h
│ │ ├── NotificationGroupId.h
│ │ ├── NotificationGroupInfo.cpp
│ │ ├── NotificationGroupInfo.h
│ │ ├── NotificationGroupInfo.hpp
│ │ ├── NotificationGroupKey.h
│ │ ├── NotificationGroupType.cpp
│ │ ├── NotificationGroupType.h
│ │ ├── NotificationId.h
│ │ ├── NotificationManager.cpp
│ │ ├── NotificationManager.h
│ │ ├── NotificationObjectFullId.h
│ │ ├── NotificationObjectId.h
│ │ ├── NotificationSettingsManager.cpp
│ │ ├── NotificationSettingsManager.h
│ │ ├── NotificationSettingsScope.cpp
│ │ ├── NotificationSettingsScope.h
│ │ ├── NotificationSound.cpp
│ │ ├── NotificationSound.h
│ │ ├── NotificationSoundType.h
│ │ ├── NotificationType.cpp
│ │ ├── NotificationType.h
│ │ ├── OnlineManager.cpp
│ │ ├── OnlineManager.h
│ │ ├── OptionManager.cpp
│ │ ├── OptionManager.h
│ │ ├── OrderInfo.cpp
│ │ ├── OrderInfo.h
│ │ ├── OrderInfo.hpp
│ │ ├── OrderedMessage.cpp
│ │ ├── OrderedMessage.h
│ │ ├── Outline.cpp
│ │ ├── Outline.h
│ │ ├── PaidReactionType.cpp
│ │ ├── PaidReactionType.h
│ │ ├── PaidReactionType.hpp
│ │ ├── Passkey.cpp
│ │ ├── Passkey.h
│ │ ├── PasswordManager.cpp
│ │ ├── PasswordManager.h
│ │ ├── Payments.cpp
│ │ ├── Payments.h
│ │ ├── PeerColor.cpp
│ │ ├── PeerColor.h
│ │ ├── PeerColorCollectible.cpp
│ │ ├── PeerColorCollectible.h
│ │ ├── PeerColorCollectible.hpp
│ │ ├── PeopleNearbyManager.cpp
│ │ ├── PeopleNearbyManager.h
│ │ ├── PhoneNumberManager.cpp
│ │ ├── PhoneNumberManager.h
│ │ ├── Photo.cpp
│ │ ├── Photo.h
│ │ ├── Photo.hpp
│ │ ├── PhotoFormat.h
│ │ ├── PhotoSize.cpp
│ │ ├── PhotoSize.h
│ │ ├── PhotoSize.hpp
│ │ ├── PhotoSizeSource.cpp
│ │ ├── PhotoSizeSource.h
│ │ ├── PhotoSizeSource.hpp
│ │ ├── PhotoSizeType.h
│ │ ├── PhotoSizeType.hpp
│ │ ├── PollId.h
│ │ ├── PollId.hpp
│ │ ├── PollManager.cpp
│ │ ├── PollManager.h
│ │ ├── PollManager.hpp
│ │ ├── Premium.cpp
│ │ ├── Premium.h
│ │ ├── PremiumGiftOption.cpp
│ │ ├── PremiumGiftOption.h
│ │ ├── PremiumGiftOption.hpp
│ │ ├── PrivacyManager.cpp
│ │ ├── PrivacyManager.h
│ │ ├── ProfileTab.cpp
│ │ ├── ProfileTab.h
│ │ ├── PromoDataManager.cpp
│ │ ├── PromoDataManager.h
│ │ ├── PtsManager.h
│ │ ├── PublicDialogType.h
│ │ ├── QueryCombiner.cpp
│ │ ├── QueryCombiner.h
│ │ ├── QueryMerger.cpp
│ │ ├── QueryMerger.h
│ │ ├── QuickReplyManager.cpp
│ │ ├── QuickReplyManager.h
│ │ ├── QuickReplyMessageFullId.h
│ │ ├── QuickReplyShortcutId.h
│ │ ├── ReactionListType.cpp
│ │ ├── ReactionListType.h
│ │ ├── ReactionManager.cpp
│ │ ├── ReactionManager.h
│ │ ├── ReactionManager.hpp
│ │ ├── ReactionNotificationSettings.cpp
│ │ ├── ReactionNotificationSettings.h
│ │ ├── ReactionNotificationSettings.hpp
│ │ ├── ReactionNotificationsFrom.cpp
│ │ ├── ReactionNotificationsFrom.h
│ │ ├── ReactionNotificationsFrom.hpp
│ │ ├── ReactionType.cpp
│ │ ├── ReactionType.h
│ │ ├── ReactionType.hpp
│ │ ├── ReactionUnavailabilityReason.h
│ │ ├── RecentDialogList.cpp
│ │ ├── RecentDialogList.h
│ │ ├── ReferralProgramInfo.cpp
│ │ ├── ReferralProgramInfo.h
│ │ ├── ReferralProgramInfo.hpp
│ │ ├── ReferralProgramManager.cpp
│ │ ├── ReferralProgramManager.h
│ │ ├── ReferralProgramParameters.cpp
│ │ ├── ReferralProgramParameters.h
│ │ ├── ReferralProgramParameters.hpp
│ │ ├── ReferralProgramSortOrder.cpp
│ │ ├── ReferralProgramSortOrder.h
│ │ ├── RepliedMessageInfo.cpp
│ │ ├── RepliedMessageInfo.h
│ │ ├── RepliedMessageInfo.hpp
│ │ ├── ReplyMarkup.cpp
│ │ ├── ReplyMarkup.h
│ │ ├── ReplyMarkup.hpp
│ │ ├── ReportReason.cpp
│ │ ├── ReportReason.h
│ │ ├── RequestActor.h
│ │ ├── RequestedDialogType.cpp
│ │ ├── RequestedDialogType.h
│ │ ├── RequestedDialogType.hpp
│ │ ├── Requests.cpp
│ │ ├── Requests.h
│ │ ├── RestrictionReason.cpp
│ │ ├── RestrictionReason.h
│ │ ├── SavedMessagesManager.cpp
│ │ ├── SavedMessagesManager.h
│ │ ├── SavedMessagesTopicId.cpp
│ │ ├── SavedMessagesTopicId.h
│ │ ├── ScheduledServerMessageId.h
│ │ ├── ScopeNotificationSettings.cpp
│ │ ├── ScopeNotificationSettings.h
│ │ ├── ScopeNotificationSettings.hpp
│ │ ├── SearchPostsFlood.cpp
│ │ ├── SearchPostsFlood.h
│ │ ├── SecretChatActor.cpp
│ │ ├── SecretChatActor.h
│ │ ├── SecretChatDb.cpp
│ │ ├── SecretChatDb.h
│ │ ├── SecretChatId.h
│ │ ├── SecretChatLayer.h
│ │ ├── SecretChatsManager.cpp
│ │ ├── SecretChatsManager.h
│ │ ├── SecretInputMedia.cpp
│ │ ├── SecretInputMedia.h
│ │ ├── SecureManager.cpp
│ │ ├── SecureManager.h
│ │ ├── SecureStorage.cpp
│ │ ├── SecureStorage.h
│ │ ├── SecureValue.cpp
│ │ ├── SecureValue.h
│ │ ├── SecureValue.hpp
│ │ ├── SendCodeHelper.cpp
│ │ ├── SendCodeHelper.h
│ │ ├── SendCodeHelper.hpp
│ │ ├── SentEmailCode.cpp
│ │ ├── SentEmailCode.h
│ │ ├── SequenceDispatcher.cpp
│ │ ├── SequenceDispatcher.h
│ │ ├── ServerMessageId.h
│ │ ├── SetWithPosition.h
│ │ ├── SharedDialog.cpp
│ │ ├── SharedDialog.h
│ │ ├── SharedDialog.hpp
│ │ ├── SpecialStickerSetType.cpp
│ │ ├── SpecialStickerSetType.h
│ │ ├── SponsoredMessageManager.cpp
│ │ ├── SponsoredMessageManager.h
│ │ ├── StarAmount.cpp
│ │ ├── StarAmount.h
│ │ ├── StarAmount.hpp
│ │ ├── StarGift.cpp
│ │ ├── StarGift.h
│ │ ├── StarGift.hpp
│ │ ├── StarGiftAttribute.cpp
│ │ ├── StarGiftAttribute.h
│ │ ├── StarGiftAttribute.hpp
│ │ ├── StarGiftAttributeId.cpp
│ │ ├── StarGiftAttributeId.h
│ │ ├── StarGiftAttributeRarity.cpp
│ │ ├── StarGiftAttributeRarity.h
│ │ ├── StarGiftAttributeRarity.hpp
│ │ ├── StarGiftAuctionRound.cpp
│ │ ├── StarGiftAuctionRound.h
│ │ ├── StarGiftAuctionState.cpp
│ │ ├── StarGiftAuctionState.h
│ │ ├── StarGiftAuctionUserState.cpp
│ │ ├── StarGiftAuctionUserState.h
│ │ ├── StarGiftBackground.cpp
│ │ ├── StarGiftBackground.h
│ │ ├── StarGiftBackground.hpp
│ │ ├── StarGiftCollection.cpp
│ │ ├── StarGiftCollection.h
│ │ ├── StarGiftCollectionId.h
│ │ ├── StarGiftId.cpp
│ │ ├── StarGiftId.h
│ │ ├── StarGiftId.hpp
│ │ ├── StarGiftManager.cpp
│ │ ├── StarGiftManager.h
│ │ ├── StarGiftResalePrice.cpp
│ │ ├── StarGiftResalePrice.h
│ │ ├── StarGiftResalePrice.hpp
│ │ ├── StarGiftSettings.cpp
│ │ ├── StarGiftSettings.h
│ │ ├── StarGiftSettings.hpp
│ │ ├── StarManager.cpp
│ │ ├── StarManager.h
│ │ ├── StarRating.cpp
│ │ ├── StarRating.h
│ │ ├── StarRating.hpp
│ │ ├── StarSubscription.cpp
│ │ ├── StarSubscription.h
│ │ ├── StarSubscriptionPricing.cpp
│ │ ├── StarSubscriptionPricing.h
│ │ ├── StarSubscriptionPricing.hpp
│ │ ├── StateManager.cpp
│ │ ├── StateManager.h
│ │ ├── StatisticsManager.cpp
│ │ ├── StatisticsManager.h
│ │ ├── StickerFormat.cpp
│ │ ├── StickerFormat.h
│ │ ├── StickerListType.cpp
│ │ ├── StickerListType.h
│ │ ├── StickerMaskPosition.cpp
│ │ ├── StickerMaskPosition.h
│ │ ├── StickerMaskPosition.hpp
│ │ ├── StickerPhotoSize.cpp
│ │ ├── StickerPhotoSize.h
│ │ ├── StickerPhotoSize.hpp
│ │ ├── StickerSetId.cpp
│ │ ├── StickerSetId.h
│ │ ├── StickerType.cpp
│ │ ├── StickerType.h
│ │ ├── StickersManager.cpp
│ │ ├── StickersManager.h
│ │ ├── StickersManager.hpp
│ │ ├── StorageManager.cpp
│ │ ├── StorageManager.h
│ │ ├── StoryAlbum.cpp
│ │ ├── StoryAlbum.h
│ │ ├── StoryAlbumFullId.h
│ │ ├── StoryAlbumId.h
│ │ ├── StoryContent.cpp
│ │ ├── StoryContent.h
│ │ ├── StoryContentType.cpp
│ │ ├── StoryContentType.h
│ │ ├── StoryDb.cpp
│ │ ├── StoryDb.h
│ │ ├── StoryForwardInfo.cpp
│ │ ├── StoryForwardInfo.h
│ │ ├── StoryForwardInfo.hpp
│ │ ├── StoryFullId.h
│ │ ├── StoryId.h
│ │ ├── StoryInteractionInfo.cpp
│ │ ├── StoryInteractionInfo.h
│ │ ├── StoryInteractionInfo.hpp
│ │ ├── StoryListId.h
│ │ ├── StoryManager.cpp
│ │ ├── StoryManager.h
│ │ ├── StoryNotificationSettings.h
│ │ ├── StoryStealthMode.cpp
│ │ ├── StoryStealthMode.h
│ │ ├── StoryStealthMode.hpp
│ │ ├── StoryViewer.cpp
│ │ ├── StoryViewer.h
│ │ ├── SuggestedAction.cpp
│ │ ├── SuggestedAction.h
│ │ ├── SuggestedAction.hpp
│ │ ├── SuggestedActionManager.cpp
│ │ ├── SuggestedActionManager.h
│ │ ├── SuggestedPost.cpp
│ │ ├── SuggestedPost.h
│ │ ├── SuggestedPost.hpp
│ │ ├── SuggestedPostPrice.cpp
│ │ ├── SuggestedPostPrice.h
│ │ ├── SuggestedPostPrice.hpp
│ │ ├── Support.cpp
│ │ ├── Support.h
│ │ ├── SynchronousRequests.cpp
│ │ ├── SynchronousRequests.h
│ │ ├── TargetDialogTypes.cpp
│ │ ├── TargetDialogTypes.h
│ │ ├── Td.cpp
│ │ ├── Td.h
│ │ ├── TdCallback.h
│ │ ├── TdDb.cpp
│ │ ├── TdDb.h
│ │ ├── TempPasswordState.cpp
│ │ ├── TempPasswordState.h
│ │ ├── TempPasswordState.hpp
│ │ ├── TermsOfService.cpp
│ │ ├── TermsOfService.h
│ │ ├── TermsOfService.hpp
│ │ ├── TermsOfServiceManager.cpp
│ │ ├── TermsOfServiceManager.h
│ │ ├── ThemeManager.cpp
│ │ ├── ThemeManager.h
│ │ ├── ThemeSettings.cpp
│ │ ├── ThemeSettings.h
│ │ ├── ThemeSettings.hpp
│ │ ├── TimeZoneManager.cpp
│ │ ├── TimeZoneManager.h
│ │ ├── ToDoCompletion.cpp
│ │ ├── ToDoCompletion.h
│ │ ├── ToDoCompletion.hpp
│ │ ├── ToDoItem.cpp
│ │ ├── ToDoItem.h
│ │ ├── ToDoItem.hpp
│ │ ├── ToDoList.cpp
│ │ ├── ToDoList.h
│ │ ├── ToDoList.hpp
│ │ ├── TonAmount.cpp
│ │ ├── TonAmount.h
│ │ ├── TonAmount.hpp
│ │ ├── TopDialogCategory.cpp
│ │ ├── TopDialogCategory.h
│ │ ├── TopDialogManager.cpp
│ │ ├── TopDialogManager.h
│ │ ├── TranscriptionInfo.cpp
│ │ ├── TranscriptionInfo.h
│ │ ├── TranscriptionInfo.hpp
│ │ ├── TranscriptionManager.cpp
│ │ ├── TranscriptionManager.h
│ │ ├── TranslationManager.cpp
│ │ ├── TranslationManager.h
│ │ ├── UniqueId.h
│ │ ├── UpdatesManager.cpp
│ │ ├── UpdatesManager.h
│ │ ├── UserId.h
│ │ ├── UserManager.cpp
│ │ ├── UserManager.h
│ │ ├── UserPrivacySetting.cpp
│ │ ├── UserPrivacySetting.h
│ │ ├── UserPrivacySettingRule.cpp
│ │ ├── UserPrivacySettingRule.h
│ │ ├── UserStarGift.cpp
│ │ ├── UserStarGift.h
│ │ ├── Usernames.cpp
│ │ ├── Usernames.h
│ │ ├── Venue.cpp
│ │ ├── Venue.h
│ │ ├── VerificationStatus.cpp
│ │ ├── VerificationStatus.h
│ │ ├── Version.h
│ │ ├── VideoNotesManager.cpp
│ │ ├── VideoNotesManager.h
│ │ ├── VideoNotesManager.hpp
│ │ ├── VideosManager.cpp
│ │ ├── VideosManager.h
│ │ ├── VideosManager.hpp
│ │ ├── VoiceNotesManager.cpp
│ │ ├── VoiceNotesManager.h
│ │ ├── VoiceNotesManager.hpp
│ │ ├── WebApp.cpp
│ │ ├── WebApp.h
│ │ ├── WebApp.hpp
│ │ ├── WebAppManager.cpp
│ │ ├── WebAppManager.h
│ │ ├── WebAppOpenParameters.cpp
│ │ ├── WebAppOpenParameters.h
│ │ ├── WebPageBlock.cpp
│ │ ├── WebPageBlock.h
│ │ ├── WebPageId.h
│ │ ├── WebPagesManager.cpp
│ │ ├── WebPagesManager.h
│ │ ├── cli.cpp
│ │ ├── files/
│ │ │ ├── FileBitmask.cpp
│ │ │ ├── FileBitmask.h
│ │ │ ├── FileData.h
│ │ │ ├── FileData.hpp
│ │ │ ├── FileDb.cpp
│ │ │ ├── FileDb.h
│ │ │ ├── FileDbId.h
│ │ │ ├── FileDownloadManager.cpp
│ │ │ ├── FileDownloadManager.h
│ │ │ ├── FileDownloader.cpp
│ │ │ ├── FileDownloader.h
│ │ │ ├── FileEncryptionKey.cpp
│ │ │ ├── FileEncryptionKey.h
│ │ │ ├── FileFromBytes.cpp
│ │ │ ├── FileFromBytes.h
│ │ │ ├── FileGcParameters.cpp
│ │ │ ├── FileGcParameters.h
│ │ │ ├── FileGcWorker.cpp
│ │ │ ├── FileGcWorker.h
│ │ │ ├── FileGenerateManager.cpp
│ │ │ ├── FileGenerateManager.h
│ │ │ ├── FileHashUploader.cpp
│ │ │ ├── FileHashUploader.h
│ │ │ ├── FileId.h
│ │ │ ├── FileId.hpp
│ │ │ ├── FileLoadManager.cpp
│ │ │ ├── FileLoadManager.h
│ │ │ ├── FileLoaderActor.h
│ │ │ ├── FileLoaderUtils.cpp
│ │ │ ├── FileLoaderUtils.h
│ │ │ ├── FileLocation.h
│ │ │ ├── FileLocation.hpp
│ │ │ ├── FileManager.cpp
│ │ │ ├── FileManager.h
│ │ │ ├── FileManager.hpp
│ │ │ ├── FileSourceId.h
│ │ │ ├── FileSourceId.hpp
│ │ │ ├── FileStats.cpp
│ │ │ ├── FileStats.h
│ │ │ ├── FileStatsWorker.cpp
│ │ │ ├── FileStatsWorker.h
│ │ │ ├── FileType.cpp
│ │ │ ├── FileType.h
│ │ │ ├── FileUploadId.h
│ │ │ ├── FileUploadManager.cpp
│ │ │ ├── FileUploadManager.h
│ │ │ ├── FileUploader.cpp
│ │ │ ├── FileUploader.h
│ │ │ ├── PartsManager.cpp
│ │ │ ├── PartsManager.h
│ │ │ ├── ResourceManager.cpp
│ │ │ ├── ResourceManager.h
│ │ │ ├── ResourceState.cpp
│ │ │ └── ResourceState.h
│ │ ├── logevent/
│ │ │ ├── LogEvent.h
│ │ │ ├── LogEventHelper.cpp
│ │ │ ├── LogEventHelper.h
│ │ │ └── SecretChatEvent.h
│ │ ├── misc.cpp
│ │ ├── misc.h
│ │ ├── net/
│ │ │ ├── AuthDataShared.cpp
│ │ │ ├── AuthDataShared.h
│ │ │ ├── AuthKeyState.h
│ │ │ ├── ConnectionCreator.cpp
│ │ │ ├── ConnectionCreator.h
│ │ │ ├── DcAuthManager.cpp
│ │ │ ├── DcAuthManager.h
│ │ │ ├── DcId.h
│ │ │ ├── DcOptions.h
│ │ │ ├── DcOptionsSet.cpp
│ │ │ ├── DcOptionsSet.h
│ │ │ ├── MtprotoHeader.cpp
│ │ │ ├── MtprotoHeader.h
│ │ │ ├── NetActor.cpp
│ │ │ ├── NetActor.h
│ │ │ ├── NetQuery.cpp
│ │ │ ├── NetQuery.h
│ │ │ ├── NetQueryCounter.h
│ │ │ ├── NetQueryCreator.cpp
│ │ │ ├── NetQueryCreator.h
│ │ │ ├── NetQueryDelayer.cpp
│ │ │ ├── NetQueryDelayer.h
│ │ │ ├── NetQueryDispatcher.cpp
│ │ │ ├── NetQueryDispatcher.h
│ │ │ ├── NetQueryStats.cpp
│ │ │ ├── NetQueryStats.h
│ │ │ ├── NetQueryVerifier.cpp
│ │ │ ├── NetQueryVerifier.h
│ │ │ ├── NetStatsManager.cpp
│ │ │ ├── NetStatsManager.h
│ │ │ ├── NetType.h
│ │ │ ├── Proxy.cpp
│ │ │ ├── Proxy.h
│ │ │ ├── ProxyChecker.cpp
│ │ │ ├── ProxyChecker.h
│ │ │ ├── PublicRsaKeySharedCdn.cpp
│ │ │ ├── PublicRsaKeySharedCdn.h
│ │ │ ├── PublicRsaKeySharedMain.cpp
│ │ │ ├── PublicRsaKeySharedMain.h
│ │ │ ├── PublicRsaKeyWatchdog.cpp
│ │ │ ├── PublicRsaKeyWatchdog.h
│ │ │ ├── Session.cpp
│ │ │ ├── Session.h
│ │ │ ├── SessionMultiProxy.cpp
│ │ │ ├── SessionMultiProxy.h
│ │ │ ├── SessionProxy.cpp
│ │ │ ├── SessionProxy.h
│ │ │ └── TempAuthKeyWatchdog.h
│ │ ├── td_c_client.cpp
│ │ ├── td_c_client.h
│ │ ├── td_emscripten.cpp
│ │ ├── td_json_client.cpp
│ │ ├── td_json_client.h
│ │ ├── td_log.cpp
│ │ └── td_log.h
│ └── tl/
│ ├── TlObject.h
│ ├── tl_dotnet_object.h
│ ├── tl_jni_object.cpp
│ ├── tl_jni_object.h
│ ├── tl_json.h
│ ├── tl_object_parse.h
│ └── tl_object_store.h
├── tdactor/
│ ├── CMakeLists.txt
│ ├── example/
│ │ └── example.cpp
│ ├── td/
│ │ └── actor/
│ │ ├── ConcurrentScheduler.cpp
│ │ ├── ConcurrentScheduler.h
│ │ ├── MultiPromise.cpp
│ │ ├── MultiPromise.h
│ │ ├── MultiTimeout.cpp
│ │ ├── MultiTimeout.h
│ │ ├── PromiseFuture.h
│ │ ├── SchedulerLocalStorage.h
│ │ ├── SignalSlot.h
│ │ ├── SleepActor.h
│ │ ├── Timeout.h
│ │ ├── actor.h
│ │ └── impl/
│ │ ├── Actor-decl.h
│ │ ├── Actor.h
│ │ ├── ActorId-decl.h
│ │ ├── ActorId.h
│ │ ├── ActorInfo-decl.h
│ │ ├── ActorInfo.h
│ │ ├── Event.h
│ │ ├── EventFull-decl.h
│ │ ├── EventFull.h
│ │ ├── Scheduler-decl.h
│ │ ├── Scheduler.cpp
│ │ └── Scheduler.h
│ └── test/
│ ├── actors_bugs.cpp
│ ├── actors_main.cpp
│ ├── actors_simple.cpp
│ └── actors_workers.cpp
├── tdclientjson_export_list
├── tddb/
│ ├── CMakeLists.txt
│ └── td/
│ └── db/
│ ├── BinlogKeyValue.h
│ ├── DbKey.h
│ ├── KeyValueSyncInterface.h
│ ├── SeqKeyValue.h
│ ├── SqliteConnectionSafe.cpp
│ ├── SqliteConnectionSafe.h
│ ├── SqliteDb.cpp
│ ├── SqliteDb.h
│ ├── SqliteKeyValue.cpp
│ ├── SqliteKeyValue.h
│ ├── SqliteKeyValueAsync.cpp
│ ├── SqliteKeyValueAsync.h
│ ├── SqliteKeyValueSafe.h
│ ├── SqliteStatement.cpp
│ ├── SqliteStatement.h
│ ├── TQueue.cpp
│ ├── TQueue.h
│ ├── TsSeqKeyValue.h
│ ├── binlog/
│ │ ├── Binlog.cpp
│ │ ├── Binlog.h
│ │ ├── BinlogEvent.cpp
│ │ ├── BinlogEvent.h
│ │ ├── BinlogHelper.h
│ │ ├── BinlogInterface.h
│ │ ├── ConcurrentBinlog.cpp
│ │ ├── ConcurrentBinlog.h
│ │ ├── binlog_dump.cpp
│ │ └── detail/
│ │ ├── BinlogEventsBuffer.cpp
│ │ ├── BinlogEventsBuffer.h
│ │ ├── BinlogEventsProcessor.cpp
│ │ └── BinlogEventsProcessor.h
│ └── detail/
│ ├── RawSqliteDb.cpp
│ └── RawSqliteDb.h
├── tde2e/
│ ├── CMakeLists.txt
│ ├── td/
│ │ └── e2e/
│ │ ├── BitString.cpp
│ │ ├── BitString.h
│ │ ├── Blockchain.cpp
│ │ ├── Blockchain.h
│ │ ├── Blockchain.md
│ │ ├── Call.cpp
│ │ ├── Call.h
│ │ ├── CheckSharedSecret.cpp
│ │ ├── CheckSharedSecret.h
│ │ ├── Container.h
│ │ ├── DecryptedKey.cpp
│ │ ├── DecryptedKey.h
│ │ ├── EncryptedKey.cpp
│ │ ├── EncryptedKey.h
│ │ ├── EncryptedStorage.cpp
│ │ ├── EncryptedStorage.h
│ │ ├── Encryption.md
│ │ ├── Keys.cpp
│ │ ├── Keys.h
│ │ ├── MessageEncryption.cpp
│ │ ├── MessageEncryption.h
│ │ ├── Mnemonic.cpp
│ │ ├── Mnemonic.h
│ │ ├── QRHandshake.cpp
│ │ ├── QRHandshake.h
│ │ ├── TestBlockchain.cpp
│ │ ├── TestBlockchain.h
│ │ ├── Trie.cpp
│ │ ├── Trie.h
│ │ ├── bip39.cpp
│ │ ├── bip39.h
│ │ ├── e2e_api.cpp
│ │ ├── e2e_api.h
│ │ ├── e2e_errors.h
│ │ ├── encryption_test.py
│ │ └── utils.h
│ └── test/
│ ├── EncryptionTestVectors.h
│ ├── blockchain.cpp
│ ├── e2e.cpp
│ └── encryption.cpp
├── tdnet/
│ ├── CMakeLists.txt
│ └── td/
│ └── net/
│ ├── DarwinHttp.h
│ ├── DarwinHttp.mm
│ ├── GetHostByNameActor.cpp
│ ├── GetHostByNameActor.h
│ ├── HttpChunkedByteFlow.cpp
│ ├── HttpChunkedByteFlow.h
│ ├── HttpConnectionBase.cpp
│ ├── HttpConnectionBase.h
│ ├── HttpContentLengthByteFlow.cpp
│ ├── HttpContentLengthByteFlow.h
│ ├── HttpFile.cpp
│ ├── HttpFile.h
│ ├── HttpHeaderCreator.cpp
│ ├── HttpHeaderCreator.h
│ ├── HttpInboundConnection.cpp
│ ├── HttpInboundConnection.h
│ ├── HttpOutboundConnection.cpp
│ ├── HttpOutboundConnection.h
│ ├── HttpProxy.cpp
│ ├── HttpProxy.h
│ ├── HttpQuery.cpp
│ ├── HttpQuery.h
│ ├── HttpReader.cpp
│ ├── HttpReader.h
│ ├── NetStats.h
│ ├── Socks5.cpp
│ ├── Socks5.h
│ ├── SslCtx.cpp
│ ├── SslCtx.h
│ ├── SslStream.cpp
│ ├── SslStream.h
│ ├── TcpListener.cpp
│ ├── TcpListener.h
│ ├── TransparentProxy.cpp
│ ├── TransparentProxy.h
│ ├── Wget.cpp
│ └── Wget.h
├── tdtl/
│ ├── CMakeLists.txt
│ └── td/
│ └── tl/
│ ├── tl_config.cpp
│ ├── tl_config.h
│ ├── tl_core.cpp
│ ├── tl_core.h
│ ├── tl_file_outputer.cpp
│ ├── tl_file_outputer.h
│ ├── tl_file_utils.cpp
│ ├── tl_file_utils.h
│ ├── tl_generate.cpp
│ ├── tl_generate.h
│ ├── tl_outputer.cpp
│ ├── tl_outputer.h
│ ├── tl_simple.h
│ ├── tl_simple_parser.h
│ ├── tl_string_outputer.cpp
│ ├── tl_string_outputer.h
│ ├── tl_writer.cpp
│ └── tl_writer.h
├── tdutils/
│ ├── CMakeLists.txt
│ ├── generate/
│ │ ├── CMakeLists.txt
│ │ ├── generate_mime_types_gperf.cpp
│ │ └── mime_types.txt
│ ├── td/
│ │ └── utils/
│ │ ├── AesCtrByteFlow.h
│ │ ├── AsyncFileLog.cpp
│ │ ├── AsyncFileLog.h
│ │ ├── AtomicRead.h
│ │ ├── BigNum.cpp
│ │ ├── BigNum.h
│ │ ├── BufferedFd.h
│ │ ├── BufferedReader.h
│ │ ├── BufferedUdp.cpp
│ │ ├── BufferedUdp.h
│ │ ├── ByteFlow.h
│ │ ├── CancellationToken.h
│ │ ├── ChainScheduler.h
│ │ ├── ChangesProcessor.h
│ │ ├── Closure.h
│ │ ├── CombinedLog.h
│ │ ├── ConcurrentHashTable.h
│ │ ├── Container.h
│ │ ├── Context.h
│ │ ├── DecTree.h
│ │ ├── Destructor.h
│ │ ├── Ed25519.cpp
│ │ ├── Ed25519.h
│ │ ├── Enumerator.h
│ │ ├── EpochBasedMemoryReclamation.h
│ │ ├── ExitGuard.cpp
│ │ ├── ExitGuard.h
│ │ ├── FileLog.cpp
│ │ ├── FileLog.h
│ │ ├── FlatHashMap.h
│ │ ├── FlatHashMapChunks.h
│ │ ├── FlatHashSet.h
│ │ ├── FlatHashTable.cpp
│ │ ├── FlatHashTable.h
│ │ ├── FloodControlFast.h
│ │ ├── FloodControlGlobal.cpp
│ │ ├── FloodControlGlobal.h
│ │ ├── FloodControlStrict.h
│ │ ├── Gzip.cpp
│ │ ├── Gzip.h
│ │ ├── GzipByteFlow.cpp
│ │ ├── GzipByteFlow.h
│ │ ├── Hash.h
│ │ ├── HashMap.h
│ │ ├── HashSet.h
│ │ ├── HashTableUtils.h
│ │ ├── HazardPointers.h
│ │ ├── Heap.h
│ │ ├── Hints.cpp
│ │ ├── Hints.h
│ │ ├── HttpDate.cpp
│ │ ├── HttpDate.h
│ │ ├── HttpUrl.cpp
│ │ ├── HttpUrl.h
│ │ ├── JsonBuilder.cpp
│ │ ├── JsonBuilder.h
│ │ ├── List.h
│ │ ├── MapNode.h
│ │ ├── MemoryLog.h
│ │ ├── MimeType.cpp
│ │ ├── MimeType.h
│ │ ├── MovableValue.h
│ │ ├── MpmcQueue.cpp
│ │ ├── MpmcQueue.h
│ │ ├── MpmcWaiter.h
│ │ ├── MpscLinkQueue.h
│ │ ├── MpscPollableQueue.h
│ │ ├── Named.h
│ │ ├── NullLog.h
│ │ ├── ObjectPool.h
│ │ ├── Observer.h
│ │ ├── OptionParser.cpp
│ │ ├── OptionParser.h
│ │ ├── OrderedEventsProcessor.h
│ │ ├── Parser.h
│ │ ├── PathView.cpp
│ │ ├── PathView.h
│ │ ├── Promise.h
│ │ ├── Random.cpp
│ │ ├── Random.h
│ │ ├── ScopeGuard.h
│ │ ├── SetNode.h
│ │ ├── SharedObjectPool.h
│ │ ├── SharedSlice.cpp
│ │ ├── SharedSlice.h
│ │ ├── Slice-decl.h
│ │ ├── Slice.cpp
│ │ ├── Slice.h
│ │ ├── SliceBuilder.h
│ │ ├── Span.h
│ │ ├── SpinLock.h
│ │ ├── StackAllocator.cpp
│ │ ├── StackAllocator.h
│ │ ├── Status.cpp
│ │ ├── Status.h
│ │ ├── StealingQueue.h
│ │ ├── Storer.h
│ │ ├── StorerBase.h
│ │ ├── StringBuilder.cpp
│ │ ├── StringBuilder.h
│ │ ├── ThreadLocalStorage.h
│ │ ├── ThreadSafeCounter.h
│ │ ├── Time.cpp
│ │ ├── Time.h
│ │ ├── TimedStat.h
│ │ ├── Timer.cpp
│ │ ├── Timer.h
│ │ ├── TlDowncastHelper.h
│ │ ├── TlStorerToString.h
│ │ ├── TsCerr.cpp
│ │ ├── TsCerr.h
│ │ ├── TsFileLog.cpp
│ │ ├── TsFileLog.h
│ │ ├── TsList.h
│ │ ├── TsLog.cpp
│ │ ├── TsLog.h
│ │ ├── UInt.h
│ │ ├── Variant.h
│ │ ├── VectorQueue.h
│ │ ├── WaitFreeHashMap.h
│ │ ├── WaitFreeHashSet.h
│ │ ├── WaitFreeVector.h
│ │ ├── algorithm.h
│ │ ├── as.h
│ │ ├── base64.cpp
│ │ ├── base64.h
│ │ ├── benchmark.h
│ │ ├── bits.h
│ │ ├── buffer.cpp
│ │ ├── buffer.h
│ │ ├── check.cpp
│ │ ├── check.h
│ │ ├── common.h
│ │ ├── config.h.in
│ │ ├── crypto.cpp
│ │ ├── crypto.h
│ │ ├── emoji.cpp
│ │ ├── emoji.h
│ │ ├── filesystem.cpp
│ │ ├── filesystem.h
│ │ ├── find_boundary.cpp
│ │ ├── find_boundary.h
│ │ ├── fixed_vector.h
│ │ ├── format.h
│ │ ├── int_types.h
│ │ ├── invoke.h
│ │ ├── logging.cpp
│ │ ├── logging.h
│ │ ├── misc.cpp
│ │ ├── misc.h
│ │ ├── optional.h
│ │ ├── overloaded.h
│ │ ├── port/
│ │ │ ├── Clocks.cpp
│ │ │ ├── Clocks.h
│ │ │ ├── CxCli.h
│ │ │ ├── EventFd.h
│ │ │ ├── EventFdBase.h
│ │ │ ├── FileFd.cpp
│ │ │ ├── FileFd.h
│ │ │ ├── FromApp.h
│ │ │ ├── IPAddress.cpp
│ │ │ ├── IPAddress.h
│ │ │ ├── IoSlice.h
│ │ │ ├── MemoryMapping.cpp
│ │ │ ├── MemoryMapping.h
│ │ │ ├── Mutex.h
│ │ │ ├── Poll.h
│ │ │ ├── PollBase.h
│ │ │ ├── PollFlags.cpp
│ │ │ ├── PollFlags.h
│ │ │ ├── RwMutex.h
│ │ │ ├── ServerSocketFd.cpp
│ │ │ ├── ServerSocketFd.h
│ │ │ ├── SocketFd.cpp
│ │ │ ├── SocketFd.h
│ │ │ ├── Stat.cpp
│ │ │ ├── Stat.h
│ │ │ ├── StdStreams.cpp
│ │ │ ├── StdStreams.h
│ │ │ ├── UdpSocketFd.cpp
│ │ │ ├── UdpSocketFd.h
│ │ │ ├── config.h
│ │ │ ├── detail/
│ │ │ │ ├── Epoll.cpp
│ │ │ │ ├── Epoll.h
│ │ │ │ ├── EventFdBsd.cpp
│ │ │ │ ├── EventFdBsd.h
│ │ │ │ ├── EventFdLinux.cpp
│ │ │ │ ├── EventFdLinux.h
│ │ │ │ ├── EventFdWindows.cpp
│ │ │ │ ├── EventFdWindows.h
│ │ │ │ ├── Iocp.cpp
│ │ │ │ ├── Iocp.h
│ │ │ │ ├── KQueue.cpp
│ │ │ │ ├── KQueue.h
│ │ │ │ ├── NativeFd.cpp
│ │ │ │ ├── NativeFd.h
│ │ │ │ ├── Poll.cpp
│ │ │ │ ├── Poll.h
│ │ │ │ ├── PollableFd.h
│ │ │ │ ├── Select.cpp
│ │ │ │ ├── Select.h
│ │ │ │ ├── ThreadIdGuard.cpp
│ │ │ │ ├── ThreadIdGuard.h
│ │ │ │ ├── ThreadPthread.cpp
│ │ │ │ ├── ThreadPthread.h
│ │ │ │ ├── ThreadStl.h
│ │ │ │ ├── WineventPoll.cpp
│ │ │ │ ├── WineventPoll.h
│ │ │ │ └── skip_eintr.h
│ │ │ ├── path.cpp
│ │ │ ├── path.h
│ │ │ ├── platform.cpp
│ │ │ ├── platform.h
│ │ │ ├── rlimit.cpp
│ │ │ ├── rlimit.h
│ │ │ ├── signals.cpp
│ │ │ ├── signals.h
│ │ │ ├── sleep.cpp
│ │ │ ├── sleep.h
│ │ │ ├── stacktrace.cpp
│ │ │ ├── stacktrace.h
│ │ │ ├── thread.h
│ │ │ ├── thread_local.cpp
│ │ │ ├── thread_local.h
│ │ │ ├── uname.cpp
│ │ │ ├── uname.h
│ │ │ ├── user.cpp
│ │ │ ├── user.h
│ │ │ ├── wstring_convert.cpp
│ │ │ └── wstring_convert.h
│ │ ├── queue.h
│ │ ├── simple_tests.h
│ │ ├── tests.cpp
│ │ ├── tests.h
│ │ ├── tl_helpers.h
│ │ ├── tl_parsers.cpp
│ │ ├── tl_parsers.h
│ │ ├── tl_storers.h
│ │ ├── translit.cpp
│ │ ├── translit.h
│ │ ├── type_traits.h
│ │ ├── uint128.h
│ │ ├── unicode.cpp
│ │ ├── unicode.h
│ │ ├── unique_ptr.h
│ │ ├── unique_value_ptr.h
│ │ ├── utf8.cpp
│ │ └── utf8.h
│ └── test/
│ ├── ChainScheduler.cpp
│ ├── ConcurrentHashMap.cpp
│ ├── Enumerator.cpp
│ ├── EpochBasedMemoryReclamation.cpp
│ ├── HashSet.cpp
│ ├── HazardPointers.cpp
│ ├── HttpUrl.cpp
│ ├── List.cpp
│ ├── MpmcQueue.cpp
│ ├── MpmcWaiter.cpp
│ ├── MpscLinkQueue.cpp
│ ├── OptionParser.cpp
│ ├── OrderedEventsProcessor.cpp
│ ├── SharedObjectPool.cpp
│ ├── SharedSlice.cpp
│ ├── StealingQueue.cpp
│ ├── WaitFreeHashMap.cpp
│ ├── WaitFreeHashSet.cpp
│ ├── WaitFreeVector.cpp
│ ├── bitmask.cpp
│ ├── buffer.cpp
│ ├── crypto.cpp
│ ├── emoji.cpp
│ ├── filesystem.cpp
│ ├── gzip.cpp
│ ├── hashset_benchmark.cpp
│ ├── heap.cpp
│ ├── json.cpp
│ ├── log.cpp
│ ├── misc.cpp
│ ├── port.cpp
│ ├── pq.cpp
│ └── variant.cpp
├── test/
│ ├── CMakeLists.txt
│ ├── country_info.cpp
│ ├── crypto.cpp
│ ├── data.cpp
│ ├── data.h
│ ├── db.cpp
│ ├── fuzz_url.cpp
│ ├── http.cpp
│ ├── link.cpp
│ ├── main.cpp
│ ├── message_entities.cpp
│ ├── mtproto.cpp
│ ├── online.cpp
│ ├── poll.cpp
│ ├── query_merger.cpp
│ ├── secret.cpp
│ ├── secure_storage.cpp
│ ├── set_with_position.cpp
│ ├── string_cleaning.cpp
│ ├── tdclient.cpp
│ └── tqueue.cpp
└── update_version.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: None # All
AllowShortIfStatementsOnASingleLine: Never # WithoutElse
AllowShortLambdasOnASingleLine: Inline # All
AllowShortLoopsOnASingleLine: false # true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros:
# - __capability
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterExternBlock: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAfterAttributes: Never
# BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeConceptDeclarations: Always
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma # BeforeColon
BreakInheritanceList: BeforeComma # BeforeColon
BreakStringLiterals: true
ColumnLimit: 120 # 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- Q_FOREACH_THIS_LIST_MUST_BE_NON_EMPTY
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 0
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 2
IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: false
# InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
Decimal: 0
Hex: 0
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
# ObjCBinPackProtocolList: Never
# ObjCBlockIndentWidth: 2
# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: NextLine
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right # Left
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: false # true
RemoveBracesLLVM: false
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 0 # 1
SortIncludes: CaseInsensitive # CaseSensitive
# SortJavaStaticImport: Before
SortUsingDeclarations: Lexicographic # LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: 1 # -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 100 # 8
UseTab: Never
...
================================================
FILE: .gitattributes
================================================
* text=auto
*.cpp text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.hpp text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.h text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.c text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.tl text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.mm text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.txt text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.sh text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent eol=lf
*.php text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.ps1 text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent eol=crlf
*.cmake text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.md text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.in text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.html text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.java text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.py text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.js text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.patch text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.swift text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.pbxproj text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.cs text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.xaml text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.appxmanifest text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.vsixmanifest text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.nuspec text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.targets text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.json text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.csproj text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.sln text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.xml text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
*.config text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
sqlite/sqlite/* linguist-vendored
*.pfx binary
*.png binary
================================================
FILE: .gitignore
================================================
**/*build*/
**/.*.swp
**/.DS_Store
**/auto/
docs/
/tdlib/
vcpkg/
.clang-tidy
================================================
FILE: CHANGELOG.md
================================================
Changes in 1.8.0 (29 Dec 2021):
* Changed the type of user, basic group and supergroup identifiers from `int32` to `int53`.
* Simplified chat list loading and removed the ability to misuse the method `getChats`:
- Renamed the method `getChats` to `loadChats`.
- Removed the parameters `offset_order` and `offset_chat_id` from the method `loadChats`. Chats are now always loaded
from the last known chat in the list.
- Changed the type of the result in the method `loadChats` to `ok`. If no chats were loaded, a 404 error is returned.
The order of chats in the list must be maintained using the updates `updateChatPosition`, `updateChatLastMessage`,
and `updateChatDraftMessage`.
- Added the convenience method `getChats`, which returns the requested number of chats from the beginning of a chat
list and can be used if the list of chats doesn't need to be maintained in a consistent state.
* Added the ability to hook TDLib log messages:
- Added the function `td_set_log_message_callback` to JSON interface.
- Added the function `set_log_message_callback` to the class `ClientManager`.
- Added the function `SetLogMessageCallback` to the UWP native wrapper through C++/CX.
- Deprecated the function `td_set_log_fatal_error_callback` in JSON interface in favor of
the function `td_set_log_message_callback`.
- Deprecated the function `Log::set_fatal_error_callback` in favor of
the function `ClientManager::set_log_message_callback`.
* Added support for sending messages on behalf of public channels owned by the user:
- Added the field `message_sender_id` to the class `chat`, containing the identifier of the currently selected
message sender.
- Added the update `updateChatMessageSender`.
- Added the method `getChatAvailableMessageSenders`, returning the list of available message senders for the chat.
- Added the method `setChatMessageSender`, changing the currently selected message sender.
- Added the field `need_another_sender` to the class `messageSendingStateFailed`. If it is true, an alert needs
to be shown to the user that the message will be re-sent on behalf of another sender.
- Replaced the method `deleteChatMessagesFromUser` with the method `deleteChatMessagesBySender`, expecting
a `MessageSender` instead of a user identifier.
- Replaced the update `updateUserChatAction` with the update `updateChatAction`, containing a `MessageSender`
instead of a user identifier as a source of the chat action.
* Added the ability to ban supergroups and channels in other supergroups and channels:
- Replaced the fields `user_id` with the fields `member_id` in the classes `chatMember` and
`chatEventMemberRestricted`.
- Replaced the parameters `user_id` with the parameters `member_id` in the methods `setChatMemberStatus` and
`getChatMember`.
* Improved support for animated emoji:
- Added the class `animatedEmoji`, containing information about an animated emoji.
- Added the class `messageAnimatedEmoji` to the types of message content.
- Added the method `clickAnimatedEmojiMessage` to be called when an animated emoji is clicked.
- Added the update `updateAnimatedEmojiMessageClicked`, received when a big animated sticker must be played.
- Added the class `chatActionWatchingAnimations` to the types of chat action.
- Added the method `getAnimatedEmoji`, returning an animated emoji corresponding to a given emoji.
- Added the writable option "disable_animated_emoji".
- Removed the option "animated_emoji_sticker_set_name".
* Added support for automatic message deletion in all chat types:
- Added the field `message_ttl` to the class `chat`.
- Added the update `updateChatMessageTtl`.
- Added the method `setChatMessageTtl`.
- Added the class `chatEventMessageTtlChanged`, representing change of the field `message_ttl` in the chat event log.
- Removed the field `ttl` from the class `secretChat` in favor of the field `message_ttl` in the class `chat`.
- Removed the method `sendChatSetTtlMessage` in favor of the method `setChatMessageTtl`.
* Improved names of the fields of the type `MessageSender`:
- Renamed the fields `sender` to `sender_id` in the classes `message` and `notificationTypeNewPushMessage`.
- Renamed the parameter `sender` to `sender_id` in the methods `searchChatMessages`, `addLocalMessage`, and
`toggleMessageSenderIsBlocked`.
- Renamed the field `recent_repliers` to `recent_replier_ids` in the class `messageReplyInfo`.
- Renamed the field `traveler` to `traveler_id` in the class `messageProximityAlertTriggered`.
- Renamed the field `watcher` to `watcher_id` in the class `messageProximityAlertTriggered`.
* The field `formatted_phone_number` in the class `phoneNumberInfo` now contains the character '-' at the places of
expected digits.
* Added the synchronous method `getPhoneNumberInfoSync` that can be used instead of the method `getPhoneNumberInfo`
to synchronously receive information about a phone number by its prefix.
* Replaced the field `user_id` in the class `chatEvent` with the field `member_id` of the type `MessageSender`.
* Improved support for bot payments:
- Allowed sending invoices as results of inline queries by allowing bots to use the class `inputMessageInvoice` as
the value of the field `input_message_content` in the classes `inputInlineQueryResultAnimation`,
`inputInlineQueryResultArticle`, `inputInlineQueryResultAudio`, `inputInlineQueryResultContact`,
`inputInlineQueryResultDocument`, `inputInlineQueryResultLocation`, `inputInlineQueryResultPhoto`,
`inputInlineQueryResultSticker`, `inputInlineQueryResultVenue`, `inputInlineQueryResultVideo`, and
`inputInlineQueryResultVoiceNote`.
- Allowed sending invoice messages to basic group, supergroup and channel chats.
- Allowed bots to send forwardable invoices by specifying an empty field `start_parameter` in
the class `inputMessageInvoice`.
- Added the field `invoice_chat_id` to the class `messagePaymentSuccessful`.
- Added the field `id` to the class `paymentForm`, containing a unique payment form identifier.
- Added the parameter `payment_form_id` to the method `sendPaymentForm`.
- Added the field `seller_bot_user_id` to the class `paymentForm`, containing the user identifier of the seller bot.
- Added the field `payments_provider_user_id` to the class `paymentForm`, containing the user identifier of
the payment provider bot.
- Added the fields `title`, `description`, `photo`, and `seller_bot_user_id` to the class `paymentReceipt`.
- Added the fields `max_tip_amount` and `suggested_tip_amounts` to the class `invoice`.
- Added the parameter `tip_amount` to the method `sendPaymentForm`.
- Added the field `tip_amount` to the class `paymentReceipt`.
- Renamed the class `inputCredentialsAndroidPay` to `inputCredentialsGooglePay`.
- Added the class `paymentFormTheme`, containing the desired colors for a payment form.
- Added the parameter `theme` to the method `getPaymentForm`.
- Removed the field `invoice_message_id` from the class `messagePaymentSuccessfulBot`.
* Added the method `deleteChat`, which can be used to completely delete a chat along with all messages.
* Removed the method `deleteSupergroup` in favor of the method `deleteChat`.
* Changed the type of the result in the method `getProxyLink` to the class `httpUrl` instead of the class `text`.
* Removed support for secret chat layers before 73.
* Added support for sponsored messages:
- Added the class `sponsoredMessage`.
- Added the method `getChatSponsoredMessage`.
- Added the ability to pass identifiers of sponsored messages to `viewMessages`. The method must be called when
the entire text of the sponsored message is shown on the screen (excluding the button).
* Added support for video chats:
- Added the class `groupCall`, representing a group call.
- Added the method `getGroupCall` for fetching information about a group call.
- Added the update `updateGroupCall`.
- Added the class `videoChat`, representing a video chat, i.e. group call bound to a chat.
- Added the field `video_chat` to the class `chat`.
- Added the update `updateChatVideoChat`.
- Added the classes `messageVideoChatScheduled`, `messageVideoChatStarted`, and `messageVideoChatEnded` to
the types of message content.
- Added the class `messageInviteVideoChatParticipants` to the types of message content.
- Added the field `can_manage_video_chats` to the class `chatMemberStatusAdministrator`.
- Added the class `groupCallId`.
- Added the method `createVideoChat` for video chat creation.
- Added the method `startScheduledGroupCall`.
- Added the method `toggleGroupCallEnabledStartNotification`.
- Added the method `joinGroupCall`.
- Added the method `leaveGroupCall`.
- Added the method `endGroupCall`.
- Added the method `toggleGroupCallIsMyVideoEnabled`.
- Added the method `toggleGroupCallIsMyVideoPaused`.
- Added the methods `startGroupCallScreenSharing`, `toggleGroupCallScreenSharingIsPaused`,
`endGroupCallScreenSharing` for managing screen sharing during group calls.
- Added the method `setGroupCallTitle`.
- Added the method `toggleGroupCallMuteNewParticipants`.
- Added the classes `groupCallVideoSourceGroup` and `groupCallParticipantVideoInfo`, describing available
video streams.
- Added the class `groupCallParticipant`.
- Added the update `updateGroupCallParticipant`.
- Added the method `loadGroupCallParticipants`.
- Added the method `toggleGroupCallParticipantIsHandRaised`.
- Added the method `setGroupCallParticipantIsSpeaking`.
- Added the methods `toggleGroupCallParticipantIsMuted` and `setGroupCallParticipantVolumeLevel` for managing
the volume level of group call participants.
- Added the method `inviteGroupCallParticipants`.
- Added the method `getGroupCallInviteLink` and `revokeGroupCallInviteLink` for managing group call invite links.
- Added the methods `startGroupCallRecording` and `endGroupCallRecording` for managing group call recordings.
- Added the method `getVideoChatAvailableParticipants`, returning the list of participants, on whose behalf
a video chat in the chat can be joined.
- Added the method `setVideoChatDefaultParticipant` for changing the default participant on whose behalf a video chat
will be joined.
- Added the class `GroupCallVideoQuality` and the method `getGroupCallStreamSegment` for downloading segments of
live streams.
- Added the class `groupCallRecentSpeaker`, representing a group call participant that was recently speaking.
- Added the field `video_chat_changes` to the class `chatEventLogFilters`.
- Added the class `chatEventVideoChatCreated`, representing a video chat being created in the chat event log.
- Added the class `chatEventVideoChatEnded`, representing a video chat being ended in the chat event log.
- Added the class `chatEventVideoChatMuteNewParticipantsToggled`, representing changes of
the setting `mute_new_participants` of a video chat in the chat event log.
- Added the class `chatEventVideoChatParticipantIsMutedToggled`, representing a video chat participant being muted or
unmuted in the chat event log.
- Added the class `chatEventVideoChatParticipantVolumeLevelChanged`, representing a video chat participant's
volume level being changed in the chat event log.
* Added "; pass null" documentation for all TDLib method parameters, for which null is an expected value.
* Added support for link processing:
- Added the method `getInternalLinkType`, which can parse internal links and return the exact link type and actions
to be done when the link is clicked.
- Added the classes `internalLinkTypeActiveSessions`, `internalLinkTypeAuthenticationCode`,
`internalLinkTypeBackground`, `internalLinkTypeBotStart`, `internalLinkTypeBotStartInGroup`,
`internalLinkTypeChangePhoneNumber`, `internalLinkTypeChatInvite`, `internalLinkTypeFilterSettings`,
`internalLinkTypeGame`, `internalLinkTypeLanguagePack`, `internalLinkTypeMessage`, `internalLinkTypeMessageDraft`,
`internalLinkTypePassportDataRequest`, `internalLinkTypePhoneNumberConfirmation`, `internalLinkTypeProxy`,
`internalLinkTypePublicChat`, `internalLinkTypeQrCodeAuthentication`, `internalLinkTypeSettings`,
`internalLinkTypeStickerSet`, `internalLinkTypeTheme`, `internalLinkTypeThemeSettings`,
`internalLinkTypeUnknownDeepLink`, `internalLinkTypeUnsupportedProxy`, and `internalLinkTypeVideoChat` to represent
different types of internal links.
- Added the method `getExternalLinkInfo`, which needs to be called if the clicked link wasn't recognized as
an internal link.
- Added the method `getExternalLink`, which needs to be called after the method `getExternalLinkInfo` if the user
confirms automatic authorization on the website.
* Added support for expiring chat invite links:
- Added the field `is_primary` to the class `chatInviteLink`. The primary invite link can't have a name,
expiration date, or usage limit. There is exactly one primary invite link for each administrator with
the can_invite_users right at any given time.
- Added the field `name` to the class `chatInviteLink`.
- Added the field `creator_user_id` to the class `chatInviteLink`.
- Added the field `date` to the class `chatInviteLink`, containing the link creation date.
- Added the field `edit_date` to the class `chatInviteLink`, containing the date the link was last edited.
- Added the fields `expiration_date` and `member_limit` to the class `chatInviteLink`, limiting link usage.
- Added the field `member_count` to the class `chatInviteLink`.
- Added the field `is_revoked` to the class `chatInviteLink`.
- Changed the type of the fields `invite_link` in the classes `basicGroupFullInfo` and `supergroupFullInfo` to
`chatInviteLink`.
- Added the field `description` to the class `chatInviteLinkInfo`, containing the description of the chat.
- Replaced the method `generateChatInviteLink` with the method `replacePrimaryChatInviteLink`.
- Added the method `createChatInviteLink` for creating new invite links.
- Added the method `editChatInviteLink` for editing non-primary invite links.
- Added the method `revokeChatInviteLink`.
- Added the method `deleteRevokedChatInviteLink`.
- Added the method `deleteAllRevokedChatInviteLink`.
- Added the method `getChatInviteLink`.
- Added the class `chatInviteLinks`, containing a list of chat invite links.
- Added the method `getChatInviteLinks`.
- Added the classes `chatInviteLinkCount` and `chatInviteLinkCounts`.
- Added the method `getChatInviteLinkCounts`, returning the number of invite links created by chat administrators.
- Added the classes `chatInviteLinkMember` and `chatInviteLinkMembers`.
- Added the method `getChatInviteLinkMembers`.
- Added the field `invite_link_changes` to the class `chatEventLogFilters`.
- Added the class `chatEventMemberJoinedByInviteLink`, representing a user joining the chat via invite link in
the chat event log.
- Added the class `chatEventInviteLinkEdited` to the types of chat event.
- Added the class `chatEventInviteLinkRevoked` to the types of chat event.
- Added the class `chatEventInviteLinkDeleted` to the types of chat event.
- Added the class `chatActionBarInviteMembers` to the types of chat action bar.
* Added support for chat invite links that create join requests:
- Added the class `messageChatJoinByRequest` to the types of message content.
- Added the class `pushMessageContentChatJoinByRequest` to the types of push message content.
- Added the field `pending_join_requests` to the class `chat`.
- Added the class `chatJoinRequestsInfo`, containing basic information about pending join requests for the chat.
- Added the update `updateChatPendingJoinRequests`.
- Added the fields `creates_join_request` to the classes `chatInviteLink` and `chatInviteLinkInfo`.
- Added the field `pending_join_request_count` to the class `chatInviteLink`.
- Added the class `chatJoinRequest`, describing a user that sent a join request.
- Added the class `chatJoinRequests`, containing a list of requests to join the chat.
- Added the method `getChatJoinRequests`.
- Added the method `processChatJoinRequest` for processing a request to join the chat.
- Added the method `processChatJoinRequests` for processing all requests to join the chat.
- Added the class `chatActionBarJoinRequest` to the types of chat action bar.
- Added the class `chatEventMemberJoinedByRequest`, representing a user approved to join the chat after
a join request in the chat event log.
- Added the update `updateNewChatJoinRequest` for bots.
* Added the ability to see viewers of outgoing messages in small group chats:
- Added the method `getMessageViewers`.
- Added the field `can_get_viewers` to the class `message`.
* Added the parameter `only_preview` to the method `forwardMessages`, which can be used to receive a preview of
forwarded messages.
* Added the method `getRecentlyOpenedChats`, returning the list of recently opened chats.
* Increased number of recently found chats that are stored to 50.
* Added the ability to get information about chat messages, which are split by days:
- Added the class `messageCalendarDay`, representing found messages, sent on a specific day.
- Added the class `messageCalendar`, representing found messages, split by days.
- Added the writable option "utc_time_offset", which contains a UTC time offset used for splitting messages by days.
The option is reset automatically on each TDLib instance launch, so it needs to be set manually only if
the time offset is changed during execution.
- Added the method `getChatMessageCalendar`, returning information about chat messages, which are split by days.
* Added the ability to get messages of the specified type in sparse positions for hyper-speed scrolling implementation:
- Added the class `messagePosition`, containing an identifier and send date of a message in
a specific chat history position.
- Added the class `messagePositions`, containing a list of message positions.
- Added the method `getChatSparseMessagePositions`.
* Added the field `can_manage_chat` to the class `chatMemberStatusAdministrator` to allow promoting chat administrators
without additional rights.
* Improved support for bot commands:
- Bot command entities in chats without bots are now automatically hidden.
- Added the class `botCommands`, representing a list of bot commands.
- Added the field `commands` to the class `userFullInfo`, containing the list of commands to be used in
the private chat with the bot.
- Added the fields `bot_commands` to the classes `basicGroupFullInfo` and `supergroupFullInfo`.
- Removed the class `botInfo`.
- Removed the fields `bot_info` from the classes `userFullInfo` and `chatMember`.
- Added the class `BotCommandScope`.
- Added the methods `setCommands`, `deleteCommands`, `getCommands` for bots.
* Added the read-only options "suggested_video_note_length", "suggested_video_note_video_bitrate", and
"suggested_video_note_audio_bitrate", containing suggested video note encoding parameters.
* Added the read-only option "channel_bot_user_id", containing the identifier of the bot which is shown in
outdated clients as the sender of messages sent on behalf of channels.
* Added the ability to fetch the actual value of the option "is_location_visible" using the method `getOption` in case
the value of the option was changed from another device.
* Added the field `minithumbnail` to the class `profilePhoto`, representing a profile photo minithumbnail.
* Added the field `minithumbnail` to the class `chatPhotoInfo`, representing a chat photo minithumbnail.
* Added support for sticker outlines:
- Added the field `outline` to the class `sticker`.
- Added the fields `thumbnail_outline` to the classes `stickerSet` and `stickerSetInfo`.
- Added the class `closedVectorPath`, representing a closed vector path.
- Added the class `VectorPathCommand`, representing one edge of a closed vector path.
- Added the class `point`, representing a point on a Cartesian plane.
* Added support for chats and messages with protected content:
- Added the field `has_protected_content` to the class `chat`.
- Added the update `updateChatHasProtectedContent`.
- Added the method `toggleChatHasProtectedContent`.
- Added the class `chatEventHasProtectedContentToggled`, representing a change of the setting `has_protected_content`
in the chat event log.
- Added the field `can_be_saved` to the class `message`.
* Added support for broadcast groups, i.e. supergroups without a limit on the number of members in which
only administrators can send messages:
- Added the field `is_broadcast_group` to the class `supergroup`.
- Added the method `toggleSupergroupIsBroadcastGroup`. Conversion of a supergroup to a broadcast group
can't be undone.
- Added the class `suggestedActionConvertToBroadcastGroup`, representing a suggestion to convert a supergroup to
a broadcast group.
* Improved chat reports:
- Added the parameter `text` to the method `reportChat`, allowing to add additional details to all
chat reporting reasons.
- Removed the field `text` from the class `chatReportReasonCustom`.
- Added the method `reportChatPhoto` for reporting chat photos.
* Added support for users and chats reported as fake:
- Added the field `is_fake` to the class `user`.
- Added the field `is_fake` to the class `supergroup`.
- Added the class `chatReportReasonFake` to the types of chat reporting reasons.
* Added the class `inlineKeyboardButtonTypeUser` to the types of inline keyboard buttons.
* Added the field `input_field_placeholder` to the classes `replyMarkupForceReply` and `replyMarkupShowKeyboard`.
* Added support for media timestamp entities in messages:
- Added the class `textEntityTypeMediaTimestamp` to the types of text entities.
- Added the field `has_timestamped_media` to the class `message`, describing whether media timestamp entities refer
to the message itself or to the replied message.
- Added the parameter `media_timestamp` to the method `getMessageLink` to support creating message links with
a given media timestamp.
- Added the field `can_get_media_timestamp_links` to the class `message`.
- Added the field `media_timestamp` to the class `messageLinkInfo` for handling of message links with
a specified media timestamp.
* Added the ability to change properties of active sessions:
- Added the field `can_accept_secret_chats` to the class `session`.
- Added the method `toggleSessionCanAcceptSecretChats`.
- Added the field `can_accept_calls` to the class `session`.
- Added the method `toggleSessionCanAcceptCalls`.
- Added the field `inactive_session_ttl_days` to the class `sessions`.
- Added the method `setInactiveSessionTtl`.
* Added new ways for phone number verification:
- Added the class `authenticationCodeTypeMissedCall`, describing an authentication code delivered by
a canceled phone call to the given number. The last digits of the phone number that calls are the code that
must be entered manually by the user.
- Added the field `allow_missed_call` to the class `phoneNumberAuthenticationSettings`.
- Added the read-only option "authentication_token", which can be received when logging out and contains
an authentication token to be used on subsequent authorizations.
- Added the field `authentication_tokens` to the class `phoneNumberAuthenticationSettings`.
* Added support for resetting the password from an active session:
- Added the class `ResetPasswordResult` and the method `resetPassword`.
- Added the method `cancelPasswordReset`, which can be used to cancel a pending password reset.
- Added the field `pending_reset_date` to the class `passwordState`.
* Added the ability to set a new 2-step verification password after recovering a lost password using
a recovery email address:
- Added the parameters `new_password` and `new_hint` to the methods `recoverAuthenticationPassword` and
`recoverPassword`.
- Added the method `checkAuthenticationPasswordRecoveryCode`.
- Added the method `checkPasswordRecoveryCode`.
* Added the class `chatActionChoosingSticker` to the types of chat action.
* Added the class `backgroundFillFreeformGradient` to the types of background fill.
* Added the field `is_inverted` to the class `backgroundTypePattern` for inverted patterns for dark themes.
* Added support for chat themes:
- Added the field `theme_name` to the class `chat`.
- Added the method `setChatTheme`.
- Added the update `updateChatTheme`, received when a theme was changed in a chat.
- Added the class `messageChatSetTheme` to the types of message content.
- Added the class `pushMessageContentChatSetTheme` to the types of push message content.
- Added the class `themeSettings`, representing basic theme settings.
- Added the class `chatTheme`, representing a chat theme.
- Added the update `updateChatThemes`, received when the list of available chat themes changes.
* Added the ability for regular users to create sticker sets:
- Allowed to use the methods `uploadStickerFile` and `createNewStickerSet` as regular users.
- Replaced the parameter `png_sticker` in the method `uploadStickerFile` with the parameter `sticker` of
the type `InputSticker`.
- Added the parameter `source` to the method `createNewStickerSet`.
- Added the method `getSuggestedStickerSetName`.
- Added the class `CheckStickerSetNameResult` and the method `checkStickerSetName` for checking a sticker set name
before creating a sticker set.
* Added support for importing chat history from an external source:
- Added the method `importMessages`.
- Added the method `getMessageImportConfirmationText`.
- Added the class `MessageFileType` and the method `getMessageFileType`, which can be used to check whether
the format of a file with exported message history is supported.
- Added the class `messageForwardOriginMessageImport` to the types of forwarded message origins for
imported messages.
- Added the parameter `for_import` to the method `createNewSupergroupChat`, which needs to be set to true whenever
the chat is created for a subsequent message history import.
* Added new types of suggested actions:
- Added the class `suggestedActionSetPassword`, suggesting the user to set a 2-step verification password to be able
to log in again before the specified number of days pass.
- Added the class `suggestedActionCheckPassword`, suggesting the user to check whether they still remember
their 2-step verification password.
- Added the class `suggestedActionViewChecksHint`, suggesting the user to see a hint about the meaning of
one and two check marks on sent messages.
* Added the method `getSuggestedFileName`, which returns a suggested name for saving a file in a given directory.
* Added the method `deleteAllCallMessages`.
* Added the method `deleteChatMessagesByDate`, which can be used to delete all messages between the specified dates in
a chat.
* Added the field `unread_message_count` to the class `messageThreadInfo`.
* Added the field `has_private_forwards` to the class `userFullInfo`.
* Added the field `description` to the class `userFullInfo`, containing description of the bot.
* Added the field `emoji` to the class `inputMessageSticker`, allowing to specify the emoji that was used to choose
the sent sticker.
* Added the method `banChatMember` that can be used to ban chat members instead of the method `setChatMemberStatus` and
allows to revoke messages from the banned user in basic groups.
* Allowed to use the method `setChatMemberStatus` for adding chat members.
* Removed the parameter `user_id` from the method `reportSupergroupSpam`. Messages from different senders can now
be reported simultaneously.
* Added the field `feedback_link` to the class `webPageInstantView`.
* Added the method `getApplicationDownloadLink`, returning the link for downloading official Telegram applications.
* Removed unusable search message filters `searchMessagesFilterCall` and `searchMessagesFilterMissedCall`.
* Removed the method `getChatStatisticsUrl`.
* Removed the method `getInviteText` in favor of the method `getApplicationDownloadLink`.
* Added the field `chat_type` to the update `updateNewInlineQuery` for bots.
* Added the update `updateChatMember` for bots.
* Improved the appearance of the [TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added support for the illumos operating system.
* Added support for network access on real watchOS devices.
* Added support for OpenSSL 3.0.
* Improved the iOS/watchOS/tvOS build example to generate a universal XCFramework.
* Added support for ARM64 simulators in the iOS/watchOS/tvOS build example.
* Added the option `-release_only` to the build script for Universal Windows Platform, allowing to build
TDLib SDK for Universal Windows Platform in release-only mode.
* Rewritten the native .NET binding using the new `ClientManager` interface:
- Replaced the method `Client.send` with a static method that must be called exactly once in a dedicated thread.
The callbacks `ClientResultHandler` will be called in this thread for all clients.
- Removed the function `Client.Dispose()` from the C++/CLI native binding. The objects of the type `Client`
don't need to be explicitly disposed anymore.
* Rewritten the C binding using the new `ClientManager` interface:
- Renamed the fields `id` in the structs `TdRequest` and `TdResponse` to `request_id`.
- Added the field `client_id` to the struct `TdResponse`.
- Replaced the method `TdCClientCreate` with the method `TdCClientCreateId`.
- Replaced the parameter `instance` with the parameter `client_id` in the function `TdCClientSend`.
- Added the methods `TdCClientReceive` and `TdCClientExecute`.
- Removed the methods `TdCClientSendCommandSync`, `TdCClientDestroy`, and `TdCClientSetVerbosity`.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.7.0 (28 Nov 2020):
* Added a new simplified JSON interface in which updates and responses to requests from all TDLib instances
are received in the same thread:
- The TDLib instance is identified by the unique `client_id` identifier, which is returned by the method
`td_create_client_id`.
- Use the method `td_send` to send a request to a specified client. The TDLib instance is created on the first
request sent to it.
- Use the method `td_receive` to receive updates and request responses from TDLib. The response will contain
the identifier of the client from which the event was received in the field "@client_id".
- Use the method `td_execute` to synchronously execute suitable TDLib methods.
* Added support for adding chats to more than one chat list:
- Added the class `chatPosition`, describing the position of the chat within a chat list.
- Replaced the fields `chat_list`, `order`, `is_sponsored` and `is_pinned` in the class `chat` with
the field `positions`, containing a list of the chat positions in various chat list.
- Replaced the field `order` with the field `positions` in the updates `updateChatLastMessage` and
`updateChatDraftMessage`.
- Added the update `updateChatPosition`.
- Removed the superfluous updates `updateChatChatList`, `updateChatIsSponsored`, `updateChatOrder` and
`updateChatIsPinned`.
- Added the parameter `chat_list` to the method `toggleChatIsPinned`.
- Added the class `chatLists`, containing a list of chat lists.
- Added the method `getChatListsToAddChat`, returning all chat lists to which a chat can be added.
- Added the method `addChatToList`, which can be used to add a chat to a chat list.
- Remove the method `setChatChatList`.
* Added support for chat filters:
- Added the new chat list type `chatListFilter`.
- Added the classes `chatFilterInfo` and `chatFilter`, describing a filter of user chats.
- Added the update `updateChatFilters`, which is sent when the list of chat filters is changed.
- Added the methods `createChatFilter`, `editChatFilter` and `deleteChatFilter` for managing chat filters.
- Added the method `reorderChatFilters` for changing the order of chat filters.
- Added the method `getChatFilter`, returning full information about a chat filter.
- Added the synchronous method `getChatFilterDefaultIconName`.
- Added the classes `recommendedChatFilter` and `recommendedChatFilters`.
- Added the method `getRecommendedChatFilters`, returning a list of recommended chat filters.
* Added support for messages sent on behalf of chats instead of users:
- Added the class `MessageSender`, representing a user or a chat which sent a message.
- Added the class `MessageSenders`, representing a list of message senders.
- Replaced the field `sender_user_id` with the field `sender` of the type `MessageSender` in the classes `message`
and `notificationTypeNewPushMessage`.
- Added the class `messageForwardOriginChat`, which describe a chat as the original sender of a message.
- Added the ability to search messages sent by a chat by replacing the parameter `sender_user_id` with
the parameter `sender` of the type `MessageSender` in the method `searchChatMessages`.
- Added the ability to specify a chat as a local message sender by replacing the parameter `sender_user_id` with
the parameter `sender` of the type `MessageSender` in the method `addLocalMessage`.
* Added support for video calls:
- Added the class `callServer`, describing a server for relaying call data.
- Added the classes `callServerTypeTelegramReflector` and `callServerTypeWebrtc`, representing different types of
supported call servers.
- Replaced the field `connections` with the field `servers` in the class `callStateReady`.
- Removed the class `callConnection`.
- Added the update `updateNewCallSignalingData`.
- Added the method `sendCallSignalingData`.
- Added the field `supports_video_calls` to the class `userFullInfo`.
- Added the field `is_video` to the class `messageCall`.
- Added the field `is_video` to the class `call`.
- Added the parameter `is_video` to the method `createCall`.
- Added the parameter `is_video` to the method `discardCall`.
- Added two new types of call problems `callProblemDistortedVideo` and `callProblemPixelatedVideo`.
- Added the field `library_versions` to the class `callProtocol`, which must be used to specify all supported
call library versions.
* Added support for multiple pinned messages and the ability to pin messages in private chats:
- Added the ability to pin messages in all private chats.
- Added the ability to pin mutiple messages in all chats.
- Added the field `is_pinned` to the class `message`.
- Added the update `updateMessageIsPinned`.
- Added the parameter `only_for_self` to the method `pinChatMessage`, allowing to pin messages in private chats for
one side only.
- Added the ability to find pinned messages in a chat using the filter `searchMessagesFilterPinned`.
- Added the parameter `message_id` to the method `unpinChatMessage`.
- Added the field `message` to the class `chatEventMessageUnpinned`.
- Added the method `unpinAllChatMessages`, which can be used to simultaneously unpin all pinned messages in a chat.
- Documented that notifications about new pinned messages are always silent in channels and private chats.
- The method `getChatPinnedMessage` now returns the newest pinned message in the chat.
- Removed the field `pinned_message_id` from the class `chat`.
- Removed the update `updateChatPinnedMessage`.
* Improved thumbnail representation and added support for animated MPEG4 thumbnails:
- Added the class `ThumbnailFormat`, representing the various supported thumbnail formats.
- Added the class `thumbnail`, containing information about a thumbnail.
- Changed the type of all thumbnail fields from `photoSize` to `thumbnail`.
- Added support for thumbnails in the format `thumbnailFormatMpeg4` for some animations and videos.
- Replaced the classes `inputInlineQueryResultAnimatedGif` and `inputInlineQueryResultAnimatedMpeg4` with
the generic class `inputInlineQueryResultAnimation`.
- Added support for animated thumbnails in the class `inputInlineQueryResultAnimation`.
- The class `photoSize` is now only used for JPEG images.
* Improved support for user profile photos and chat photos:
- Added the field `photo` to the class `userFullInfo`, containing full information about the user photo.
- Added the field `photo` to the class `basicGroupFullInfo`, containing full information about the group photo.
- Added the field `photo` to the class `supergroupFullInfo`, containing full information about the group photo.
- Renamed the class `chatPhoto` to `chatPhotoInfo`.
- Added the field `has_animation` to the classes `profilePhoto` and `chatPhotoInfo`, which is set to true for
animated chat photos.
- Added the classes `chatPhoto` and `chatPhotos`.
- Added minithumbnail support via the field `minithumbnail` in the class `chatPhoto`.
- Added the class `animatedChatPhoto`.
- Added animated chat photo support via the field `animation` in the class `chatPhoto`.
- Removed the classes `userProfilePhoto` and `userProfilePhotos`.
- Changed the type of the field `photo` in the class `messageChatChangePhoto` to `chatPhoto`.
- Changed the type of the fields `old_photo` and `new_photo` in the class `chatEventPhotoChanged` to `chatPhoto`.
- Changed the return type of the method `getUserProfilePhotos` to `chatPhotos`.
- Added the class `InputChatPhoto`, representing a chat or a profile photo to set.
- Changed the type of the parameter `photo` in the methods `setProfilePhoto` and `setChatPhoto` to
the `InputChatPhoto`.
- Added the ability to explicitly re-use previously set profile photos using the class `inputChatPhotoPrevious`.
- Added the ability to set animated chat photos using the class `inputChatPhotoAnimated`.
* Added support for message threads in supergroups and channel comments:
- Added the field `message_thread_id` to the class `message`.
- Added the class `messageThreadInfo`, containing information about a message thread.
- Added the class `messageReplyInfo`, containing information about replies to a message.
- Added the field `reply_info` to the class `messageInteractionInfo`, containing information about message replies.
- Added the field `can_get_message_thread` to the class `message`.
- Added the method `getMessageThread`, returning information about the message thread to which a message belongs.
- Added the method `getMessageThreadHistory`, returning messages belonging to a message thread.
- Added the parameter `message_thread_id` to the methods `sendMessage`, `sendMessageAlbum` and
`sendInlineQueryResultMessage` for sending messages within a thread.
- Added the parameter `message_thread_id` to the method `searchChatMessages` to search messages within a thread.
- Added the parameter `message_thread_id` to the method `viewMessages`.
- Added the parameter `message_thread_id` to the method `setChatDraftMessage`.
- Added the parameter `message_thread_id` to the method `sendChatAction` to send chat actions to a thread.
- Added the field `message_thread_id` to the update `updateUserChatAction`.
* Improved support for message albums:
- Added support for sending and receiving messages of the types `messageAudio` and `messageDocument` as albums.
- Added automatic grouping into audio or document albums in the method `forwardMessages` if all forwarded or
copied messages are of the same type.
- Removed the parameter `as_album` from the method `forwardMessages`. Forwarded message albums are now determined
automatically.
* Simplified usage of methods generating an HTTP link to a message:
- Added the class `messageLink`, representing an HTTP link to a message.
- Combined the methods `getPublicMessageLink` and `getMessageLink` into the method `getMessageLink`, which
now returns a public link to the message if possible and a private link otherwise. The combined method is
an offline method now.
- Added the parameter `for_comment` to the method `getMessageLink`, which allows to get a message link to the message
that opens it in a thread.
- Removed the class `publicMessageLink`.
- Added the field `for_comment` to the class `messageLinkInfo`.
- Added the separate method `getMessageEmbeddingCode`, returning an HTML code for embedding a message.
* Added the ability to block private messages sent via the @replies bot from chats:
- Added the field `is_blocked` to the class `chat`.
- Added the update `updateChatIsBlocked`.
- Added the method `blockMessageSenderFromReplies`.
- Replaced the methods `blockUser` and `unblockUser` with the method `toggleMessageSenderIsBlocked`.
- Replaced the method `getBlockedUsers` with the method `getBlockedMessageSenders`.
* Added support for incoming messages which are replies to messages in different chats:
- Added the field `reply_in_chat_id` to the class `message`.
- The method `getRepliedMessage` can now return the replied message in a different chat.
* Renamed the class `sendMessageOptions` to `messageSendOptions`.
* Added the new `tdapi` static library, which needs to be additionally linked in when static linking is used.
* Changed the type of the field `value` in the class `optionValueInteger` from `int32` to `int64`.
* Changed the type of the field `description` in the class `webPage` from `string` to `formattedText`.
* Improved Instant View support:
- Added the field `view_count` to the class `webPageInstantView`.
- Added the class `richTextAnchorLink`, containing a link to an anchor on the same page.
- Added the class `richTextReference`, containing a reference to a text on the same page.
- Removed the field `text` from the class `richTextAnchor`.
- Removed the field `url` which is no longer needed from the class `webPageInstantView`.
* Allowed the update `updateServiceNotification` to be sent before authorization is completed.
* Disallowed to pass messages in non-strictly increasing order to the method `forwardMessages`.
* Improved sending copies of messages:
- Added the class `messageCopyOptions` and the field `copy_options` to the class `inputMessageForwarded`.
- Removed the fields `send_copy` and `remove_caption` from the class `inputMessageForwarded`.
- Allowed to replace captions in copied messages using the fields `replace_caption` and `new_caption` in
the class `messageCopyOptions`.
- Allowed to specify `reply_to_message_id` when sending a copy of a message.
- Allowed to specify `reply_markup` when sending a copy of a message.
* Allowed passing multiple input language codes to `searchEmojis` by replacing the parameter `input_language_code` with
the parameter `input_language_codes`.
* Added support for public service announcements:
- Added the class `ChatSource` and the field `source` to the class `chatPosition`.
- Added the new type of chat source `chatSourcePublicServiceAnnouncement`.
- Added the field `public_service_announcement_type` to the class `messageForwardInfo`.
* Added support for previewing of private supergroups and channels by their invite link.
- The field `chat_id` in the class `chatInviteLinkInfo` is now non-zero for private supergroups and channels to which
the temporary read access is granted.
- Added the field `accessible_for` to the class `chatInviteLinkInfo`, containing the amount of time for which
read access to the chat will remain available.
* Improved methods for message search:
- Replaced the field `next_from_search_id` with a string field `next_offset` in the class `foundMessages`.
- Added the field `total_count` to the class `foundMessages`; can be -1 if the total count of matching messages is
unknown.
- Replaced the parameter `from_search_id` with the parameter `offset` in the method `searchSecretMessages`.
- Added the parameter `filter` to the method `searchMessages`.
- Added the parameters `min_date` and `max_date` to the method `searchMessages` to search messages sent only within
a particular timeframe.
* Added pkg-config file generation for all installed libraries.
* Added automatic operating system version detection. Use an empty field `system_version` in
the class `tdlibParameters` for the automatic detection.
* Increased maximum file size from 1500 MB to 2000 MB.
* Added support for human-friendly Markdown formatting:
- Added the synchronous method `parseMarkdown` for human-friendly parsing of text entities.
- Added the synchronous method `getMarkdownText` for replacing text entities with a human-friendly
Markdown formatting.
- Added the writable option "always_parse_markdown" which enables automatic parsing of text entities in
all `inputMessageText` objects.
* Added support for dice with random values in messages:
- Added the class `messageDice` to the types of message content; contains a dice.
- Added the class `DiceStickers`, containing animated stickers needed to show the dice.
- Added the class `inputMessageDice` to the types of new input message content; can be used to send a dice.
- Added the update `updateDiceEmojis`, containing information about supported dice emojis.
* Added support for chat statistics in channels and supergroups:
- Added the field `can_get_statistics` to the class `supergroupFullInfo`.
- Added the class `ChatStatistics`, which represents a supergroup or a channel statistics.
- Added the method `getChatStatistics` returning detailed statistics about a chat.
- Added the classes `chatStatisticsMessageInteractionInfo`, `chatStatisticsAdministratorActionsInfo`,
`chatStatisticsMessageSenderInfo` and `chatStatisticsInviterInfo` representing various parts of chat statistics.
- Added the class `statisticalValue` describing recent changes of a statistical value.
- Added the class `StatisticalGraph` describing a statistical graph.
- Added the method `getStatisticalGraph`, which can be used for loading asynchronous or zoomed in statistical graphs.
- Added the class `dateRange` representing a date range for which statistics are available.
- Removed the field `can_view_statistics` from the class `supergroupFullInfo` and marked
the method `getChatStatisticsUrl` as disabled and not working.
* Added support for detailed statistics about interactions with messages:
- Added the class `messageInteractionInfo`, containing information about message views, forwards and replies.
- Added the field `interaction_info` to the class `message`.
- Added the update `updateMessageInteractionInfo`.
- Added the field `can_get_statistics` to the class `message`.
- Added the class `messageStatistics`.
- Added the method `getMessageStatistics`.
- Added the method `getMessagePublicForwards`, returning all forwards of a message to public channels.
- Removed the now superfluous field `views` from the class `message`.
- Removed the now superfluous update `updateMessageViews`.
* Improved support for native polls:
- Added the field `explanation` to the class `pollTypeQuiz`.
- Added the fields `close_date` and `open_period` to the class `poll`.
- Added the fields `close_date` and `open_period` to the class `inputMessagePoll`; for bots only.
- Increased maximum poll question length to 300 characters for bots.
* Added support for anonymous administrators in supergroups:
- Added the field `is_anonymous` to the classes `chatMemberStatusCreator` and `chatMemberStatusAdministrator`.
- The field `author_signature` in the class `message` can now contain a custom title of the anonymous administrator
that sent the message.
* Added support for a new type of inline keyboard buttons, requiring user password entry:
- Added the class `inlineKeyboardButtonTypeCallbackWithPassword`, representing a button requiring password entry from
a user.
- Added the class `callbackQueryPayloadDataWithPassword`, representing new type of callback button payload,
which must be used for the buttons of the type `inlineKeyboardButtonTypeCallbackWithPassword`.
* Added support for making the location of the user public:
- Added the writable option "is_location_visible" to allow other users see location of the current user.
- Added the method `setLocation`, which should be called if `getOption("is_location_visible")` is true and location
changes by more than 1 kilometer.
* Improved Notification API:
- Added the field `sender_name` to the class `notificationTypeNewPushMessage`.
- Added the writable option "disable_sent_scheduled_message_notifications" for disabling notifications about
outgoing scheduled messages that were sent.
- Added the field `is_outgoing` to the class `notificationTypeNewPushMessage` for recognizing
outgoing scheduled messages that were sent.
- Added the fields `has_audios` and `has_documents` to the class `pushMessageContentMediaAlbum`.
* Added the field `date` to the class `draftMessage`.
* Added the update `updateStickerSet`, which is sent after a sticker set is changed.
* Added support for pagination in trending sticker sets:
- Added the parameters `offset` and `limit` to the method `getTrendingStickerSets`.
- Changed the field `sticker_sets` in the update `updateTrendingStickerSets` to contain only the prefix of
trending sticker sets.
* Messages that failed to send can now be found using the filter `searchMessagesFilterFailedToSend`.
* Added the ability to disable automatic server-side file type detection using the new field
`disable_content_type_detection` of the class `inputMessageDocument`.
* Improved chat action bar:
- Added the field `can_unarchive` to the classes `chatActionBarReportSpam` and `chatActionBarReportAddBlock`,
which is true whenever the chat was automatically archived.
- Added the field `distance` to the class `chatActionBarReportAddBlock`,
which denotes the distance between the users.
* Added support for actions suggested to the user by the server:
- Added the class `SuggestedAction`, representing possible actions suggested by the server.
- Added the update `updateSuggestedActions`.
- Added the method `hideSuggestedAction`, which can be used to dismiss a suggested action.
* Supported attaching stickers to animations:
- Added the field `has_stickers` to the class `animation`.
- Added the field `added_sticker_file_ids` to the class `inputMessageAnimation`.
* Added methods for phone number formatting:
- Added the class `countryInfo`, describing a country.
- Added the class `countries`, containing a list of countries.
- Added the method `getCountries`, returning a list of all existing countries.
- Added the class `phonenumberinfo` and the method `getPhoneNumberInfo`, which can be used to format a phone number
according to local rules.
* Improved location support:
- Added the field `horizontal_accuracy` to the class `location`.
- Added the field `heading` to the classes `messageLocation` and `inputMessageLocation` for live locations.
- Added the parameter `heading` to the methods `editMessageLiveLocation` and `editInlineMessageLiveLocation`.
* Added support for proximity alerts in live locations:
- Added the field `proximity_alert_radius` to the classes `messageLocation` and `inputMessageLocation`.
- Added the parameter `proximity_alert_radius` to the methods `editMessageLiveLocation` and
`editInlineMessageLiveLocation`.
- Added the new message content `messageProximityAlertTriggered`, received whenever a proximity alert is triggered.
* Added `CentOS 7` and `CentOS 8` operating systems to the
[TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added the CMake configuration option TD_ENABLE_MULTI_PROCESSOR_COMPILATION, which can be used to enable parallel
build with MSVC.
* Added support for sending and receiving messages in secret chats with silent notifications.
* Added the field `progressive_sizes` to the class `photo` to allow partial progressive JPEG photo download.
* Added the field `redirect_stderr` to the class `logStreamFile` to allow explicit control over stderr redirection to
the log file.
* Added the read-only option "can_archive_and_mute_new_chats_from_unknown_users", which can be used to check, whether
the option "archive_and_mute_new_chats_from_unknown_users" can be changed.
* Added the writable option "archive_and_mute_new_chats_from_unknown_users", which can be used to automatically archive
and mute new chats from non-contacts. The option can be set only if the option
"can_archive_and_mute_new_chats_from_unknown_users" is true.
* Added the writable option "message_unload_delay", which can be used to change the minimum delay before messages are
unloaded from the memory.
* Added the writable option "disable_persistent_network_statistics", which can be used to disable persistent
network usage statistics, significantly reducing disk usage.
* Added the writable option "disable_time_adjustment_protection", which can be used to disable protection from
external time adjustment, significantly reducing disk usage.
* Added the writable option "ignore_default_disable_notification" to allow the application to manually specify the
`disable_notification` option each time when sending messages instead of following the default per-chat settings.
* Added the read-only option "telegram_service_notifications_chat_id", containing the identifier of
the Telegram service notifications chat.
* Added the read-only option "replies_bot_chat_id", containing the identifier of the @replies bot.
* Added the read-only option "group_anonymous_bot_user_id", containing the identifier of the bot which is shown as
the sender of anonymous group messages when viewed from an outdated client.
* Added the new venue provider value "gplaces" for Google Places.
* Added the parameter `return_deleted_file_statistics` to the method `optimizeStorage` to return information about
the files that were deleted instead of the ones that were not.
* Added the ability to search for supergroup members to mention by their name and username:
- Added the new filter `supergroupMembersFilterMention` for the method `getSupergroupMembers`.
- Added the new filter `chatMembersFilterMention` for the method `searchChatMembers`.
* Added support for highlighting bank card numbers:
- Added the new text entity `textEntityTypeBankCardNumber`.
- Added the classes `bankCardInfo` and `bankCardActionOpenUrl`, containing information about a bank card.
- Added the method `getBankCardInfo`, returning information about a bank card.
* Improved methods for managing sticker sets by bots:
- Added the method `setStickerSetThumbnail`.
- Added the ability to create new animated sticker sets and add new stickers to them by adding
the class `inputStickerAnimated`.
- Renamed the class `inputSticker` to `inputStickerStatic`.
- Renamed the field `png_sticker` to `sticker` in the class `inputStickerStatic`.
* Added the method `setCommands` for bots.
* Added the method `getCallbackQueryMessage` for bots.
* Added support for starting bots in private chats through `sendBotStartMessage`.
* Added the field `total_count` to the class `chats`. The field should have a precise value for the responses of
the methods `getChats`, `searchChats` and `getGroupsInCommon`.
* Added the update `updateAnimationSearchParameters`, containing information about animation search parameters.
* Documented that `getRepliedMessage` can be used to get a pinned message, a game message, or an invoice message for
messages of the types `messagePinMessage`, `messageGameScore`, and `messagePaymentSuccessful` respectively.
* Added guarantees that the field `member_count` in the class `supergroup` is known if the supergroup was received from
the methods `searchChatsNearby`, `getInactiveSupergroupChats`, `getSuitableDiscussionChats`, `getGroupsInCommon`, or
`getUserPrivacySettingRules`.
* Updated SQLCipher to 4.4.0.
* Updated dependencies in the prebuilt TDLib for Android:
- Updated SDK to SDK 30.
- Updated NDK to r21d, which dropped support for 32-bit ARM devices without Neon support.
* Updated recommended `emsdk` version for `tdweb` building to the 2.0.6.
* Removed the ability to change the update handler after client creation in native .NET binding, Java example and
prebuilt library for Android.
* Removed the ability to change the default exception handler after client creation in Java example and
prebuilt library for Android.
* Removed the ability to close Client using close() method in Java example and prebuilt library for Android.
Use the method TdApi.close() instead.
* Changed license of source code in prebuilt library for Android to Boost Software License, Version 1.0.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.6.0 (31 Jan 2020):
* Added support for multiple chat lists. Currently, only two chat lists Main and Archive are supported:
- Added the class `ChatList`, which represents a chat list and could be `chatListMain` or `chatListArchive`.
- Added the field `chat_list` to the class `chat`, denoting the chat list to which the chat belongs.
- Added the parameter `chat_list` to the methods `getChats`, `searchMessages` and `setPinnedChats`.
- Added the field `chat_list` to the updates `updateUnreadMessageCount` and `updateUnreadChatCount`.
- Added the field `total_count` to the update `updateUnreadChatCount`, containing the total number of chats in
the list.
- Added the update `updateChatChatList`, which is sent after a chat is moved to or from a chat list.
- Added the method `setChatChatList`, which can be used to move a chat between chat lists.
- Added the option `pinned_archived_chat_count_max` for the maximum number of pinned chats in the Archive chat list.
* Added support for scheduled messages:
- Added the classes `messageSchedulingStateSendAtDate` and `messageSchedulingStateSendWhenOnline`,
representing the scheduling state of a message.
- Added the field `scheduling_state` to the class `message`, which allows to distinguish between scheduled and
ordinary messages.
- The update `updateNewMessage` can now contain a scheduled message and must be handled appropriately.
- The updates `updateMessageContent`, `updateDeleteMessages`, `updateMessageViews`, `updateMessageSendSucceeded`,
`updateMessageSendFailed`, and `updateMessageSendAcknowledged` can now contain identifiers of scheduled messages.
- Added the class `sendMessageOptions`, which contains options for sending messages,
including the scheduling state of the messages.
- Replaced the parameters `disable_notification` and `from_background` in the methods `sendMessage`,
`sendMessageAlbum`, `sendInlineQueryResultMessage`, and `forwardMessages` with the new field `options` of
the type `sendMessageOptions`.
- Added the method `editMessageSchedulingState`, which can be used to reschedule a message or send it immediately.
- Added the method `getChatScheduledMessages`, which returns all scheduled messages in a chat.
- Added the field `has_scheduled_messages` to the class `chat`.
- Added the update `updateChatHasScheduledMessages`, which is sent whenever the field `has_scheduled_messages`
changes in a chat.
- Added support for reminders in Saved Messages and notifications about other sent scheduled messages in
the [Notification API](https://core.telegram.org/tdlib/notification-api/).
* Added support for adding users without a known phone number to the list of contacts:
- Added the method `addContact` for adding or renaming contacts without a known phone number.
- Added the field `need_phone_number_privacy_exception` to the class `userFullInfo`, containing the default value for
the second parameter of the method `addContact`.
- Added the fields `is_contact` and `is_mutual_contact` to the class `user`.
- Removed the class `LinkState` and the fields `outgoing_link` and `incoming_link` from the class `user`.
* Improved support for the top chat action bar:
- Added the class `ChatActionBar`, representing all possible types of the action bar.
- Added the field `action_bar` to the class `chat`.
- Removed the legacy class `chatReportSpamState`.
- Removed the legacy methods `getChatReportSpamState` and `changeChatReportSpamState`.
- Added the update `updateChatActionBar`.
- Added the method `removeChatActionBar`, which allows to dismiss the action bar.
- Added the method `sharePhoneNumber`, allowing to share the phone number of the current user with a mutual contact.
- Added the new reason `chatReportReasonUnrelatedLocation` for reporting location-based groups unrelated to
their stated location.
* Improved support for text entities:
- Added the new types of text entities `textEntityTypeUnderline` and `textEntityTypeStrikethrough`.
- Added support for nested entities. Entities can be nested, but must not mutually intersect with each other.
Pre, Code and PreCode entities can't contain other entities. Bold, Italic, Underline and Strikethrough entities can
contain and be contained in all other entities. All other entities can't contain each other.
- Added the field `version` to the method `textParseModeMarkdown`. Versions 0 and 1 correspond to Bot API Markdown
parse mode, version 2 to Bot API MarkdownV2 parse mode with underline, strikethrough and nested entities support.
- The new entity types and nested entities are supported in secret chats also if its layer is at least 101.
* Added support for native non-anonymous, multiple answer, and quiz-style polls:
- Added support for quiz-style polls, which has exactly one correct answer option and can be answered only once.
- Added support for regular polls, which allows multiple answers.
- Added the classes `pollTypeRegular` and `pollTypeQuiz`, representing the possible types of a poll.
- Added the field `type` to the classes `poll` and `inputMessagePoll`.
- Added support for non-anonymous polls with visible votes by adding the field `is_anonymous` to the classes `poll`
and `inputMessagePoll`.
- Added the method `getPollVoters` returning users that voted for the specified option in a non-anonymous poll.
- Added the new reply markup keyboard button `keyboardButtonTypeRequestPoll`.
- Added the field `is_regular` to the class `pushMessageContentPoll`.
- Added the update `updatePollAnswer` for bots only.
- Added the field `is_closed` to the class `inputMessagePoll`, which can be used by bots to send a closed poll.
* Clarified in the documentation that file remote ID is guaranteed to be usable only if the corresponding file is
still accessible to the user and is known to TDLib. For example, if the file is from a message, then the message
must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with
the file must be preloaded by the client.
* Added support for administrator custom titles:
- Added the field `custom_title` to `chatMemberStatusCreator` and `chatMemberStatusAdministrator` classes.
- Added the classes `chatAdministrator` and `chatAdministrators`, containing user identifiers along with
their custom administrator title and owner status.
- Replaced the result type of the method `getChatAdministrators` with `chatAdministrators`.
* Improved Instant View support:
- Added the new web page block `pageBlockVoiceNote`.
- Changed value of invisible cells in `pageBlockTableCell` to null.
- Added the field `is_cached` to the class `richTextUrl`.
* Improved support for chat backgrounds:
- Added the classes `backgroundFillSolid` for solid color backgrounds and `backgroundFillGradient` for
gradient backgrounds.
- Added support for TGV (gzipped subset of SVG with MIME type "application/x-tgwallpattern") background patterns
in addition to PNG patterns. Background pattern thumbnails are still always in PNG format.
- Replaced the field `color` in the class `backgroundTypePattern` with the field `fill` of type `BackgroundFill`.
- Replaced the class `backgroundTypeSolid` with the class `backgroundTypeFill`.
* Added support for discussion groups for channel chats:
- Added the field `linked_chat_id` to the class `supergroupFullInfo` containing the identifier of a discussion
supergroup for the channel, or a channel, for which the supergroup is the designated discussion supergroup.
- Added the field `has_linked_chat` to the class `supergroup`.
- Added the method `getSuitableDiscussionChats`, which returns a list of chats which can be assigned as
a discussion group for a channel by the current user.
- Added the method `setChatDiscussionGroup`, which can be used to add or remove a discussion group from a channel.
- Added the class `chatEventLinkedChatChanged` representing a change of the linked chat in the chat event log.
* Added support for slow mode in supergroups:
- Added the field `is_slow_mode_enabled` to the class `supergroup`.
- Added the field `slow_mode_delay` to the class `supergroupFullInfo`.
- Added the method `setChatSlowModeDelay`, which can be used to change the slow mode delay setting in a supergroup.
- Added the class `chatEventSlowModeDelayChanged` representing a change of the slow mode delay setting in
the chat event log.
* Improved privacy settings support:
- Added the classes `userPrivacySettingRuleAllowChatMembers` and `userPrivacySettingRuleRestrictChatMembers`
to include or exclude all group members in a privacy setting rule.
- Added the class `userPrivacySettingShowPhoneNumber` for managing the visibility of the user's phone number.
- Added the class `userPrivacySettingAllowFindingByPhoneNumber` for managing whether the user can be found by
their phone number.
* Added the method `checkCreatedPublicChatsLimit` for checking whether the maximum number of owned public chats
has been reached.
* Added support for transferring ownership of supergroup and channel chats:
- Added the method `transferChatOwnership`.
- Added the class `CanTransferOwnershipResult` and the method `canTransferOwnership` for checking
whether chat ownership can be transferred from the current session.
* Added support for location-based supergroups:
- Added the class `chatLocation`, which contains the location to which the supergroup is connected.
- Added the field `has_location` to the class `supergroup`.
- Added the field `location` to the class `supergroupFullInfo`.
- Added the ability to create location-based supergroups via the new field `location` in
the method `createNewSupergroupChat`.
- Added the method `setChatLocation`, which allows to change location of location-based supergroups.
- Added the field `can_set_location` to the class `supergroupFullInfo`.
- Added the class `PublicChatType`, which can be one of `publicChatTypeHasUsername` or
`publicChatTypeIsLocationBased`.
- Added the parameter `type` to the method `getCreatedPublicChats`, which allows to get location-based supergroups
owned by the user.
- Supported location-based supergroups as public chats where appropriate.
- Added the class `chatEventLocationChanged` representing a change of the location of a chat in the chat event log.
* Added support for searching chats and users nearby:
- Added the classes `chatNearby` and `chatsNearby`, containing information about chats along with
the distance to them.
- Added the method `searchChatsNearby`, which returns chats and users nearby.
- Added the update `updateUsersNearby`, which is sent 60 seconds after a successful `searchChatsNearby` request.
* Improved support for inline keyboard buttons of the type `inlineKeyboardButtonTypeLoginUrl`:
- Added the class `LoginUrlInfo` and the method `getLoginUrlInfo`, which allows to get information about
an inline button of the type `inlineKeyboardButtonTypeLoginUrl`.
- Added the method `getLoginUrl` for automatic authorization on the target website.
* Improved support for content restrictions:
- The field `restriction_reason` in the classes `user` and `channel` now contains only a human-readable description
why access must be restricted. It is non-empty if and only if access to the chat needs to be restricted.
- Added the field `restriction_reason` to the class `message`. It is non-empty if and only if access to the message
needs to be restricted.
- Added the writable option `ignore_platform_restrictions`, which can be set in non-store apps to ignore restrictions
specific to the currently used operating system.
- Added the writable option `ignore_sensitive_content_restrictions`, which can be set to show sensitive content on
all user devices. `getOption("ignore_sensitive_content_restrictions")` can be used to fetch the actual value of
the option, the option will not be immediately updated after a change from another device.
- Added the read-only option `can_ignore_sensitive_content_restrictions`, which can be used to check, whether
the option `ignore_sensitive_content_restrictions` can be changed.
* Added support for QR code authentication for already registered users:
- Added the authorization state `authorizationStateWaitOtherDeviceConfirmation`.
- Added the method `requestQrCodeAuthentication`, which can be used in the `authorizationStateWaitPhoneNumber` state
instead of the method `setAuthenticationPhoneNumber` to request QR code authentication.
- Added the method `confirmQrCodeAuthentication` for authentication confirmation from another device.
* Added the update `updateMessageLiveLocationViewed`, which is supposed to trigger an edit of the corresponding
live location.
* Added the parameter `input_language_code` to the method `searchEmojis`.
* Added the method `getInactiveSupergroupChats`, to be used when the user receives a CHANNELS_TOO_MUCH error after
reaching the limit on the number of joined supergroup and channel chats.
* Added the field `unique_id` to the class `remoteFile`, which can be used to identify the same file for
different users.
* Added the new category of top chat list `topChatCategoryForwardChats`.
* Added the read-only option `animated_emoji_sticker_set_name`, containing name of a sticker set with animated emojis.
* Added the read-only option `unix_time`, containing an estimation of the current Unix timestamp.
The option will not be updated automatically unless the difference between the previous estimation and
the locally available monotonic clocks changes significantly.
* Added the field `is_silent` to the class `notification`, so silent notifications can be shown with
the appropriate mark.
* Added the field `video_upload_bitrate` to the class `autoDownloadSettings`.
* Disallowed to call `setChatNotificationSettings` method on the chat with self, which never worked.
* Added support for `ton://` URLs in messages and inline keyboard buttons.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.5.0 (9 Sep 2019):
* Changed authorization workflow:
- Added the state `authorizationStateWaitRegistration`, which will be received after `authorizationStateWaitCode` for
users who are not registered yet.
- Added the method `registerUser`, which must be used in the `authorizationStateWaitRegistration` state to finish
registration of the user.
- Removed the fields `is_registered` and `terms_of_service` from the class `authorizationStateWaitCode`.
- Removed the parameters `first_name` and `last_name` from the method `checkAuthenticationCode`.
* Added support for messages with an unknown sender (zero `sender_user_id`) in private chats, basic groups and
supergroups. Currently, the sender is unknown for posts in channels and for channel posts automatically forwarded to
the discussion group.
* Added support for the new permission system for non-administrator users in groups:
- Added the class `chatPermissions` containing all supported permissions, including new permissions `can_send_polls`,
`can_change_info`, `can_invite_users` and `can_pin_messages`.
- Added the field `permissions` to the class `chat`, describing actions that non-administrator chat members are
allowed to take in the chat.
- Added the update `updateChatPermissions`.
- Added the method `setChatPermissions` for changing chat permissions.
- Added the class `chatEventPermissionsChanged` representing a change of chat permissions in the chat event log.
- Replaced the fields `can_send_messages`, `can_send_media_messages`, `can_send_other_messages`,
`can_add_web_page_previews` in the class `chatMemberStatusRestricted` with the field `permissions` of
the type `chatPermissions`.
- Removed the field `everyone_is_administrator` from the `basicGroup` class in favor of the field `permissions` of
the class `chat`.
- Removed the field `anyone_can_invite` from the `supergroup` class in favor of the field `permissions` of
the class `chat`.
- Removed the method `toggleBasicGroupAdministrators` in favor of `setChatPermissions`.
- Removed the method `toggleSupergroupInvites` in favor of `setChatPermissions`.
- Renamed the field `anyone_can_invite` to `can_invite_users` in the class `chatEventInvitesToggled`.
- The permissions `can_send_other_messages` and `can_add_web_page_previews` now imply only `can_send_messages`
instead of `can_send_media_messages`.
- Allowed administrators in basic groups to use the method `generateChatInviteLink`.
* Added out of the box `OpenBSD` and `NetBSD` operating systems support.
* Added possibility to use `LibreSSL` >= 2.7.0 instead of `OpenSSL` to build TDLib.
* Added instructions for building TDLib on `Debian 10`, `OpenBSD` and `NetBSD` to
the [TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added support for Backgrounds 2.0:
- Added the classes `BackgroundType`, `background`, `backgrounds` and `InputBackground`.
- Added the method `getBackground` returning the list of backgrounds installed by the user.
- Added the method `setBackground` for changing the background selected by the user.
- Added the update `updateSelectedBackground`, which is sent right after a successful initialization and whenever
the selected background changes.
- Added the method `removeBackground` for removing a background from the list of installed backgrounds.
- Added the method `resetBackgrounds` for restoring the default list of installed backgrounds.
- Added the method `searchBackground` returning a background by its name.
- Added the method `getBackgroundUrl` returning a persistent URL for a background.
- Removed the `getWallpapers` method.
- Removed the `wallpaper` and the `wallpapers` classes.
- The class `fileTypeWallpaper` can be used for remote file identifiers of both old wallpapers and new backgrounds.
* Added support for descriptions in basic groups:
- Added the field `description` to the class `basicGroupFullInfo`.
- Replaced the method `setSupergroupDescription` with `setChatDescription` which can be used for any chat type.
* Added support for emoji suggestions:
- Added the method `searchEmojis` for searching emojis by keywords.
- Added the method `getEmojiSuggestionsUrl`, which can be used to automatically log in to the translation platform
and suggest new emoji replacements.
- Renamed the class `stickerEmojis` to `emojis`.
* Changed type of the fields `old_photo` and `new_photo` in the class `chatEventPhotoChanged` from `chatPhoto` to
`photo`.
* Changed recommended size for `inputThumbnail` from 90x90 to 320x320.
* Combined all supported settings for phone number authentication:
- Added the class `phoneNumberAuthenticationSettings` which contains all the settings.
- Replaced the parameters `is_current_phone_number` and `allow_flash_call` in the methods
`setAuthenticationPhoneNumber`, `sendPhoneNumberConfirmationCode`, `sendPhoneNumberVerificationCode` and
`changePhoneNumber` with the parameter `settings` of the type `phoneNumberAuthenticationSettings`.
- Added support for automatic SMS code verification for official applications via the new field `allow_app_hash` in
the class `phoneNumberAuthenticationSettings`.
* Added support for auto-download settings presets.
- Added the classes `autoDownloadSettings` and `autoDownloadSettingsPresets`.
- Added the method `getAutoDownloadSettingsPresets` for getting the settings.
- Added the method `setAutoDownloadSettings`, which needs to be called whenever the user changes the settings.
* Added support for minithumbnails - thumbnail images of a very poor quality and low resolution:
- Added the class `minithumbnail`.
- Added the field `minithumbnail` to `animation`, `document`, `photo`, `video` and `videoNote` classes.
- Added the field `audio_cover_minithumbnail` to the class `audio`.
* Added support for resending messages which failed to send:
- Added the fields `error_code`, `error_message`, `can_retry` and `retry_after` to
the class `messageSendingStateFailed`.
- Added the method `resendMessages`.
* Added the field `is_animated` to the `sticker`, `stickerSet` and `stickerSetInfo` classes.
Animated stickers can be received anywhere where non-animated stickers can appear.
* Added the parameters `send_copy` and `remove_caption` to the `forwardMessages` method to allow forwarding of
messages without links to the originals.
* Added the fields `send_copy` and `remove_caption` to `inputMessageForwarded` method to allow forwarding of
a message without link to the original message.
* Added the method `getMessageLinkInfo` for getting information about a link to a message in a chat.
* Added the class `userPrivacySettingShowProfilePhoto` for managing visibility of the user's profile photo.
* Added the class `userPrivacySettingShowLinkInForwardedMessages` for managing whether a link to the user's account is
included with forwarded messages.
* Added the field `thumbnail` to the classes `stickerSet` and `stickerSetInfo`, containing a thumbnail for
the sticker set.
* Added the field `is_scam` to the classes `user` and `supergroup`.
* Added a new kind of inline keyboard button `inlineKeyboardButtonTypeLoginUrl`, which for the moment must be processed
in the same way as an `inlineKeyboardButtonTypeUrl`.
* Added the new class `supergroupMembersFilterContacts`, allowing to only search for contacts
in `getSupergroupMembers`.
* Added the new class `chatMembersFilterContacts`, allowing to only search for contacts in `searchChatMembers`.
* Added the class `chatEventPollStopped` representing the closing of a poll in a message in the chat event log.
* Added ability to specify the exact types of problems with a call in the method `sendCallRating` and
the new class `CallProblem`.
* Changes in [tdweb](https://github.com/tdlib/td/blob/master/example/web/):
- Supported non-zero `offset` and `limit` in `readFilePart`.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.4.0 (1 May 2019):
* Added a [TDLib build instructions generator](https://tdlib.github.io/td/build.html), covering in details
TDLib building on the most popular operating systems.
* Added an example of TDLib building and usage from a browser.
See https://github.com/tdlib/td/blob/master/example/web/ for more details.
* Allowed to pass NULL pointer to `td_json_client_execute` instead of a previously created JSON client.
Now you can use synchronous TDLib methods through a JSON interface before creating a TDLib JSON client.
* Added support for media streaming by allowing to download any part of a file:
- Added the `offset` parameter to `downloadFile` which specifies the starting position
from which the file should be downloaded.
- Added the `limit` parameter to `downloadFile` which specifies how many bytes should be downloaded starting from
the `offset` position.
- Added the field `download_offset` to the class `localFile` which contains the current download offset.
- The field `downloaded_prefix_size` of the `localFile` class now contains the number of available bytes
from the position `download_offset` instead of from the beginning of the file.
- Added the method `getFileDownloadedPrefixSize` which can be used to get the number of locally available file bytes
from a given offset without actually changing the download offset.
* Added the parameter `synchronous` to `downloadFile` which causes the request to return the result only after
the download is completed.
* Added support for native polls in messages:
- Added `messagePoll` to the types of message content; contains a poll.
- Added the classes `poll` and `pollOption` describing a poll and a poll answer option respectively.
- Added `inputMessagePoll` to the types of new input message content; can be used to send a poll.
- Added the method `setPollAnswer` which can be used for voting in polls.
- Added the method `stopPoll` which can be used to stop polls. Use the `Message.can_be_edited` field to check whether
this method can be called on a message.
- Added the update `updatePoll` for bots only. Ordinary users receive poll updates through `updateMessageContent`.
* Added a Notification API. See article https://core.telegram.org/tdlib/notification-api for a detailed description.
- Added the class `pushReceiverId` which contains a globally unique identifier of the push notification subscription.
- Changed the return type of the method `registerDevice` to `pushReceiverId` to allow matching of push notifications
with TDLib instances.
- Removed the fields `disable_notification` and `contains_mention` from `updateNewMessage`.
- Renamed the class `deviceTokenGoogleCloudMessaging` to `deviceTokenFirebaseCloudMessaging`.
- Added the field `encrypt` to classes `deviceTokenApplePushVoIP` and `deviceTokenFirebaseCloudMessaging`
which allows to subscribe for end-to-end encrypted push notifications.
- Added the option `notification_group_count_max` which can be used to enable the Notification API and set
the maximum number of notification groups to be shown simultaneously.
- Added the option `notification_group_size_max` which can be used to set the maximum number of simultaneously shown
notifications in a group.
- Added the synchronous method `getPushReceiverId` for matching a push notification with a TDLib instance.
- Added the method `processPushNotification` for handling of push notifications.
- Removed the method `processDcUpdate` in favor of the general `processPushNotification` method.
- Added the update `updateNotificationGroup`, sent whenever a notification group changes.
- Added the update `updateNotification`, sent whenever a notification changes.
- Added the update `updateActiveNotifications` for syncing the list of active notifications on startup.
- Added the update `updateHavePendingNotifications` which can be used to improve lifetime handling of
the TDLib instance.
- Added the possibility to disable special handling of notifications about pinned messages via the new settings
`use_default_disable_pinned_message_notifications`, `disable_pinned_message_notifications` in
the class `chatNotificationSettings` and the new setting `disable_pinned_message_notifications` in
the class `scopeNotificationSettings`.
- Added the possibility to disable special handling of notifications about mentions and replies via the new settings
`use_default_disable_mention_notifications`, `disable_mention_notifications` in
the class `chatNotificationSettings` and the new setting `disable_mention_notifications` in
the class `scopeNotificationSettings`.
- Added the class `PushMessageContent` describing the content of a notification, received through
a push notification.
- Added the class `NotificationType` describing a type of notification.
- Added the class `notification` containing information about a notification.
- Added the class `NotificationGroupType` describing a type of notification group.
- Added the class `notificationGroup` describing a state of a notification group.
- Added the methods `removeNotification` and `removeNotificationGroup` for handling notifications removal
by the user.
- Added the separate notification scope `notificationSettingsScopeChannelChats` for channel chats.
* Added support for pinned notifications in basic groups and Saved Messages:
- Added the field `pinned_message_id` to the class `chat`.
- Removed the field `pinned_message_id` from the class `supergroupFullInfo` in favor of `chat.pinned_message_id`.
- Added the update `updateChatPinnedMessage`.
- The right `can_pin_messages` is now applicable to both basic groups and supergroups.
- Replaced the method `pinSupergroupMessage` with `pinChatMessage` which can be used for any chat type.
- Replaced the method `unpinSupergroupMessage` with `unpinChatMessage` which can be used for any chat type.
* Added new synchronous methods for managing TDLib internal logging. The old functions are deprecated and
will be removed in TDLib 2.0.0.
- Added the synchronous method `setLogStream` for changing the stream to which the TDLib internal log is written.
- Added the synchronous method `getLogStream` for getting information about the currently used log stream.
- Added the classes `logStreamDefault`, `logStreamFile` and `logStreamEmpty` describing different supported kinds of
log streams.
- Added the class `logVerbosityLevel` containing the verbosity level of the TDLib internal log.
- Added the class `logTags` containing a list of available TDLib internal log tags.
- Added the synchronous method `setLogVerbosityLevel` for changing verbosity level of logging.
- Added the synchronous method `getLogVerbosityLevel` for getting the current verbosity level of logging.
- Added the synchronous method `getLogTags` returning all currently supported log tags.
- Added the synchronous method `setLogTagVerbosityLevel` for changing the verbosity level of logging for
some specific part of the code.
- Added the synchronous method `getLogTagVerbosityLevel` for getting the current verbosity level for a specific part
of the code.
- Added the synchronous method `addLogMessage` for using the TDLib internal log by the application.
* Added support for Instant View 2.0:
- Replaced the field `has_instant_view` in class `webPage` with the `instant_view_version` field.
- Added the field `version` to the class `webPageInstantView`.
- Added the class `pageBlockCaption`.
- Changed the type of `caption` fields in `pageBlockAnimation`, `pageBlockAudio`, `pageBlockPhoto`, `pageBlockVideo`,
`pageBlockEmbedded`, `pageBlockEmbeddedPost`, `pageBlockCollage` and `pageBlockSlideshow` from
`RichText` to `pageBlockCaption`.
- Added the class `pageBlockListItem` and replaced the content of the `pageBlockList` class with a list of
`pageBlockListItem`.
- Added 6 new kinds of `RichText`: `richTextSubscript`, `richTextSuperscript`, `richTextMarked`,
`richTextPhoneNumber`, `richTextIcon` and `richTextAnchor`.
- Added new classes `pageBlockRelatedArticle`, `PageBlockHorizontalAlignment`, `PageBlockVerticalAlignment` and
`pageBlockTableCell`.
- Added new block types `pageBlockKicker`, `pageBlockRelatedArticles`, `pageBlockTable`, `pageBlockDetails` and
`pageBlockMap`.
- Added the flag `is_rtl` to the class `webPageInstantView`.
- Renamed the field `caption` in classes `pageBlockBlockQuote` and `pageBlockPullQuote` to `credit`.
- Dimensions in `pageBlockEmbedded` can now be unknown.
- Added the field `url` to `pageBlockPhoto` which contains a URL that needs to be opened when the photo is clicked.
- Added the field `url` to `webPageInstantView` which must be used for the correct handling of anchors.
* Added methods for confirmation of the 2-step verification recovery email address:
- Added the method `checkRecoveryEmailAddressCode` for checking the verification code.
- Added the method `resendRecoveryEmailAddressCode` for resending the verification code.
- Replaced the field `unconfirmed_recovery_email_address_pattern` in the class `passwordState` with
the `recovery_email_address_code_info` field containing full information about the code.
- The necessity of recovery email address confirmation in `setPassword` and `setRecoveryEmailAddress` methods
is now returned by the corresponding `passwordState` and not by the error `EMAIL_UNCONFIRMED`.
* Improved the `MessageForwardInfo` class and added support for hidden original senders:
- Removed the old `messageForwardedPost` and `messageForwardedFromUser` classes.
- Added the class `messageForwardInfo` which contains information about the origin of the message, original sending
date and identifies the place from which the message was forwarded the last time for messages forwarded to
Saved Messages.
- Added the classes `messageForwardOriginUser`, `messageForwardOriginHiddenUser` and `messageForwardOriginChannel`
which describe the exact origins of a message.
* Improved getting the list of user profile photos:
- Added the class `userProfilePhoto`, containing `id`, `added_date` and `sizes` of a profile photo.
- Changed the type of the field `photos` in `userProfilePhotos` to a list of `userProfilePhoto` instead of
a list of `photo`. `getUserProfilePhotos` now returns a date for each profile photo.
- Removed the field `id` from the class `photo` (this field was only needed in the result of `getUserProfilePhotos`).
* Added the possibility to get a Telegram Passport authorization form before asking the user for a password:
- Removed the parameter `password` from the method `getPassportAuthorizationForm`.
- Moved the fields `elements` and `errors` from the class `passportAuthorizationForm` to
the new class `passportElementsWithErrors`.
- Added the method `getPassportAuthorizationFormAvailableElements` that takes the user's password and
returns previously uploaded Telegram Passport elements and errors in them.
* Added the field `file_index` to the classes `passportElementErrorSourceFile` and
`passportElementErrorSourceTranslationFile`.
* Added the method `getCurrentState` returning all updates describing the current `TDLib` state. It can be used to
restore the correct state after connecting to a running TDLib instance.
* Added the class `updates` which contains a list of updates and is returned by the `getCurrentState` method.
* Added the update `updateChatOnlineMemberCount` which is automatically sent for open group chats if the number of
online members in a group changes.
* Added support for custom language packs downloaded from the server:
- Added the fields `base_language_pack_id`` to the class `languagePackInfo`. Strings from the base language pack
must be used for untranslated keys from the chosen language pack.
- Added the fields `plural_code`, `is_official`, `is_rtl`, `is_beta`, `is_installed`, `total_string_count`,
`translated_string_count`, `translation_url` to the class `languagePackInfo`.
- Added the method `addCustomServerLanguagePack` which adds a custom server language pack to the list of
installed language packs.
- Added the method `getLanguagePackInfo` which can be used for handling `https://t.me/setlanguage/...` links.
- Added the method `synchronizeLanguagePack` which can be used to fetch the latest versions of all strings from
a language pack.
The method doesn't need to be called explicitly for the current used/base language packs.
- The method `deleteLanguagePack` now also removes the language pack from the list of installed language packs.
* Added the method `getChatNotificationSettingsExceptions` which can be used to get chats with
non-default notification settings.
* Added the parameter `hide_via_bot` to `sendInlineQueryResultMessage` which can be used for
`getOption("animation_search_bot_username")`, `getOption("photo_search_bot_username")` and
`getOption("venue_search_bot_username")` bots to hide that the message was sent via the bot.
* Added the class `chatReportReasonChildAbuse` which can be used to report a chat for child abuse.
* Added the method `getMessageLocally` which returns a message only if it is available locally without
a network request.
* Added the method `writeGeneratedFilePart` which can be used to write a generated file if there is no direct access to
TDLib's file system.
* Added the method `readFilePart` which can be used to read a file from the TDLib file cache.
* Added the class `filePart` to represent the result of the new `readFilePart` method.
* Added the field `log_size` to the `storageStatisticsFast` class which contains the size of the TDLib internal log.
Previously the size was included into the value of the `database_size` field.
* Added the field `language_pack_database_size` to the `storageStatisticsFast` class which contains the size of the
language pack database.
* Added the field `is_support` to the class `user` which can be used to identify Telegram Support accounts.
* Added the class `HttpUrl` encapsulating an HTTP URL.
* Added the method `getMessageLink` which can be used to create a private link (which works only for members) to
a message in a supergroup or channel.
* Added support for channel statistics (coming soon):
- Added the field `can_view_statistics` to the `supergroupFullInfo` class.
- Added the method `getChatStatisticsUrl` which returns a URL with the chat statistics.
* Added support for server-side peer-to-peer calls privacy:
- Added the class `userPrivacySettingAllowPeerToPeerCalls` for managing privacy.
- Added the field `allow_p2p` to `callStateReady` class which must be used to determine whether
a peer-to-peer connection can be used.
* Added the option `ignore_background_updates` which allows to skip all updates received while the TDLib instance was
not running. The option does nothing if the database or secret chats are used.
* Added the read-only option `expect_blocking`, suggesting whether Telegram is blocked for the user.
* Added the read-only option `enabled_proxy_id`, containing the ID of the enabled proxy.
* Added the ability to identify password pending sessions (where the code was entered but not
the two-step verification password) via the flag `is_password_pending` in the `session` class.
TDLib guarantees that the sessions will be returned by the `getActiveSessions` method in the correct order.
* Added the classes `JsonValue` and `jsonObjectMember` which represent a JSON value and
a member of a JSON object respectively as TDLib API objects.
* Added the synchronous methods `getJsonValue` and `getJsonString` for simple conversion between
a JSON-encoded string and `JsonValue` TDLib API class.
* Added the methods `getApplicationConfig` and `saveApplicationLogEvent` to be used for testing purposes.
* Added the temporarily class `databaseStatistics` and the method `getDatabaseStatistics` for rough estimations of
database tables size in a human-readable format.
* Made the method `Client.Execute` static in .NET interface.
* Removed the `on_closed` callback virtual method from low-level C++ ClientActor interface.
Callback destructor can be used instead.
* Updated dependencies in the prebuilt TDLib for Android:
- Updated SDK to SDK 28 in which helper classes were moved from `android.support.` to `androidx.` package.
- Updated NDK to r19c, which dropped support for Android versions up to 4.0.4, so the minimum supported version is
Android 4.1.
- Updated OpenSSL to version 1.1.1.
- Added x86_64 libraries.
* Added out of the box `FreeBSD` support.
* Significantly improved TDLib compilation time and decreased compiler RAM usage:
- In native C++ interface `td_api::object_ptr` is now a simple homebrew const-propagating class instead of
`std::unique_ptr`.
- Added the script `SplitSource.php`, which can be used to split some source code files before building
the library to reduce maximum RAM usage per file at the expense of increased build time.
* The update `updateOption` with the `version` option is now guaranteed to come before all other updates.
It can now be used to dynamically discover available methods.
* Added the ability to delete incoming messages in private chats and revoke messages without a time limit:
- Added the parameter `revoke` to the method `deleteChatHistory`; use it to delete chat history for all chat members.
- Added the fields `can_be_deleted_only_for_self` and `can_be_deleted_for_all_users` to the class `chat`
which can be used to determine for whom the chat can be deleted through the `deleteChatHistory` method.
- The fields `Message.can_be_deleted_only_for_self` and `Message.can_be_deleted_for_all_users` can still be used
to determine for whom the message can be deleted through the `deleteMessages` method.
* Added support for server-generated notifications about newly registered contacts:
- Setting the option `disable_contact_registered_notifications` now affects all user sessions.
When the option is enabled, the client will still receive `messageContactRegistered` message in the private chat,
but there will be no notification about the message.
- `getOption("disable_contact_registered_notifications")` can be used to fetch the actual value of the option,
the option will not be updated automatically after a change from another device.
* Decreased the maximum allowed first name and last name length to 64, chat title length to 128,
matching the new server-side limits.
* Decreased the maximum allowed value of the `forward_limit` parameter of the `addChatMember` method from 300 to 100,
matching the new server-side limit.
* Added protection from opening two TDLib instances with the same database directory from one process.
* Added copying of notification settings of new secret chats from notification settings of
the corresponding private chat.
* Excluded the sponsored chat (when using sponsored proxies) from unread counters.
* Allowed to pass decreased local_size in `setFileGenerationProgress` to restart the generation from the beginning.
* Added a check for modification time of original file in `inputFileGenerated` whenever possible.
If the original file was changed, then TDLib will restart the generation.
* Added the destruction of MTProto keys on the server during log out.
* Added support for hexadecimal-encoded and decimal-encoded IPv4 proxy server addresses.
* Improved the behavior of `changeImportedContacts` which now also deletes contacts of users without Telegram accounts
from the server.
* Added the ability to call `getStorageStatistics` before authorization.
* Allowed to pass `limit` = -`offset` for negative offset in the `getChatHistory` method.
* Changed the recommended `inputThumbnail` size to be at most 320x320 instead of the previous 90x90.
* Disabled building by default of the native C interface. Use `cmake --build . --target tdc` to build it.
* Numerous optimizations and bug fixes:
- Network implementation for Windows was completely rewritten to allow a literally unlimited number of
simultaneously used TDLib instances.
- TDLib instances can now share working threads with each other. Only a limited number of threads will be created
even if there are thousands of TDLib instances in a single process.
- Removed the restriction on the size of update or response result in JSON interface.
- Fixed pinning of the 5th chat when there is a sponsored chat.
- Fixed IPv6 on Windows.
- Improved network connections balancing, aliveness checks and overall stability.
- Various autogenerated documentation fixes and improvements.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.3.0 (5 Sep 2018):
* Added a review of existing TDLib based [frameworks](https://github.com/tdlib/td/blob/master/example/README.md)
in different programming languages.
* Added a [Getting started](https://core.telegram.org/tdlib/getting-started) guide describing the main TDLib concepts
and basic principles required for library usage.
* When a chat is opened, only those messages that have been viewed are marked as read.
* Improved the proxy settings API:
- A list of proxies is stored instead of just one proxy.
- New methods `addProxy`, `editProxy`, `enableProxy`, `disableProxy`, `removeProxy` and `getProxies` were added
instead of `setProxy` and `getProxy`.
- Added the method `pingProxy` which can be used to compute time needed to receive a response from a Telegram server
through a proxy or directly.
- Added support for MTProto proxy via class `proxyTypeMtproto`.
- Added support for HTTP proxy via class `proxyTypeHttp`.
- For each proxy last time it was used is remembered.
- Added the method `getProxyLink` which returns an HTTPS link that can be used to share a proxy with others.
* Improved the notification settings API. Scope notification settings are now properly synchronized between all devices
and chat notification settings can be reset to their default values:
- The `notificationSettings` class was split into `chatNotificationSettings` and `scopeNotificationSettings`.
- Only two notification settings scopes are left: `notificationSettingsScopePrivateChats` which is responsible for
default notification settings for private and secret chats and `notificationSettingsScopeGroupChats` for all other
chats.
- `updateNotificationSettings` was split into `updateChatNotificationSettings` and `updateScopeNotificationSettings`.
- `setNotificationSettings` was split into `setChatNotificationSettings` and `setScopeNotificationSettings`.
- `getNotificationSettings` was replaced with `getScopeNotificationSettings`.
* Added the field `filter` to the `searchChatMembers` method to support searching among administrators, bots,
restricted and banned members.
* Added the ability to use synchronous requests and `setAlarm` before the library is initialized.
* Added the ability to send requests that don't need authentication before the library is initialized. These requests
will be postponed and executed at the earliest opportunity. For example, `setNetworkType` can be used to disable the
network for TDLib before the library tries to use it; `addProxy` can be used to add a proxy before any network
activity; or `setOption("use_pfs")` can be used to guarantee that PFS is used for all requests.
* Added support for tg:// links in `inlineKeyboardButtonTypeUrl` and `textEntityTypeTextUrl`.
* Added the ability to call `deleteAccount` in the `authorizationStateWaitPassword` authorization state.
* Added the ability to call `checkAuthenticationCode` with an empty `first_name` for unregistered users to check the
code validity.
* Added the methods `editMessageMedia` and `editInlineMessageMedia` for editing media messages content.
* Renamed the class `shippingAddress` to `address`.
* Changed the return value of the `requestPasswordRecovery` method from `passwordRecoveryInfo` to
`emailAddressAuthenticationCodeInfo`.
* Added support for sponsored channels promoted by MTProto-proxies:
- Added the field `is_sponsored` to the `chat` class.
- Added `updateChatIsSponsored`, sent when this field changes.
* Added support for marking chats as unread:
- Added the field `is_marked_as_unread` to `chat`.
- Added the update `updateChatIsMarkedAsUnread`.
- Added the method `toggleChatIsMarkedAsUnread`.
* Added support for a default value of `disable_notification`, used when a message is sent to the chat:
- Added the field `default_disable_notification` to `chat` class.
- Added the update `updateChatDefaultDisableNotification`.
- Added the method `toggleChatDefaultDisableNotification`.
* Added the field `vcard` to the `contact` class.
* Added the field `type` to `venue`, which contains a provider-specific type of the venue,
* Added the update `updateUnreadChatCount`, enabled when the message database is used and sent when
the number of unread chats has changed.
* Added the method `addLocalMessage` for adding a local message to a chat.
* Added the method `getDeepLinkInfo`, which can return information about `tg://` links that are not supported by
the client.
* Added support for language packs:
- Added the writable option `language_pack_database_path` which can be used to specify a path to a database
for storing language pack strings, so that this database can be shared between different accounts.
If not specified, language pack strings will be stored only in memory.
Changes to the option are applied only on the next TDLib launch.
- Added the writable option `localization_target` for setting up a name for the current localization target
(currently supported: "android", "android_x", "ios", "macos" and "tdesktop").
- Added the writable option `language_pack_id` for setting up an identifier of the currently used language pack from
the current localization target (a "language pack" represents the collection of strings that can be used to display
the interface of a particular application in a particular language).
- Added the class `LanguagePackStringValue` describing the possible values of a string from a language pack.
- Added the class `languagePackString` describing a string from a language pack.
- Added the class `languagePackStrings` containing a list of language pack strings.
- Added the class `languagePackInfo` containing information about a language pack from a localization target.
- Added the class `localizationTargetInfo` containing information about a localization target.
- Added the update `updateLanguagePackStrings` which is sent when some strings in a language pack have changed.
- Added the synchronous method `getLanguagePackString` which can be used to get a language pack string from
the local database.
- Added the method `getLocalizationTargetInfo` which returns information about the current localization target.
- Added the method `getLanguagePackStrings` which returns some or all strings from a language pack, possibly fetching
them from the server.
- Added the method `setCustomLanguagePack` for adding or editing a custom language pack.
- Added the method `editCustomLanguagePackInfo` for editing information about a custom language pack.
- Added the method `setCustomLanguagePackString` for adding, editing or deleting a string in a custom language pack.
- Added the method `deleteLanguagePack` for deleting a language pack from the database.
- Added the read-only option `suggested_language_pack_id` containing the identifier of the language pack,
suggested for the user by the server.
* Added support for Telegram Passport:
- Added two new message contents `messagePassportDataSent` for ordinary users and `messagePassportDataReceived`
for bots containing information about Telegram Passport data shared with a bot.
- Added the new file type `fileTypeSecure`.
- Added the class `datedFile` containing information about a file along with the date it was uploaded.
- Added the helper classes `date`, `personalDetails`, `identityDocument`, `inputIdentityDocument`,
`personalDocument`, `inputPersonalDocument`, `passportElements`.
- Added the class `PassportElementType` describing all supported types of Telegram Passport elements.
- Added the class `PassportElement` containing information about a Telegram Passport element.
- Added the class `InputPassportElement` containing information about a Telegram Passport element to save.
- Added the classes `passportElementError` and `PassportElementErrorSource` describing an error in
a Telegram Passport element.
- Added the field `has_passport_data` to the `passwordState` class.
- Added the methods `getPassportElement`, `getAllPassportElements`, `setPassportElement`, `deletePassportElement`
for managing Telegram Passport elements.
- Added the methods `getPassportAuthorizationForm` and `sendPassportAuthorizationForm` used for sharing
Telegram Passport data with a service via a bot.
- Added the methods `sendPhoneNumberVerificationCode`, `resendPhoneNumberVerificationCode` and
`checkPhoneNumberVerificationCode` for verification of a phone number used for Telegram Passport.
- Added the methods `sendEmailAddressVerificationCode`, `resendEmailAddressVerificationCode` and
`checkEmailAddressVerificationCode` for verification of an email address used for Telegram Passport.
- Added the method `getPreferredCountryLanguage` returning a most popular language in a country.
- Added the classes `inputPassportElementError` and `InputPassportElementErrorSource` for bots describing an error in
a Telegram Passport element.
- Added the method `setPassportElementErrors` for bots.
- Added the class `encryptedPassportElement` and `encryptedCredentials` for bots describing
an encrypted Telegram Passport element.
* Improved support for Telegram terms of service:
- Added the class `termsOfService`, containing information about the Telegram terms of service.
- Added the field `terms_of_service` to `authorizationStateWaitCode`.
- Added the update `updateTermsOfService` coming when new terms of service need to be accepted by the user.
- Added the method `acceptTermsOfService` for accepting terms of service.
- Removed the method `getTermsOfService`.
* Added the method `getMapThumbnailFile` which can be used to register and download a map thumbnail file.
* Added the methods `sendPhoneNumberConfirmationCode`, `resendPhoneNumberConfirmationCode` and
`checkPhoneNumberConfirmationCode` which can be used to prevent an account from being deleted.
* Added the convenience methods `joinChat` and `leaveChat` which can be used instead of `setChatMemberStatus` to manage
the current user's membership in a chat.
* Added the convenience method `getContacts` which can be used instead of `searchContacts` to get all contacts.
* Added the synchronous method `cleanFileName` which removes potentially dangerous characters from a file name.
* Added the method `getChatMessageCount` which can be used to get the number of shared media.
* Added the writable option `ignore_inline_thumbnails` which can be used to prevent file thumbnails sent
by the server along with messages from being saved on the disk.
* Added the writable option `prefer_ipv6` which can be used to prefer IPv6 connections over IPv4.
* Added the writable option `disable_top_chats` which can be used to disable support for top chats.
* Added the class `chatReportReasonCopyright` for reporting chats containing infringing content.
* Added the method `clearAllDraftMessages` which can be used to delete all cloud drafts.
* Added the read-only options `message_text_length_max` and `message_caption_length_max`.
* Added the read-only options `animation_search_bot_username`, `photo_search_bot_username` and
`venue_search_bot_username` containing usernames of bots which can be used in inline mode for animations, photos and
venues search respectively.
* Numerous optimizations and bug fixes:
- Fixed string encoding for .NET binding.
- Fixed building TDLib SDK for Universal Windows Platform for ARM with MSVC 2017.
- Fixed the Swift example project.
- Fixed the syntax error in the Python example.
- Sticker thumbnails can now have `webp` extensions if they are more likely to be in WEBP format.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.2.0 (20 Mar 2018):
* Added support for native .NET bindings through `C++/CLI` and `C++/CX`.
See [using in .NET projects](README.md#using-dotnet) for more details.
* Added a C# example. See [README](example/csharp/README.md) for build and usage instructions.
* Added a build and usage example of TDLib SDK for Universal Windows Platform. See [README](example/uwp/README.md)
for detailed build and usage instructions. Also, see [Unigram](https://github.com/UnigramDev/Unigram), which is
a full-featured client rewritten from scratch using TDLib SDK for Universal Windows Platform in less than 2 months.
* Added a Swift example. See [README](example/swift/README.md) for build and usage instructions.
* Added an example of building TDLib for iOS, watchOS, tvOS, and also macOS. See [README](example/ios/README.md) for
detailed build instructions.
* Added README to [C++](example/cpp/README.md) and [python](example/python/README.md) examples.
* Link Time Optimization is disabled by default. Use `-DTD_ENABLE_LTO=ON` CMake option and CMake >= 3.9 to enable it.
* `updateNotificationSettings` is now automatically sent when the mute time expires for a chat.
* Added automatic sending of a corresponding `chatAction` when a file is being uploaded.
* `updateUserChatAction` with `chatActionCancel` is now automatically sent when the timeout expires for an action.
* Authorization states `authorizationStateWaitCode` and `authorizationStateWaitPassword` are now saved between
library restarts for 5 minutes.
* Added new message content type `messageWebsiteConnected`.
* Added new text entity types `textEntityTypeCashtag` and `textEntityTypePhoneNumber`.
* Added new update `updateUnreadMessageCount`, enabled when message database is used.
* Method `joinChatByInviteLink` now returns the joined `chat`.
* Method `getWebPagePreview` now accepts `formattedText` instead of plain `string`.
* Added field `phone_number` to `authenticationCodeInfo`, which contains a phone number that is being authenticated.
* Added field `is_secret` to `messageAnimation`, `messagePhoto`, `messageVideo` and `messageVideoNote` classes,
which denotes whether the thumbnail for the content must be blurred and the content must be shown only while tapped.
* Added field `expires_in` to `messageLocation` for live locations.
* Added flag `can_be_reported` to `chat` class.
* Added flag `supports_streaming` to classes `video` and `inputMessageVideo`.
* Added parameter `message_ids` to `reportChat`, which can be used to report specific messages.
* Added method `checkChatUsername` for checking whether a username can be set for a chat.
* Added method `getRepliedMessage`, which returns a message that is replied by a given message.
* Added method `getChatPinnedMessage`, which returns the pinned message from a chat.
* Added method `searchStickers` to search by emoji for popular stickers suggested by the server.
* Added method `searchStickerSets` to search by title and name for popular sticker sets suggested by the server.
* Added method `searchInstalledStickerSets` to search by title and name for installed sticker sets.
* Added methods for handling connected websites: `getConnectedWebsites`, `disconnectWebsite` and
`disconnectAllWebsites`.
* Added method `getCountryCode`, which uses current user IP address to identify their country.
* Added option `t_me_url`.
* Fixed `BlackBerry` spelling in `deviceTokenBlackBerryPush`.
* Fixed return type of `getChatMessageByDate` method, which is `Message` and not `Messages`.
* Ensured that updateOption("my_id") comes before `updateAuthorizationState` with `authorizationStateReady`.
* Numerous optimizations and bug fixes.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.1.1 (4 Feb 2018):
* Fixed C JSON bindings compilation error.
* Fixed locale-dependent JSON generation.
-----------------------------------------------------------------------------------------------------------------------
Changes in 1.1.0 (31 Jan 2018):
* Methods `td::Log::set_file_path` and `td_set_log_file_path` now return whether they succeeded.
* Added methods `td::Log::set_max_file_size` and `td_set_log_max_file_size` for restricting maximum TDLib log size.
* Added methods `td::Log::set_fatal_error_callback` and `td_set_log_fatal_error_callback` for providing callbacks
on fatal errors.
* JNI-bindings are now package-agnostic. Use CMake option `TD_ENABLE_JNI` to enable JNI-bindings.
* Added a Java example. See [README](example/java/README.md) for build and usage instructions.
* Added support for text entities in media captions.
- Added new type `formattedText` containing a text with entities.
- Replaced all string fields `caption` with fields of type `formattedText`.
- Replaced fields `text` and `entities` with the field `text` of type `formattedText` in class `messageText`.
- Replaced fields `text` and `entities` with the field `text` of type `formattedText` in class `inputMessageText`.
- Replaced fields `text` and `text_entities` with the field `text` of type `formattedText` in class `game`.
- Removed field `parse_mode` from class `inputMessageText`.
- Added synchronous method `parseTextEntities`.
* updateNewMessage is now sent for all sent messages.
* updateChatLastMessage is now sent when any field of the last message in a chat changes.
* Reworked the `registerDevice` method:
- Added parameter `other_user_ids` to method `registerDevice` to support multiple accounts.
- It is now possible to specify tokens for VoIP pushes, WNS, web Push API, Tizen Push Service as `DeviceToken`.
- Added support for Apple Push Notification Service inside App Sandbox.
* Added method `searchChatsOnServer` analogous to `searchChats`, but using server search.
* Results from the `searchChatsOnServer` method are now excluded from `searchPublicChats` results,
so `searchChatsOnServer` (along with `searchContacts`) should be called whenever `searchPublicChats` is called
to ensure that no results were omitted.
* Added parameter `as_album` to method `getPublicMessageLink` to enable getting public links for media albums.
* Added field `html` to class `publicMessageLink`, containing HTML-code for message/message album embedding.
* Added parameter `only_if_pending` to method `cancelDownloadFile` to allow keeping already started downloads.
* Methods `createPrivateChat`, `createBasicGroupChat`, `createSupergroupChat` and `createSecretChat`
can now be called without a prior call to `getUser`/`getBasicGroup`/`getSupergroup`/`getSecretChat`.
* Added parameter `force` to methods `createPrivateChat`, `createBasicGroupChat` and `createSupergroupChat` to allow
creating a chat without network requests.
* Numerous optimizations and bug fixes.
-----------------------------------------------------------------------------------------------------------------------
================================================
FILE: CMake/AddCXXCompilerFlag.cmake
================================================
# - Adds a compiler flag if it is supported by the compiler
#
# This function checks that the supplied compiler flag is supported and then
# adds it to the corresponding compiler flags
#
# add_cxx_compiler_flag(<FLAG> [<VARIANT>])
#
# - Example
#
# include(AddCXXCompilerFlag)
# add_cxx_compiler_flag(-Wall)
# add_cxx_compiler_flag(-no-strict-aliasing RELEASE)
# Requires CMake 2.6+
if (__add_cxx_compiler_flag)
return()
endif()
set(__add_cxx_compiler_flag INCLUDED)
include(CheckCXXCompilerFlag)
function(mangle_compiler_flag FLAG OUTPUT)
string(TOUPPER "HAVE_CXX_FLAG_${FLAG}" SANITIZED_FLAG)
string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
set(${OUTPUT} "${SANITIZED_FLAG}" PARENT_SCOPE)
endfunction(mangle_compiler_flag)
function(add_cxx_compiler_flag FLAG)
string(REPLACE "-Wno-" "-W" MAIN_FLAG ${FLAG})
mangle_compiler_flag("${MAIN_FLAG}" MANGLED_FLAG_NAME)
if (DEFINED CMAKE_REQUIRED_FLAGS)
set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}")
else()
set(CMAKE_REQUIRED_FLAGS "${FLAG}")
endif()
check_cxx_compiler_flag("${MAIN_FLAG}" ${MANGLED_FLAG_NAME})
if (DEFINED OLD_CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
else()
unset(CMAKE_REQUIRED_FLAGS)
endif()
if (${MANGLED_FLAG_NAME})
set(VARIANT ${ARGV1})
if (ARGV1)
string(TOUPPER "_${VARIANT}" VARIANT)
endif()
set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)
endif()
endfunction()
function(add_required_cxx_compiler_flag FLAG)
string(REPLACE "-Wno-" "-W" MAIN_FLAG ${FLAG})
mangle_compiler_flag("${MAIN_FLAG}" MANGLED_FLAG_NAME)
set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}")
check_cxx_compiler_flag("${MAIN_FLAG}" ${MANGLED_FLAG_NAME})
set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}")
if (${MANGLED_FLAG_NAME})
set(VARIANT ${ARGV1})
if (ARGV1)
string(TOUPPER "_${VARIANT}" VARIANT)
endif()
set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}" PARENT_SCOPE)
else()
message(FATAL_ERROR "Required flag '${FLAG}' is not supported by the compiler")
endif()
endfunction()
================================================
FILE: CMake/FindAtomics.cmake
================================================
# Original issue:
# * https://gitlab.kitware.com/cmake/cmake/-/issues/23021#note_1098733
#
# For reference:
# * https://gcc.gnu.org/wiki/Atomic/GCCMM
#
# riscv64 specific:
# * https://lists.debian.org/debian-riscv/2022/01/msg00009.html
#
# ATOMICS_FOUND - system has C++ atomics
# ATOMICS_LIBRARIES - libraries needed to use C++ atomics
if (ATOMICS_FOUND)
return()
endif()
include(CheckCXXSourceCompiles)
# RISC-V only has 32-bit and 64-bit atomic instructions. GCC is supposed
# to convert smaller atomics to those larger ones via masking and
# shifting like LLVM, but it's a known bug that it does not. This means
# anything that wants to use atomics on 1-byte or 2-byte types needs
# to link atomic library, but not 4-byte or 8-byte (though it does no harm).
set(ATOMIC_CODE
"
#include <atomic>
#include <cstdint>
std::atomic<std::uint8_t> n8{0}; // riscv64
std::atomic<std::uint64_t> n64{0}; // armel, mipsel, powerpc
int main() {
++n8;
++n64;
}")
set(ATOMICS_LIBS " " "-latomic")
if (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
set(ATOMICS_LIBS "${ATOMICS_LIBS}" /usr/pkg/gcc12/x86_64--netbsd/lib/libatomic.so /usr/pkg/gcc12/i486--netbsdelf/lib/libatomic.so)
endif()
foreach (ATOMICS_LIBRARY ${ATOMICS_LIBS})
unset(ATOMICS_FOUND CACHE)
set(CMAKE_REQUIRED_LIBRARIES "${ATOMICS_LIBRARY}")
check_cxx_source_compiles("${ATOMIC_CODE}" ATOMICS_FOUND)
unset(CMAKE_REQUIRED_LIBRARIES)
if (ATOMICS_FOUND)
if (NOT ATOMICS_LIBRARY STREQUAL " ")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Atomics DEFAULT_MSG ATOMICS_LIBRARY)
set(ATOMICS_LIBRARIES "${ATOMICS_LIBRARY}" CACHE STRING "Atomic library" FORCE)
else()
set(ATOMICS_LIBRARIES "" CACHE STRING "Atomic operations library" FORCE)
endif()
break()
endif()
endforeach()
if (Atomics_FIND_REQUIRED AND NOT ATOMICS_FOUND)
message(FATAL_ERROR "Atomic operations library isn't found.")
endif()
unset(ATOMICS_LIBRARY)
unset(ATOMICS_LIBS)
unset(ATOMIC_CODE)
================================================
FILE: CMake/FindReadline.cmake
================================================
if (APPLE)
find_path(READLINE_INCLUDE_DIR readline/readline.h /opt/homebrew/opt/readline/include /usr/local/opt/readline/include /opt/local/include /opt/include /usr/local/include /usr/include NO_DEFAULT_PATH)
endif()
find_path(READLINE_INCLUDE_DIR readline/readline.h)
if (APPLE)
find_library(READLINE_LIBRARY readline /opt/homebrew/opt/readline/lib /usr/local/opt/readline/lib /opt/local/lib /opt/lib /usr/local/lib /usr/lib NO_DEFAULT_PATH)
endif()
find_library(READLINE_LIBRARY readline)
if (READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND NOT GNU_READLINE_FOUND)
set(CMAKE_REQUIRED_INCLUDES "${READLINE_INCLUDE_DIR}")
set(CMAKE_REQUIRED_LIBRARIES "${READLINE_LIBRARY}")
include(CheckCXXSourceCompiles)
unset(GNU_READLINE_FOUND CACHE)
check_cxx_source_compiles("#include <stdio.h>\n#include <readline/readline.h>\nint main() { rl_replace_line(\"\", 0); }" GNU_READLINE_FOUND)
if (NOT GNU_READLINE_FOUND)
unset(READLINE_INCLUDE_DIR CACHE)
unset(READLINE_LIBRARY CACHE)
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY)
mark_as_advanced(READLINE_INCLUDE_DIR READLINE_LIBRARY)
================================================
FILE: CMake/GeneratePkgConfig.cmake
================================================
function(get_relative_link OUTPUT PATH)
if (PATH MATCHES "^[$]<[$]<CONFIG:DEBUG>:")
set(${OUTPUT} "" PARENT_SCOPE)
return()
endif()
string(REGEX REPLACE "^[$]<[$]<NOT:[$]<CONFIG:DEBUG>>:(.*)>$" "\\1" PATH "${PATH}")
get_filename_component(NAME "${PATH}" NAME_WE)
if (IS_ABSOLUTE ${PATH})
get_filename_component(DIRECTORY_NAME "${PATH}" DIRECTORY)
if (WIN32)
set(${OUTPUT} "-l\"${DIRECTORY_NAME}/${NAME}\"" PARENT_SCOPE)
else()
get_filename_component(FULL_NAME "${PATH}" NAME)
set(${OUTPUT} "-L\"${DIRECTORY_NAME}\" -l:${FULL_NAME}" PARENT_SCOPE)
endif()
return()
endif()
if (NOT WIN32 AND NAME MATCHES "^lib")
string(REGEX REPLACE "^lib" "-l" LINK "${NAME}")
elseif (NAME MATCHES "^-")
set(LINK "${NAME}")
else()
string(CONCAT LINK "-l" "${NAME}")
endif()
set(${OUTPUT} "${LINK}" PARENT_SCOPE)
endfunction()
function(generate_pkgconfig TARGET DESCRIPTION)
# message("Generating pkg-config for ${TARGET}")
get_filename_component(PREFIX "${CMAKE_INSTALL_PREFIX}" REALPATH)
get_target_property(LIST "${TARGET}" LINK_LIBRARIES)
set(REQS "")
set(LIBS "")
foreach (LIB ${LIST})
if (TARGET "${LIB}")
set(HAS_REQS 1)
list(APPEND REQS "${LIB}")
else()
set(HAS_LIBS 1)
get_relative_link(LINK "${LIB}")
if (NOT LINK EQUAL "")
list(APPEND LIBS "${LINK}")
endif()
endif()
endforeach()
if (HAS_REQS)
set(REQUIRES "")
foreach (REQ ${REQS})
set(REQUIRES "${REQUIRES} ${REQ}")
endforeach()
set(REQUIRES "Requires.private:${REQUIRES}\n")
endif()
if (HAS_LIBS)
set(LIBRARIES "")
list(REVERSE LIBS)
list(REMOVE_DUPLICATES LIBS)
foreach (LIB ${LIBS})
set(LIBRARIES " ${LIB}${LIBRARIES}")
endforeach()
set(LIBRARIES "Libs.private:${LIBRARIES}\n")
endif()
if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
set(PKGCONFIG_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
else()
set(PKGCONFIG_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
endif()
if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
set(PKGCONFIG_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
else()
set(PKGCONFIG_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
endif()
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig")
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" CONTENT
"prefix=${PREFIX}
Name: ${TARGET}
Description: ${DESCRIPTION}
Version: ${PROJECT_VERSION}
CFlags: -I\"${PKGCONFIG_INCLUDEDIR}\"
Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET}
${REQUIRES}${LIBRARIES}")
get_target_property(LIBRARY_TYPE "${TARGET}" TYPE)
if (LIBRARY_TYPE STREQUAL "STATIC_LIBRARY" OR LIBRARY_TYPE STREQUAL "SHARED_LIBRARY")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
elseif (LIBRARY_TYPE STREQUAL "INTERFACE_LIBRARY")
# TODO: support interface libraries
else()
message(FATAL_ERROR "Don't know how to handle ${TARGET} of type ${LIBRARY_TYPE}")
endif()
endfunction()
================================================
FILE: CMake/GetGitRevisionDescription.cmake
================================================
# - Returns a version string from Git
#
# These functions force a re-configure on each git commit so that you can
# trust the values of the variables in your build system.
#
# get_git_head_revision(<refspecvar> <hashvar>)
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2020 Ryan Pavlik <ryan.pavlik@gmail.com> <abiryan@ryand.net>
# http://academic.cleardefinition.com
#
# Copyright 2009-2013, Iowa State University.
# Copyright 2013-2020, Ryan Pavlik
# Copyright 2013-2020, Contributors
# SPDX-License-Identifier: BSL-1.0
# 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)
if (__get_git_revision_description)
return()
endif()
set(__get_git_revision_description YES)
# We must run the following at "include" time, not at function call time,
# to find the path to this module rather than the path to a calling list file
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
# Function _git_find_closest_git_dir finds the next closest .git directory
# that is part of any directory in the path defined by _start_dir.
# The result is returned in the parent scope variable whose name is passed
# as variable _git_dir_var. If no .git directory can be found, the
# function returns an empty string via _git_dir_var.
#
# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and
# neither foo nor bar contain a file/directory .git. This will return
# C:/bla/.git
#
function(_git_find_closest_git_dir _start_dir _git_dir_var)
set(cur_dir "${_start_dir}")
set(git_dir "${_start_dir}/.git")
while (NOT EXISTS "${git_dir}")
# .git dir not found, search parent directories
set(git_previous_parent "${cur_dir}")
get_filename_component(cur_dir "${cur_dir}" DIRECTORY)
if (cur_dir STREQUAL git_previous_parent)
# We have reached the root directory, we are not in git
set(${_git_dir_var} "" PARENT_SCOPE)
return()
endif()
set(git_dir "${cur_dir}/.git")
endwhile()
set(${_git_dir_var} "${git_dir}" PARENT_SCOPE)
endfunction()
function(get_git_head_revision _refspecvar _hashvar)
_git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR)
if (NOT GIT_DIR STREQUAL "")
file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_CURRENT_SOURCE_DIR}" "${GIT_DIR}")
if (_relative_to_source_dir MATCHES "^[.][.]")
# We've gone above the CMake root dir.
set(GIT_DIR "")
endif()
endif()
if (GIT_DIR STREQUAL "")
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
return()
endif()
find_package(Git QUIET)
# Check if the current source dir is a git submodule or a worktree.
# In both cases .git is a file instead of a directory.
#
if ((NOT IS_DIRECTORY ${GIT_DIR}) AND Git_FOUND)
# The following git command will return a non empty string that
# points to the super project working tree if the current
# source dir is inside a git submodule.
# Otherwise, the command will return an empty string.
#
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse --show-superproject-working-tree
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_VARIABLE out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT out STREQUAL "")
# If out is non-empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule
file(READ ${GIT_DIR} submodule)
string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE ${submodule})
string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE)
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
else()
# GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree
file(READ ${GIT_DIR} worktree_ref)
# The .git directory contains a path to the worktree information directory
# inside the parent git repo of the worktree.
string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir ${worktree_ref})
string(STRIP ${git_worktree_dir} git_worktree_dir)
_git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR)
set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD")
endif()
else()
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
endif()
if (NOT EXISTS "${HEAD_SOURCE_FILE}")
return()
endif()
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
if (NOT EXISTS "${GIT_DATA}")
file(MAKE_DIRECTORY "${GIT_DATA}")
endif()
set(HEAD_FILE "${GIT_DATA}/HEAD")
configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY)
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" "${GIT_DATA}/grabRef.cmake" @ONLY)
include("${GIT_DATA}/grabRef.cmake")
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
endfunction()
================================================
FILE: CMake/GetGitRevisionDescription.cmake.in
================================================
#
# Internal file for GetGitRevisionDescription.cmake
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright 2009-2012, Iowa State University
# Copyright 2011-2015, Contributors
# 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)
# SPDX-License-Identifier: BSL-1.0
set(HEAD_HASH)
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
if (HEAD_CONTENTS MATCHES "ref")
# named branch
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
if (EXISTS "@GIT_DIR@/${HEAD_REF}")
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
else()
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
if (PACKED_REFS MATCHES "([0-9a-z]*) ${HEAD_REF}")
set(HEAD_HASH "${CMAKE_MATCH_1}")
endif()
endif()
else()
# detached HEAD
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
endif()
if (NOT HEAD_HASH)
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
endif()
================================================
FILE: CMake/PreventInSourceBuild.cmake
================================================
function(prevent_in_source_build)
get_filename_component(REAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" REALPATH)
get_filename_component(REAL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" REALPATH)
if (REAL_BINARY_DIR STREQUAL REAL_SOURCE_DIR)
message(" Out-of-source build must be used. Remove the files already")
message(" created by CMake and rerun CMake from a new directory:")
message(" rm -rf CMakeFiles CMakeCache.txt")
message(" mkdir build")
message(" cd build")
message(" cmake ..")
message(FATAL_ERROR "In-source build failed.")
endif()
endfunction()
================================================
FILE: CMake/TdSetUpCompiler.cmake
================================================
# Configures C++17 compiler, setting TDLib-specific compilation options.
function(td_set_up_compiler)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1 PARENT_SCOPE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON PARENT_SCOPE)
include(illumos)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(GCC 1)
set(GCC 1 PARENT_SCOPE)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CLANG 1)
set(CLANG 1 PARENT_SCOPE)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(INTEL 1)
set(INTEL 1 PARENT_SCOPE)
elseif (NOT MSVC)
message(FATAL_ERROR "Compiler isn't supported")
endif()
include(CheckCXXCompilerFlag)
if (GCC OR CLANG OR INTEL)
if (WIN32 AND INTEL)
set(STD17_FLAG /Qstd=c++17)
else()
set(STD17_FLAG -std=c++17)
endif()
if (GCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0))
message(FATAL_ERROR "No C++17 support in the compiler. Please upgrade the compiler to at least GCC 7.0.")
endif()
if (CLANG AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0))
message(FATAL_ERROR "No C++17 support in the compiler. Please upgrade the compiler to at least clang 5.0.")
endif()
check_cxx_compiler_flag(${STD17_FLAG} HAVE_STD17)
elseif (MSVC)
set(HAVE_STD17 MSVC_VERSION>=1914) # MSVC 2017 version 15.7
endif()
if (NOT HAVE_STD17)
message(FATAL_ERROR "No C++17 support in the compiler. Please upgrade the compiler.")
endif()
if (MSVC)
if (CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()
add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17 /utf-8 /GR- /W4 /wd4100 /wd4127 /wd4324 /wd4505 /wd4814 /wd4702 /bigobj")
elseif (CLANG OR GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STD17_FLAG} -fno-omit-frame-pointer -fno-exceptions -fno-rtti")
if (APPLE)
set(TD_LINKER_FLAGS "-Wl,-dead_strip")
if (NOT CMAKE_BUILD_TYPE MATCHES "Deb")
set(TD_LINKER_FLAGS "${TD_LINKER_FLAGS},-x,-S")
endif()
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")
if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
set(TD_LINKER_FLAGS "-Wl,-z,ignore")
elseif (EMSCRIPTEN)
set(TD_LINKER_FLAGS "-Wl,--gc-sections")
elseif (ANDROID)
set(TD_LINKER_FLAGS "-Wl,--gc-sections -Wl,--exclude-libs,ALL -Wl,--icf=safe")
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
# Enable 16 KB ELF alignment
set(TD_LINKER_FLAGS "${TD_LINKER_FLAGS} -Wl,-z,max-page-size=16384")
endif()
else()
set(TD_LINKER_FLAGS "-Wl,--gc-sections -Wl,--exclude-libs,ALL")
endif()
endif()
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${TD_LINKER_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TD_LINKER_FLAGS}")
if (WIN32 OR CYGWIN)
if (GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj")
endif()
endif()
elseif (INTEL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STD17_FLAG}")
endif()
if (WIN32)
add_definitions(-DNTDDI_VERSION=0x06020000 -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DPSAPI_VERSION=1 -DNOMINMAX -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN)
endif()
if (CYGWIN)
add_definitions(-D_DEFAULT_SOURCE=1 -DFD_SETSIZE=4096)
endif()
# _FILE_OFFSET_BITS is broken in Android NDK r15, r15b and r17 and doesn't work prior to Android 7.0
add_definitions(-D_FILE_OFFSET_BITS=64)
# _GNU_SOURCE might not be defined by g++
add_definitions(-D_GNU_SOURCE)
if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lsocket -lnsl")
if (ILLUMOS)
add_definitions(-DTD_ILLUMOS=1)
endif()
endif()
include(AddCXXCompilerFlag)
if (NOT MSVC)
add_cxx_compiler_flag("-Wall")
add_cxx_compiler_flag("-Wextra")
# add_cxx_compiler_flag("-Werror")
add_cxx_compiler_flag("-flto-odr-type-merging")
add_cxx_compiler_flag("-Qunused-arguments")
add_cxx_compiler_flag("-Walloc-zero")
add_cxx_compiler_flag("-Wc++17-compat-pedantic")
add_cxx_compiler_flag("-Wcast-qual")
add_cxx_compiler_flag("-Wconversion")
add_cxx_compiler_flag("-Wdeprecated")
add_cxx_compiler_flag("-Wduplicated-branches")
add_cxx_compiler_flag("-Wduplicated-cond")
add_cxx_compiler_flag("-Wimplicit-fallthrough=2")
add_cxx_compiler_flag("-Wlogical-op")
add_cxx_compiler_flag("-Wno-psabi")
add_cxx_compiler_flag("-Wno-sign-conversion")
add_cxx_compiler_flag("-Wno-tautological-compare")
add_cxx_compiler_flag("-Wno-unknown-warning-option")
add_cxx_compiler_flag("-Wno-unused-command-line-argument")
add_cxx_compiler_flag("-Wno-unused-parameter")
add_cxx_compiler_flag("-Wnon-virtual-dtor")
add_cxx_compiler_flag("-Wodr")
add_cxx_compiler_flag("-Wpointer-arith")
add_cxx_compiler_flag("-Wsign-compare")
add_cxx_compiler_flag("-Wunused-member-function")
add_cxx_compiler_flag("-Wunused-private-field")
add_cxx_compiler_flag("-Wvla")
# add_cxx_compiler_flag("-Wcast-align")
#std::int32_t <-> int and off_t <-> std::size_t/std::int64_t
# add_cxx_compiler_flag("-Wuseless-cast")
#external headers like openssl
# add_cxx_compiler_flag("-Wzero-as-null-pointer-constant")
endif()
if (GCC)
add_cxx_compiler_flag("-Wno-maybe-uninitialized") # too many false positives
endif()
if (WIN32 AND GCC AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0))
# warns about casts of function pointers returned by GetProcAddress
add_cxx_compiler_flag("-Wno-cast-function-type")
endif()
if (GCC AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0))
# warns about a lot of "return std::move", which are not redundant for compilers without proper fix for DR 1579, i.e. GCC 8
# see http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1579
# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80452
add_cxx_compiler_flag("-Wno-redundant-move")
endif()
if (GCC)
add_cxx_compiler_flag("-Wno-stringop-overflow") # some false positives
endif()
if (GCC AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0))
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104030
add_cxx_compiler_flag("-Wbidi-chars=none")
add_cxx_compiler_flag("-Wno-bidirectional")
endif()
if (MINGW)
add_cxx_compiler_flag("-ftrack-macro-expansion=0")
endif()
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem /usr/include/c++/v1")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" PARENT_SCOPE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" PARENT_SCOPE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" PARENT_SCOPE)
endfunction()
================================================
FILE: CMake/iOS.cmake
================================================
# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake
# files which are included with CMake 2.8.4
# It has been altered for iOS development
# Options:
#
# IOS_PLATFORM = OS (default) or SIMULATOR
# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch.
#
# IOS_ARCH = automatic(default) or "arch1;arch2" (e.q. "x86_64;arm64")
# By default this value will be automatically chosen based on the IOS_PLATFORM value above.
# If set manually, it will override the default and force to build those architectures only.
#
# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder
# By default this location is automatically chosen based on the IOS_PLATFORM value above.
# If set manually, it will override the default location and force the user of a particular Developer Platform
#
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
# By default this location is automatically chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
# If set manually, this will force the use of a specific SDK version
# Macros:
#
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE)
# A convenience macro for setting xcode specific properties on targets
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1")
#
# find_host_package (PROGRAM ARGS)
# A macro used to find executable programs on the host system, not within the iOS environment.
# Thanks to the android-cmake project for providing the command
# Standard settings
set (CMAKE_SYSTEM_NAME Darwin)
set (CMAKE_SYSTEM_VERSION 1)
set (UNIX True)
set (APPLE True)
set (IOS True)
# Required as of cmake 2.8.10
set (CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force unset of the deployment target for iOS" FORCE)
# Determine the cmake host system version so we know where to find the iOS SDKs
find_program (CMAKE_UNAME uname /bin /usr/bin /usr/local/bin)
if (CMAKE_UNAME)
execute_process(COMMAND uname -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
string (REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
endif (CMAKE_UNAME)
# Force the compilers to gcc for iOS
set (CMAKE_C_COMPILER /usr/bin/gcc)
set (CMAKE_CXX_COMPILER /usr/bin/g++)
set (CMAKE_AR ar CACHE FILEPATH "" FORCE)
set (CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
set (PKG_CONFIG_EXECUTABLE pkg-config CACHE FILEPATH "" FORCE)
# Setup iOS platform unless specified manually with IOS_PLATFORM
if (NOT DEFINED IOS_PLATFORM)
set (IOS_PLATFORM "OS")
endif (NOT DEFINED IOS_PLATFORM)
set (IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
# Check the platform selection and setup for developer root
if (IOS_PLATFORM STREQUAL "OS")
set (IOS_PLATFORM_LOCATION "iPhoneOS.platform")
set (XCODE_IOS_PLATFORM ios)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos")
set (APPLE_IOS True)
elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
set (SIMULATOR_FLAG true)
set (IOS_PLATFORM_LOCATION "iPhoneSimulator.platform")
set (XCODE_IOS_PLATFORM ios-simulator)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator")
set (APPLE_IOS True)
elseif (IOS_PLATFORM STREQUAL "WATCHOS")
set (IOS_PLATFORM_LOCATION "WatchOS.platform")
set (XCODE_IOS_PLATFORM watchos)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-watchos")
set (APPLE_WATCH True)
elseif (IOS_PLATFORM STREQUAL "WATCHSIMULATOR")
set (SIMULATOR_FLAG true)
set (IOS_PLATFORM_LOCATION "WatchSimulator.platform")
set (XCODE_IOS_PLATFORM watchos-simulator)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-watchsimulator")
set (APPLE_WATCH True)
elseif (IOS_PLATFORM STREQUAL "TVOS")
set (IOS_PLATFORM_LOCATION "AppleTvOS.platform")
set (XCODE_IOS_PLATFORM tvos)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-appletvos")
set (APPLE_TV True)
elseif (IOS_PLATFORM STREQUAL "TVSIMULATOR")
set (SIMULATOR_FLAG true)
set (IOS_PLATFORM_LOCATION "AppleTvSimulator.platform")
set (XCODE_IOS_PLATFORM tvos-simulator)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-tvsimulator")
set (APPLE_TV True)
elseif (IOS_PLATFORM STREQUAL "VISIONOS")
set (IOS_PLATFORM_LOCATION "XROS.platform")
set (XCODE_IOS_PLATFORM xros)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-xros")
set (APPLE_VISION True)
elseif (IOS_PLATFORM STREQUAL "VISIONSIMULATOR")
set (SIMULATOR_FLAG true)
set (IOS_PLATFORM_LOCATION "XRSimulator.platform")
set (XCODE_IOS_PLATFORM xros-simulator)
# This causes the installers to properly locate the output libraries
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-xrsimulator")
set (APPLE_VISION True)
else (IOS_PLATFORM STREQUAL "OS")
message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected. Please choose OS, SIMULATOR, or WATCHOS.")
endif ()
# All iOS/Darwin specific settings - some may be redundant
set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
set (CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
set (CMAKE_SHARED_MODULE_PREFIX "lib")
set (CMAKE_SHARED_MODULE_SUFFIX ".so")
set (CMAKE_MODULE_EXISTS 1)
set (CMAKE_DL_LIBS "")
set (CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
set (CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
set (CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
if (IOS_DEPLOYMENT_TARGET)
set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
endif()
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fapplication-extension")
set (CMAKE_C_FLAGS_INIT "${XCODE_IOS_PLATFORM_VERSION_FLAGS}")
# Hidden visibility is required for cxx on iOS
set (CMAKE_CXX_FLAGS_INIT "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fvisibility-inlines-hidden")
set (CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fapplication-extension -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
set (CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fapplication-extension -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
set (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
set (CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
set (CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
set (CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
# Setup iOS deployment target
set (IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET} CACHE STRING "Minimum iOS version")
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
# Note Xcode 4.3 changed the installation location, choose the most recent one available
execute_process(COMMAND /usr/bin/xcode-select -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
set (XCODE_POST_43_ROOT "${CMAKE_XCODE_DEVELOPER_DIR}/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
set (XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
if (EXISTS ${XCODE_POST_43_ROOT})
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT})
elseif (EXISTS ${XCODE_PRE_43_ROOT})
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT})
endif (EXISTS ${XCODE_POST_43_ROOT})
endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
set (CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform")
# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT
if (NOT DEFINED CMAKE_IOS_SDK_ROOT)
file (GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*")
if (_CMAKE_IOS_SDKS)
list (SORT _CMAKE_IOS_SDKS)
list (REVERSE _CMAKE_IOS_SDKS)
list (GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT)
else (_CMAKE_IOS_SDKS)
message (FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.")
endif (_CMAKE_IOS_SDKS)
message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
endif (NOT DEFINED CMAKE_IOS_SDK_ROOT)
set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
# Set the sysroot default to the most recent SDK
set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
# Set the architectures unless specified manually with IOS_ARCH
if (NOT DEFINED IOS_ARCH)
if (IOS_PLATFORM STREQUAL "OS")
set (IOS_ARCH "arm64")
elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
set (IOS_ARCH "x86_64;arm64")
elseif (IOS_PLATFORM STREQUAL "WATCHOS")
set (IOS_ARCH "armv7k;arm64_32;arm64")
# Include C++ Standard Library for Xcode 15 builds.
include_directories(SYSTEM "${CMAKE_IOS_SDK_ROOT}/usr/include/c++/v1")
elseif (IOS_PLATFORM STREQUAL "WATCHSIMULATOR")
set (IOS_ARCH "x86_64;arm64")
# Include C++ Standard Library for Xcode 15 builds.
include_directories(SYSTEM "${CMAKE_IOS_SDK_ROOT}/usr/include/c++/v1")
elseif (IOS_PLATFORM STREQUAL "TVOS")
set (IOS_ARCH "arm64")
elseif (IOS_PLATFORM STREQUAL "TVSIMULATOR")
set (IOS_ARCH "x86_64;arm64")
elseif (IOS_PLATFORM STREQUAL "VISIONOS")
set (IOS_ARCH "arm64")
elseif (IOS_PLATFORM STREQUAL "VISIONSIMULATOR")
set (IOS_ARCH "x86_64;arm64")
endif()
endif()
message (STATUS "The iOS architectures: ${IOS_ARCH}")
set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
# Set the find root to the iOS developer roots and to user defined paths
set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root")
# default to searching for frameworks first
set (CMAKE_FIND_FRAMEWORK FIRST)
# set up the default search directories for frameworks
set (CMAKE_SYSTEM_FRAMEWORK_PATH
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
)
# only search the iOS sdks, not the remainder of the host filesystem
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# This little macro lets you set any Xcode specific property
macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE})
endmacro (set_xcode_property)
# This macro lets you find executable programs on the host system
macro (find_host_package)
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
set (IOS FALSE)
find_package(${ARGN})
set (IOS TRUE)
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endmacro (find_host_package)
================================================
FILE: CMake/illumos.cmake
================================================
if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
#
# Determine if the host is running an illumos distribution:
#
execute_process(COMMAND /usr/bin/uname -o OUTPUT_VARIABLE UNAME_O OUTPUT_STRIP_TRAILING_WHITESPACE)
if (UNAME_O STREQUAL "illumos")
set(ILLUMOS 1)
endif()
endif()
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(TDLib VERSION 1.8.62 LANGUAGES CXX C)
if (NOT DEFINED CMAKE_MODULE_PATH)
set(CMAKE_MODULE_PATH "")
endif()
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" "${CMAKE_MODULE_PATH}")
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(CMAKE_INSTALL_LIBDIR "lib")
endif()
if (NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin")
endif()
if (NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include")
endif()
if (POLICY CMP0074)
# use environment variables to find libraries
cmake_policy(SET CMP0074 NEW)
endif()
include(PreventInSourceBuild)
prevent_in_source_build()
option(TD_INSTALL_STATIC_LIBRARIES "Enable installation of static libraries." ON)
option(TD_INSTALL_SHARED_LIBRARIES "Enable installation of shared libraries." ON)
option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
option(TD_ENABLE_DOTNET "Use \"ON\" or \"CX\" to enable generation of C++/CLI or C++/CX TDLib API bindings respectively.")
if (NOT CMAKE_CROSSCOMPILING)
option(TD_GENERATE_SOURCE_FILES "Use \"ON\" to just generate TDLib source files.")
endif()
option(TD_E2E_ONLY "Use \"ON\" to build and install tde2e instead of TDLib.")
include(CTest)
option(TD_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.")
if (TD_ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_SUPPORTED)
if (IPO_SUPPORTED)
# set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) do not work?
string(REPLACE ";" " " CXX_FLAGS_IPO "${CMAKE_CXX_COMPILE_OPTIONS_IPO}")
message(STATUS "Use link time optimization CXX options: ${CXX_FLAGS_IPO}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAGS_IPO}")
string(REPLACE ";" " " C_FLAGS_IPO "${CMAKE_C_COMPILE_OPTIONS_IPO}")
message(STATUS "Use link time optimization C options: ${C_FLAGS_IPO}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_IPO}")
string(REPLACE ";" " " LINK_FLAGS_IPO "${CMAKE_CXX_LINK_OPTIONS_IPO}")
message(STATUS "Use link time optimization linker options: ${LINK_FLAGS_IPO}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_FLAGS_IPO}")
endif()
endif()
# Configure Ccache if available
find_program(CCACHE_FOUND ccache)
#set(CCACHE_FOUND 0)
if (CCACHE_FOUND)
message(STATUS "Found ccache")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
else()
message(STATUS "Could NOT find ccache (this is NOT an error)")
endif()
set(MEMPROF "" CACHE STRING "Use one of \"ON\", \"FAST\" or \"SAFE\" to enable memory profiling. \
Works under macOS and Linux when compiled using glibc. \
In FAST mode stack is unwinded only using frame pointers, which may fail. \
In SAFE mode stack is unwinded using backtrace function from execinfo.h, which may be very slow. \
By default both methods are used to achieve the maximum speed and accuracy")
if (EMSCRIPTEN)
# use prebuilt zlib
set(ZLIB_FOUND 1)
set(ZLIB_LIBRARIES)
set(ZLIB_INCLUDE_DIR)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s MEMFS_APPEND_TO_TYPED_ARRAYS=1 -s USE_ZLIB=1 -s MODULARIZE=1 \
-s EXPORT_NAME=\"'createTdwebModule'\" -s WEBSOCKET_URL=\"'wss:#'\" -s EXPORTED_RUNTIME_METHODS=\"['FS','cwrap']\" -lidbfs.js -lworkerfs.js")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -s MEMFS_APPEND_TO_TYPED_ARRAYS=1 -s USE_ZLIB=1 -s MODULARIZE=1 \
-s EXPORT_NAME=\"'createTdwebModule'\" -s WEBSOCKET_URL=\"'wss:#'\" -s EXPORTED_RUNTIME_METHODS=\"['FS','cwrap']\" -lidbfs.js -lworkerfs.js")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -s DEMANGLE_SUPPORT=1 -s ASSERTIONS=1")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -s DEMANGLE_SUPPORT=1 -s ASSERTIONS=1")
set(TD_EMSCRIPTEN td_wasm)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1 --post-js ${CMAKE_CURRENT_SOURCE_DIR}/post.js")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1")
endif()
if (NOT TD_GENERATE_SOURCE_FILES)
if (NOT OPENSSL_FOUND)
find_package(OpenSSL)
endif()
if (OPENSSL_FOUND)
message(STATUS "Found OpenSSL: ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
endif()
endif()
set(CMAKE_THREAD_PREFER_PTHREAD ON)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
if (THREADS_HAVE_PTHREAD_ARG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
endif()
include(TdSetUpCompiler)
td_set_up_compiler()
if (MSVC)
option(TD_ENABLE_MULTI_PROCESSOR_COMPILATION "Use \"ON\" to enable multi-processor compilation.")
if (TD_ENABLE_MULTI_PROCESSOR_COMPILATION)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
endif()
# https://github.com/tdlib/td/issues/2912
# https://github.com/tdlib/td/issues/3202
add_definitions(-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
endif()
if (CLANG OR GCC)
if (MEMPROF)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-no-pie CXX_NO_PIE_FLAG)
if (CXX_NO_PIE_FLAG)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie")
elseif (APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie")
endif()
include(AddCXXCompilerFlag)
add_cxx_compiler_flag("-static-libstdc++")
add_cxx_compiler_flag("-static-libgcc")
endif()
endif()
include(GetGitRevisionDescription)
get_git_head_revision(TD_GIT_REFSPEC TD_GIT_COMMIT_HASH)
message(STATUS "Git state: ${TD_GIT_COMMIT_HASH}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/td/telegram/GitCommitHash.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/td/telegram/GitCommitHash.cpp" @ONLY)
add_subdirectory(tdtl)
if (TD_GENERATE_SOURCE_FILES)
set(TDUTILS_MIME_TYPE ON CACHE BOOL "" FORCE)
set(TDUTILS_USE_EXTERNAL_DEPENDENCIES OFF CACHE BOOL "" FORCE)
endif()
set(TDUTILS_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
add_subdirectory(tdutils)
add_subdirectory(td/generate)
if (NOT CMAKE_CROSSCOMPILING)
set(TD_ALWAYS_GENERATE_SOURCE "")
if (TD_GENERATE_SOURCE_FILES)
set(TD_ALWAYS_GENERATE_SOURCE "ALL")
endif()
add_custom_target(prepare_cross_compiling ${TD_ALWAYS_GENERATE_SOURCE} DEPENDS tl_generate_mtproto tl_generate_common tdmime_auto tl_generate_json)
if (TD_ENABLE_DOTNET)
add_dependencies(prepare_cross_compiling generate_dotnet_api)
endif()
endif()
if (NOT OPENSSL_FOUND OR TD_GENERATE_SOURCE_FILES)
if (NOT TD_GENERATE_SOURCE_FILES)
message(WARNING "Can't find OpenSSL: stop building")
endif()
return()
endif()
if (NOT ZLIB_FOUND)
find_package(ZLIB)
endif()
if (NOT ZLIB_FOUND)
message(WARNING "Can't find zlib: stop building")
return()
endif()
set(TDE2E_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
set(TDE2E_INSTALL_INCLUDES ${TD_E2E_ONLY} CACHE BOOL "" FORCE)
add_subdirectory(tde2e)
if (TD_E2E_ONLY)
if (TD_INSTALL_STATIC_LIBRARIES)
include(GeneratePkgConfig)
generate_pkgconfig(tdutils "Telegram Library - Utils")
generate_pkgconfig(tde2e "Telegram Library - E2E")
install(EXPORT TdStaticTargets
FILE tde2eStaticTargets.cmake
NAMESPACE tde2e::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/tde2e"
)
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfig.cmake" "include(\"\${CMAKE_CURRENT_LIST_DIR}/tde2eStaticTargets.cmake\")\n")
include(CMakePackageConfigHelpers)
write_basic_package_version_file("tde2eConfigVersion.cmake"
VERSION "${TDLib_VERSION}"
COMPATIBILITY ExactVersion
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/tde2e"
)
return()
endif()
if (NOT TDUTILS_MIME_TYPE OR NOT TDUTILS_USE_EXTERNAL_DEPENDENCIES)
message(WARNING "Option TDUTILS_MIME_TYPE and TDUTILS_USE_EXTERNAL_DEPENDENCIES must not be disabled: stop TDLib building")
return()
endif()
set(TDACTOR_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
add_subdirectory(tdactor)
set(TDNET_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
add_subdirectory(tdnet)
set(TDSQLITE_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
add_subdirectory(sqlite)
set(TDDB_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
add_subdirectory(tddb)
if (BUILD_TESTING)
add_subdirectory(test)
endif()
if (NOT CMAKE_CROSSCOMPILING)
add_subdirectory(benchmark)
endif()
get_directory_property(HAS_PARENT PARENT_DIRECTORY)
if (HAS_PARENT)
set(TL_TD_JSON_AUTO ${TL_TD_JSON_AUTO_SOURCE} PARENT_SCOPE) # used in tdbot
set(TD_TEST_SOURCE ${TD_TEST_SOURCE} PARENT_SCOPE) # used to build tests
endif()
# SOURCE SETS
set_source_files_properties(${TL_TD_API_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
if (TD_ENABLE_JNI OR ANDROID)
set(TL_JNI_OBJECT_SOURCE
td/tl/tl_jni_object.cpp
td/tl/tl_jni_object.h
)
else()
set(TL_JNI_OBJECT_SOURCE)
endif()
set(TL_TD_API_SOURCE
${TL_TD_API_AUTO_SOURCE}
${TL_JNI_OBJECT_SOURCE}
td/tl/TlObject.h
)
set_source_files_properties(${TL_MTPROTO_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
set_source_files_properties(${TL_TD_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
set_source_files_properties(${TL_TD_JSON_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
set(TL_TD_JSON_SOURCE
${TL_TD_JSON_AUTO_SOURCE}
td/tl/tl_json.h
)
set_source_files_properties(${TL_C_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
set(TL_C_SCHEME_SOURCE
${TL_C_AUTO_SOURCE}
)
set_source_files_properties(${TL_DOTNET_AUTO_SOURCE} PROPERTIES GENERATED TRUE)
set(TL_DOTNET_SCHEME_SOURCE
${TL_DOTNET_AUTO_SOURCE}
td/tl/tl_dotnet_object.h
)
set(TD_MTPROTO_SOURCE
td/mtproto/AuthData.cpp
td/mtproto/ConnectionManager.cpp
td/mtproto/DhHandshake.cpp
td/mtproto/Handshake.cpp
td/mtproto/HandshakeActor.cpp
td/mtproto/HttpTransport.cpp
td/mtproto/IStreamTransport.cpp
td/mtproto/KDF.cpp
td/mtproto/Ping.cpp
td/mtproto/PingConnection.cpp
td/mtproto/ProxySecret.cpp
td/mtproto/RawConnection.cpp
td/mtproto/RSA.cpp
td/mtproto/SessionConnection.cpp
td/mtproto/TcpTransport.cpp
td/mtproto/TlsInit.cpp
td/mtproto/TlsReaderByteFlow.cpp
td/mtproto/Transport.cpp
td/mtproto/utils.cpp
td/mtproto/AuthData.h
td/mtproto/AuthKey.h
td/mtproto/ConnectionManager.h
td/mtproto/CryptoStorer.h
td/mtproto/DhCallback.h
td/mtproto/DhHandshake.h
td/mtproto/Handshake.h
td/mtproto/HandshakeActor.h
td/mtproto/HandshakeConnection.h
td/mtproto/HttpTransport.h
td/mtproto/IStreamTransport.h
td/mtproto/KDF.h
td/mtproto/MessageId.h
td/mtproto/MtprotoQuery.h
td/mtproto/NoCryptoStorer.h
td/mtproto/PacketInfo.h
td/mtproto/PacketStorer.h
td/mtproto/Ping.h
td/mtproto/PingConnection.h
td/mtproto/ProxySecret.h
td/mtproto/RawConnection.h
td/mtproto/RSA.h
td/mtproto/SessionConnection.h
td/mtproto/TcpTransport.h
td/mtproto/TlsInit.h
td/mtproto/TlsReaderByteFlow.h
td/mtproto/Transport.h
td/mtproto/TransportType.h
td/mtproto/utils.h
${TL_MTPROTO_AUTO_SOURCE}
td/tl/TlObject.h
td/tl/tl_object_parse.h
td/tl/tl_object_store.h
)
set(TDLIB_SOURCE_PART1
td/telegram/AccountManager.cpp
td/telegram/ActiveStoryState.cpp
td/telegram/AffiliateType.cpp
td/telegram/AgeVerificationParameters.cpp
td/telegram/AlarmManager.cpp
td/telegram/AnimationsManager.cpp
td/telegram/Application.cpp
td/telegram/AttachMenuManager.cpp
td/telegram/AuctionBidLevel.cpp
td/telegram/AudiosManager.cpp
td/telegram/AuthManager.cpp
td/telegram/AutoDownloadSettings.cpp
td/telegram/AutosaveManager.cpp
td/telegram/BackgroundInfo.cpp
td/telegram/BackgroundManager.cpp
td/telegram/BackgroundType.cpp
td/telegram/BaseTheme.cpp
td/telegram/Birthdate.cpp
td/telegram/BoostManager.cpp
td/telegram/BotCommand.cpp
td/telegram/BotCommandScope.cpp
td/telegram/BotInfoManager.cpp
td/telegram/BotMenuButton.cpp
td/telegram/BotQueries.cpp
td/telegram/BotRecommendationManager.cpp
td/telegram/BotVerification.cpp
td/telegram/BotVerifierSettings.cpp
td/telegram/BusinessAwayMessage.cpp
td/telegram/BusinessAwayMessageSchedule.cpp
td/telegram/BusinessBotManageBar.cpp
td/telegram/BusinessBotRights.cpp
td/telegram/BusinessChatLink.cpp
td/telegram/BusinessConnectedBot.cpp
td/telegram/BusinessConnectionManager.cpp
td/telegram/BusinessGreetingMessage.cpp
td/telegram/BusinessInfo.cpp
td/telegram/BusinessIntro.cpp
td/telegram/BusinessManager.cpp
td/telegram/BusinessRecipients.cpp
td/telegram/BusinessWorkHours.cpp
td/telegram/CallActor.cpp
td/telegram/CallbackQueriesManager.cpp
td/telegram/CallDiscardReason.cpp
td/telegram/CallManager.cpp
td/telegram/ChannelParticipantFilter.cpp
td/telegram/ChannelRecommendationManager.cpp
td/telegram/ChatManager.cpp
td/telegram/ChatReactions.cpp
td/telegram/ChatTheme.cpp
td/telegram/ClientActor.cpp
td/telegram/CommonDialogManager.cpp
td/telegram/ConfigManager.cpp
td/telegram/ConnectionState.cpp
td/telegram/ConnectionStateManager.cpp
td/telegram/Contact.cpp
td/telegram/CountryInfoManager.cpp
td/telegram/CurrencyAmount.cpp
td/telegram/DelayDispatcher.cpp
td/telegram/Dependencies.cpp
td/telegram/DeviceTokenManager.cpp
td/telegram/DhCache.cpp
td/telegram/DialogAction.cpp
td/telegram/DialogActionBar.cpp
td/telegram/DialogActionManager.cpp
td/telegram/DialogAdministrator.cpp
td/telegram/DialogDb.cpp
td/telegram/DialogEventLog.cpp
td/telegram/DialogFilter.cpp
td/telegram/DialogFilterInviteLink.cpp
td/telegram/DialogFilterManager.cpp
td/telegram/DialogId.cpp
td/telegram/DialogInviteLink.cpp
td/telegram/DialogInviteLinkManager.cpp
td/telegram/DialogListId.cpp
td/telegram/DialogLocation.cpp
td/telegram/DialogManager.cpp
td/telegram/DialogNotificationSettings.cpp
td/telegram/DialogParticipant.cpp
td/telegram/DialogParticipantFilter.cpp
td/telegram/DialogParticipantManager.cpp
td/telegram/DialogPhoto.cpp
td/telegram/DialogSource.cpp
td/telegram/Dimensions.cpp
td/telegram/DisallowedGiftsSettings.cpp
td/telegram/Document.cpp
td/telegram/DocumentsManager.cpp
td/telegram/DownloadManager.cpp
td/telegram/DownloadManagerCallback.cpp
td/telegram/DraftMessage.cpp
td/telegram/EmailVerification.cpp
td/telegram/EmojiGameInfo.cpp
td/telegram/EmojiGroup.cpp
td/telegram/EmojiGroupType.cpp
td/telegram/EmojiStatus.cpp
td/telegram/FactCheck.cpp
td/telegram/FileReferenceManager.cpp
td/telegram/files/FileBitmask.cpp
td/telegram/files/FileDb.cpp
td/telegram/files/FileDownloader.cpp
td/telegram/files/FileDownloadManager.cpp
td/telegram/files/FileEncryptionKey.cpp
td/telegram/files/FileFromBytes.cpp
td/telegram/files/FileGcParameters.cpp
td/telegram/files/FileGcWorker.cpp
td/telegram/files/FileGenerateManager.cpp
td/telegram/files/FileHashUploader.cpp
td/telegram/files/FileLoaderUtils.cpp
td/telegram/files/FileLoadManager.cpp
td/telegram/files/FileManager.cpp
td/telegram/files/FileStats.cpp
td/telegram/files/FileStatsWorker.cpp
td/telegram/files/FileType.cpp
td/telegram/files/FileUploader.cpp
td/telegram/files/FileUploadManager.cpp
td/telegram/files/PartsManager.cpp
td/telegram/files/ResourceManager.cpp
td/telegram/files/ResourceState.cpp
td/telegram/ForumTopic.cpp
td/telegram/ForumTopicEditedData.cpp
td/telegram/ForumTopicIcon.cpp
td/telegram/ForumTopicInfo.cpp
td/telegram/ForumTopicManager.cpp
td/telegram/Game.cpp
td/telegram/GameManager.cpp
td/telegram/GiveawayParameters.cpp
td/telegram/Global.cpp
td/telegram/GlobalPrivacySettings.cpp
td/telegram/GroupCallJoinParameters.cpp
td/telegram/GroupCallManager.cpp
td/telegram/GroupCallMessage.cpp
td/telegram/GroupCallMessageLimit.cpp
td/telegram/GroupCallParticipant.cpp
td/telegram/GroupCallParticipantOrder.cpp
td/telegram/GroupCallVideoPayload.cpp
td/telegram/HashtagHints.cpp
td/telegram/InlineMessageManager.cpp
td/telegram/InlineQueriesManager.cpp
td/telegram/InputBusinessChatLink.cpp
td/telegram/InputCallId.cpp
td/telegram/InputDialogId.cpp
td/telegram/InputGroupCall.cpp
td/telegram/InputGroupCallId.cpp
td/telegram/InputInvoice.cpp
td/telegram/InputMessageText.cpp
td/telegram/JsonValue.cpp
td/telegram/KeyboardButtonStyle.cpp
td/telegram/LanguagePackManager.cpp
td/telegram/LinkManager.cpp
td/telegram/Location.cpp
td/telegram/logevent/LogEventHelper.cpp
td/telegram/Logging.cpp
td/telegram/MediaArea.cpp
td/telegram/MediaAreaCoordinates.cpp
td/telegram/MessageContent.cpp
td/telegram/MessageContentType.cpp
td/telegram/MessageCopyOptions.cpp
td/telegram/MessageCover.cpp
td/telegram/MessageDb.cpp
td/telegram/MessageEntity.cpp
td/telegram/MessageExtendedMedia.cpp
td/telegram/MessageForwardInfo.cpp
td/telegram/MessageId.cpp
td/telegram/MessageImportManager.cpp
td/telegram/MessageInputReplyTo.cpp
td/telegram/MessageOrigin.cpp
td/telegram/MessageQueryManager.cpp
td/telegram/MessageQuote.cpp
td/telegram/MessageReaction.cpp
td/telegram/MessageReactor.cpp
td/telegram/MessageReplyHeader.cpp
td/telegram/MessageReplyInfo.cpp
td/telegram/MessageSearchFilter.cpp
td/telegram/MessageSearchOffset.cpp
td/telegram/MessageSelfDestructType.cpp
td/telegram/MessageSender.cpp
td/telegram/MessageSendOptions.cpp
td/telegram/MessagesInfo.cpp
td/telegram/MessagesManager.cpp
td/telegram/MessageSource.cpp
td/telegram/MessageThreadDb.cpp
td/telegram/MessageTopic.cpp
td/telegram/MessageTtl.cpp
td/telegram/MessageViewer.cpp
td/telegram/misc.cpp
td/telegram/MissingInvitee.cpp
)
set(TDLIB_SOURCE_PART2
td/telegram/net/AuthDataShared.cpp
td/telegram/net/ConnectionCreator.cpp
td/telegram/net/DcAuthManager.cpp
td/telegram/net/DcOptionsSet.cpp
td/telegram/net/MtprotoHeader.cpp
td/telegram/net/NetActor.cpp
td/telegram/net/NetQuery.cpp
td/telegram/net/NetQueryCreator.cpp
td/telegram/net/NetQueryDelayer.cpp
td/telegram/net/NetQueryDispatcher.cpp
td/telegram/net/NetQueryStats.cpp
td/telegram/net/NetQueryVerifier.cpp
td/telegram/net/NetStatsManager.cpp
td/telegram/net/Proxy.cpp
td/telegram/net/ProxyChecker.cpp
td/telegram/net/PublicRsaKeySharedCdn.cpp
td/telegram/net/PublicRsaKeySharedMain.cpp
td/telegram/net/PublicRsaKeyWatchdog.cpp
td/telegram/net/Session.cpp
td/telegram/net/SessionMultiProxy.cpp
td/telegram/net/SessionProxy.cpp
td/telegram/NewPasswordState.cpp
td/telegram/NotificationGroupInfo.cpp
td/telegram/NotificationGroupType.cpp
td/telegram/NotificationManager.cpp
td/telegram/NotificationSettingsManager.cpp
td/telegram/NotificationSettingsScope.cpp
td/telegram/NotificationSound.cpp
td/telegram/NotificationType.cpp
td/telegram/OnlineManager.cpp
td/telegram/OptionManager.cpp
td/telegram/OrderedMessage.cpp
td/telegram/OrderInfo.cpp
td/telegram/Outline.cpp
td/telegram/PaidReactionType.cpp
td/telegram/Passkey.cpp
td/telegram/PasswordManager.cpp
td/telegram/Payments.cpp
td/telegram/PeerColor.cpp
td/telegram/PeerColorCollectible.cpp
td/telegram/PeopleNearbyManager.cpp
td/telegram/PhoneNumberManager.cpp
td/telegram/Photo.cpp
td/telegram/PhotoSize.cpp
td/telegram/PhotoSizeSource.cpp
td/telegram/PollManager.cpp
td/telegram/Premium.cpp
td/telegram/PremiumGiftOption.cpp
td/telegram/PrivacyManager.cpp
td/telegram/ProfileTab.cpp
td/telegram/PromoDataManager.cpp
td/telegram/QueryCombiner.cpp
td/telegram/QueryMerger.cpp
td/telegram/QuickReplyManager.cpp
td/telegram/ReactionListType.cpp
td/telegram/ReactionManager.cpp
td/telegram/ReactionNotificationSettings.cpp
td/telegram/ReactionNotificationsFrom.cpp
td/telegram/ReactionType.cpp
td/telegram/RecentDialogList.cpp
td/telegram/ReferralProgramInfo.cpp
td/telegram/ReferralProgramManager.cpp
td/telegram/ReferralProgramParameters.cpp
td/telegram/ReferralProgramSortOrder.cpp
td/telegram/RepliedMessageInfo.cpp
td/telegram/ReplyMarkup.cpp
td/telegram/ReportReason.cpp
td/telegram/RequestedDialogType.cpp
td/telegram/Requests.cpp
td/telegram/RestrictionReason.cpp
td/telegram/SavedMessagesManager.cpp
td/telegram/SavedMessagesTopicId.cpp
td/telegram/ScopeNotificationSettings.cpp
td/telegram/SearchPostsFlood.cpp
td/telegram/SecretChatActor.cpp
td/telegram/SecretChatDb.cpp
td/telegram/SecretChatsManager.cpp
td/telegram/SecretInputMedia.cpp
td/telegram/SecureManager.cpp
td/telegram/SecureStorage.cpp
td/telegram/SecureValue.cpp
td/telegram/SendCodeHelper.cpp
td/telegram/SentEmailCode.cpp
td/telegram/SequenceDispatcher.cpp
td/telegram/SharedDialog.cpp
td/telegram/SpecialStickerSetType.cpp
td/telegram/SponsoredMessageManager.cpp
td/telegram/StarAmount.cpp
td/telegram/StarGift.cpp
td/telegram/StarGiftAttribute.cpp
td/telegram/StarGiftAttributeId.cpp
td/telegram/StarGiftAttributeRarity.cpp
td/telegram/StarGiftAuctionRound.cpp
td/telegram/StarGiftAuctionState.cpp
td/telegram/StarGiftAuctionUserState.cpp
td/telegram/StarGiftBackground.cpp
td/telegram/StarGiftCollection.cpp
td/telegram/StarGiftId.cpp
td/telegram/StarGiftManager.cpp
td/telegram/StarGiftResalePrice.cpp
td/telegram/StarGiftSettings.cpp
td/telegram/StarManager.cpp
td/telegram/StarRating.cpp
td/telegram/StarSubscription.cpp
td/telegram/StarSubscriptionPricing.cpp
td/telegram/StateManager.cpp
td/telegram/StatisticsManager.cpp
td/telegram/StickerFormat.cpp
td/telegram/StickerListType.cpp
td/telegram/StickerMaskPosition.cpp
td/telegram/StickerPhotoSize.cpp
td/telegram/StickerSetId.cpp
td/telegram/StickersManager.cpp
td/telegram/StickerType.cpp
td/telegram/StorageManager.cpp
td/telegram/StoryAlbum.cpp
td/telegram/StoryContent.cpp
td/telegram/StoryContentType.cpp
td/telegram/StoryDb.cpp
td/telegram/StoryForwardInfo.cpp
td/telegram/StoryInteractionInfo.cpp
td/telegram/StoryManager.cpp
td/telegram/StoryStealthMode.cpp
td/telegram/StoryViewer.cpp
td/telegram/SuggestedAction.cpp
td/telegram/SuggestedActionManager.cpp
td/telegram/SuggestedPost.cpp
td/telegram/SuggestedPostPrice.cpp
td/telegram/Support.cpp
td/telegram/SynchronousRequests.cpp
td/telegram/TargetDialogTypes.cpp
td/telegram/Td.cpp
td/telegram/TdDb.cpp
td/telegram/TempPasswordState.cpp
td/telegram/TermsOfService.cpp
td/telegram/TermsOfServiceManager.cpp
td/telegram/ThemeManager.cpp
td/telegram/ThemeSettings.cpp
td/telegram/TimeZoneManager.cpp
td/telegram/ToDoCompletion.cpp
td/telegram/ToDoItem.cpp
td/telegram/ToDoList.cpp
td/telegram/TonAmount.cpp
td/telegram/TopDialogCategory.cpp
td/telegram/TopDialogManager.cpp
td/telegram/TranscriptionInfo.cpp
td/telegram/TranscriptionManager.cpp
td/telegram/TranslationManager.cpp
td/telegram/UpdatesManager.cpp
td/telegram/UserManager.cpp
td/telegram/Usernames.cpp
td/telegram/UserPrivacySetting.cpp
td/telegram/UserPrivacySettingRule.cpp
td/telegram/UserStarGift.cpp
td/telegram/Venue.cpp
td/telegram/VerificationStatus.cpp
td/telegram/VideoNotesManager.cpp
td/telegram/VideosManager.cpp
td/telegram/VoiceNotesManager.cpp
td/telegram/WebApp.cpp
td/telegram/WebAppManager.cpp
td/telegram/WebAppOpenParameters.cpp
td/telegram/WebPageBlock.cpp
td/telegram/WebPagesManager.cpp
td/telegram/AccentColorId.h
td/telegram/AccessRights.h
td/telegram/AccountManager.h
td/telegram/ActiveStoryState.h
td/telegram/AffectedHistory.h
td/telegram/AffiliateType.h
td/telegram/AgeVerificationParameters.h
td/telegram/AlarmManager.h
td/telegram/AnimationsManager.h
td/telegram/Application.h
td/telegram/AttachMenuManager.h
td/telegram/AuctionBidLevel.h
td/telegram/AudiosManager.h
td/telegram/AuthManager.h
td/telegram/AutoDownloadSettings.h
td/telegram/AutosaveManager.h
td/telegram/BackgroundId.h
td/telegram/BackgroundInfo.h
td/telegram/BackgroundManager.h
td/telegram/BackgroundType.h
td/telegram/BaseTheme.h
td/telegram/Birthdate.h
td/telegram/BotVerification.h
td/telegram/BotVerifierSettings.h
td/telegram/BlockListId.h
td/telegram/BoostManager.h
td/telegram/BotCommand.h
td/telegram/BotCommandScope.h
td/telegram/BotInfoManager.h
td/telegram/BotMenuButton.h
td/telegram/BotQueries.h
td/telegram/BotRecommendationManager.h
td/telegram/BusinessAwayMessage.h
td/telegram/BusinessAwayMessageSchedule.h
td/telegram/BusinessBotManageBar.h
td/telegram/BusinessBotRights.h
td/telegram/BusinessChatLink.h
td/telegram/BusinessConnectedBot.h
td/telegram/BusinessConnectionId.h
td/telegram/BusinessConnectionManager.h
td/telegram/BusinessGreetingMessage.h
td/telegram/BusinessInfo.h
td/telegram/BusinessIntro.h
td/telegram/BusinessManager.h
td/telegram/BusinessRecipients.h
td/telegram/BusinessWorkHours.h
td/telegram/CallActor.h
td/telegram/CallbackQueriesManager.h
td/telegram/CallDiscardReason.h
td/telegram/CallId.h
td/telegram/CallManager.h
td/telegram/ChainId.h
td/telegram/ChannelId.h
td/telegram/ChannelParticipantFilter.h
td/telegram/ChannelRecommendationManager.h
td/telegram/ChannelType.h
td/telegram/ChatId.h
td/telegram/ChatManager.h
td/telegram/ChatReactions.h
td/telegram/ChatTheme.h
td/telegram/ClientActor.h
td/telegram/CommonDialogManager.h
td/telegram/ConfigManager.h
td/telegram/ConnectionState.h
td/telegram/ConnectionStateManager.h
td/telegram/Contact.h
td/telegram/CountryInfoManager.h
td/telegram/CurrencyAmount.h
td/telegram/CustomEmojiId.h
td/telegram/DelayDispatcher.h
td/telegram/Dependencies.h
td/telegram/DeviceTokenManager.h
td/telegram/DhCache.h
td/telegram/DhConfig.h
td/telegram/DialogAction.h
td/telegram/DialogActionBar.h
td/telegram/DialogActionManager.h
td/telegram/DialogAdministrator.h
td/telegram/DialogBoostLinkInfo.h
td/telegram/DialogDate.h
td/telegram/DialogDb.h
td/telegram/DialogEventLog.h
td/telegram/DialogFilter.h
td/telegram/DialogFilterDialogInfo.h
td/telegram/DialogFilterId.h
td/telegram/DialogFilterInviteLink.h
td/telegram/DialogFilterManager.h
td/telegram/DialogId.h
td/telegram/DialogInviteLink.h
td/telegram/DialogInviteLinkManager.h
td/telegram/DialogListId.h
td/telegram/DialogLocation.h
td/telegram/DialogManager.h
td/telegram/DialogNotificationSettings.h
td/telegram/DialogParticipant.h
td/telegram/DialogParticipantFilter.h
td/telegram/DialogParticipantManager.h
td/telegram/DialogPhoto.h
td/telegram/DialogSource.h
td/telegram/Dimensions.h
td/telegram/DisallowedGiftsSettings.h
td/telegram/Document.h
td/telegram/DocumentsManager.h
td/telegram/DownloadManager.h
td/telegram/DownloadManagerCallback.h
td/telegram/DraftMessage.h
td/telegram/EmailVerification.h
td/telegram/EmojiGameInfo.h
td/telegram/EmojiGroup.h
td/telegram/EmojiGroupType.h
td/telegram/EmojiStatus.h
td/telegram/EncryptedFile.h
td/telegram/FactCheck.h
td/telegram/FileReferenceManager.h
td/telegram/files/FileBitmask.h
td/telegram/files/FileData.h
td/telegram/files/FileDb.h
td/telegram/files/FileDbId.h
td/telegram/files/FileDownloader.h
td/telegram/files/FileDownloadManager.h
td/telegram/files/FileEncryptionKey.h
td/telegram/files/FileFromBytes.h
td/telegram/files/FileGcParameters.h
td/telegram/files/FileGcWorker.h
td/telegram/files/FileGenerateManager.h
td/telegram/files/FileHashUploader.h
td/telegram/files/FileId.h
td/telegram/files/FileLoaderActor.h
td/telegram/files/FileLoaderUtils.h
td/telegram/files/FileLoadManager.h
td/telegram/files/FileLocation.h
td/telegram/files/FileManager.h
td/telegram/files/FileSourceId.h
td/telegram/files/FileStats.h
td/telegram/files/FileStatsWorker.h
td/telegram/files/FileType.h
td/telegram/files/FileUploader.h
td/telegram/files/FileUploadId.h
td/telegram/files/FileUploadManager.h
td/telegram/files/PartsManager.h
td/telegram/files/ResourceManager.h
td/telegram/files/ResourceState.h
td/telegram/FolderId.h
td/telegram/ForumTopic.h
td/telegram/ForumTopicEditedData.h
td/telegram/ForumTopicFullId.h
td/telegram/ForumTopicIcon.h
td/telegram/ForumTopicId.h
td/telegram/ForumTopicInfo.h
td/telegram/ForumTopicManager.h
td/telegram/Game.h
td/telegram/GameManager.h
td/telegram/GitCommitHash.h
td/telegram/GiveawayParameters.h
td/telegram/Global.h
td/telegram/GlobalPrivacySettings.h
td/telegram/GroupCallJoinParameters.h
td/telegram/GroupCallId.h
td/telegram/GroupCallManager.h
td/telegram/GroupCallMessage.h
td/telegram/GroupCallMessageLimit.h
td/telegram/GroupCallParticipant.h
td/telegram/GroupCallParticipantOrder.h
td/telegram/GroupCallVideoPayload.h
td/telegram/HashtagHints.h
td/telegram/InlineMessageManager.h
td/telegram/InlineQueriesManager.h
td/telegram/InputBusinessChatLink.h
td/telegram/InputCallId.h
td/telegram/InputDialogId.h
td/telegram/InputGroupCall.h
td/telegram/InputGroupCallId.h
td/telegram/InputInvoice.h
td/telegram/InputMessageText.h
td/telegram/JsonValue.h
td/telegram/KeyboardButtonStyle.h
td/telegram/LabeledPricePart.h
td/telegram/LanguagePackManager.h
td/telegram/LinkManager.h
td/telegram/Location.h
td/telegram/logevent/LogEvent.h
td/telegram/logevent/LogEventHelper.h
td/telegram/logevent/SecretChatEvent.h
td/telegram/Logging.h
td/telegram/MediaArea.h
td/telegram/MediaAreaCoordinates.h
td/telegram/MessageContent.h
td/telegram/MessageContentType.h
td/telegram/MessageCopyOptions.h
td/telegram/MessageCover.h
td/telegram/MessageDb.h
td/telegram/MessageEffectId.h
td/telegram/MessageEntity.h
td/telegram/MessageExtendedMedia.h
td/telegram/MessageForwardInfo.h
td/telegram/MessageFullId.h
td/telegram/MessageId.h
td/telegram/MessageImportManager.h
td/telegram/MessageInputReplyTo.h
td/telegram/MessageLinkInfo.h
td/telegram/MessageOrigin.h
td/telegram/MessageQueryManager.h
td/telegram/MessageQuote.h
td/telegram/MessageReaction.h
td/telegram/MessageReactor.h
td/telegram/MessageReplyHeader.h
td/telegram/MessageReplyInfo.h
td/telegram/MessageSearchFilter.h
td/telegram/MessageSearchOffset.h
td/telegram/MessageSelfDestructType.h
td/telegram/MessageSender.h
td/telegram/MessageSendOptions.h
td/telegram/MessagesInfo.h
td/telegram/MessagesManager.h
td/telegram/MessageSource.h
td/telegram/MessageThreadDb.h
td/telegram/MessageThreadInfo.h
td/telegram/MessageTopic.h
td/telegram/MessageTtl.h
td/telegram/MessageViewer.h
td/telegram/MinChannel.h
td/telegram/misc.h
td/telegram/MissingInvitee.h
td/telegram/net/AuthDataShared.h
td/telegram/net/AuthKeyState.h
td/telegram/net/ConnectionCreator.h
td/telegram/net/DcAuthManager.h
td/telegram/net/DcId.h
td/telegram/net/DcOptions.h
td/telegram/net/DcOptionsSet.h
td/telegram/net/MtprotoHeader.h
td/telegram/net/NetActor.h
td/telegram/net/NetQuery.h
td/telegram/net/NetQueryCounter.h
td/telegram/net/NetQueryCreator.h
td/telegram/net/NetQueryDelayer.h
td/telegram/net/NetQueryDispatcher.h
td/telegram/net/NetQueryStats.h
td/telegram/net/NetQueryVerifier.h
td/telegram/net/NetStatsManager.h
td/telegram/net/NetType.h
td/telegram/net/Proxy.h
td/telegram/net/ProxyChecker.h
td/telegram/net/PublicRsaKeySharedCdn.h
td/telegram/net/PublicRsaKeySharedMain.h
td/telegram/net/PublicRsaKeyWatchdog.h
td/telegram/net/Session.h
td/telegram/net/SessionMultiProxy.h
td/telegram/net/SessionProxy.h
td/telegram/net/TempAuthKeyWatchdog.h
td/telegram/NewPasswordState.h
td/telegram/Notification.h
td/telegram/NotificationGroupFromDatabase.h
td/telegram/NotificationGroupId.h
td/telegram/NotificationGroupInfo.h
td/telegram/NotificationGroupKey.h
td/telegram/NotificationGroupType.h
td/telegram/NotificationId.h
td/telegram/NotificationManager.h
td/telegram/NotificationObjectFullId.h
td/telegram/NotificationObjectId.h
td/telegram/NotificationSettingsManager.h
td/telegram/NotificationSettingsScope.h
td/telegram/NotificationSound.h
td/telegram/NotificationSoundType.h
td/telegram/NotificationType.h
td/telegram/OnlineManager.h
td/telegram/OptionManager.h
td/telegram/OrderedMessage.h
td/telegram/OrderInfo.h
td/telegram/Outline.h
td/telegram/PaidReactionType.h
td/telegram/Passkey.h
td/telegram/PasswordManager.h
td/telegram/Payments.h
td/telegram/PeerColor.h
td/telegram/PeerColorCollectible.h
td/telegram/PeopleNearbyManager.h
td/telegram/PhoneNumberManager.h
td/telegram/Photo.h
td/telegram/PhotoFormat.h
td/telegram/PhotoSize.h
td/telegram/PhotoSizeSource.h
td/telegram/PhotoSizeType.h
td/telegram/PollId.h
td/telegram/PollManager.h
td/telegram/Premium.h
td/telegram/PremiumGiftOption.h
td/telegram/PrivacyManager.h
td/telegram/ProfileTab.h
td/telegram/PromoDataManager.h
td/telegram/PtsManager.h
td/telegram/PublicDialogType.h
td/telegram/QueryCombiner.h
td/telegram/QueryMerger.h
td/telegram/QuickReplyManager.h
td/telegram/QuickReplyMessageFullId.h
td/telegram/QuickReplyShortcutId.h
td/telegram/ReactionListType.h
td/telegram/ReactionManager.h
td/telegram/ReactionNotificationSettings.h
td/telegram/ReactionNotificationsFrom.h
td/telegram/ReactionType.h
td/telegram/ReactionUnavailabilityReason.h
td/telegram/RecentDialogList.h
td/telegram/ReferralProgramInfo.h
td/telegram/ReferralProgramManager.h
td/telegram/ReferralProgramParameters.h
td/telegram/ReferralProgramSortOrder.h
td/telegram/RepliedMessageInfo.h
td/telegram/ReplyMarkup.h
td/telegram/ReportReason.h
td/telegram/RequestActor.h
td/telegram/RequestedDialogType.h
td/telegram/Requests.h
td/telegram/RestrictionReason.h
td/telegram/SavedMessagesManager.h
td/telegram/SavedMessagesTopicId.h
td/telegram/ScheduledServerMessageId.h
td/telegram/ScopeNotificationSettings.h
td/telegram/SearchPostsFlood.h
td/telegram/SecretChatActor.h
td/telegram/SecretChatDb.h
td/telegram/SecretChatId.h
td/telegram/SecretChatLayer.h
td/telegram/SecretChatsManager.h
td/telegram/SecretInputMedia.h
td/telegram/SecureManager.h
td/telegram/SecureStorage.h
td/telegram/SecureValue.h
td/telegram/SendCodeHelper.h
td/telegram/SentEmailCode.h
td/telegram/SequenceDispatcher.h
td/telegram/ServerMessageId.h
td/telegram/SetWithPosition.h
td/telegram/SharedDialog.h
td/telegram/SpecialStickerSetType.h
td/telegram/SponsoredMessageManager.h
td/telegram/StarAmount.h
td/telegram/StarGift.h
td/telegram/StarGiftAttribute.h
td/telegram/StarGiftAttributeId.h
td/telegram/StarGiftAttributeRarity.h
td/telegram/StarGiftAuctionRound.h
td/telegram/StarGiftAuctionState.h
td/telegram/StarGiftAucti
gitextract_al8j02rj/ ├── .clang-format ├── .gitattributes ├── .gitignore ├── CHANGELOG.md ├── CMake/ │ ├── AddCXXCompilerFlag.cmake │ ├── FindAtomics.cmake │ ├── FindReadline.cmake │ ├── GeneratePkgConfig.cmake │ ├── GetGitRevisionDescription.cmake │ ├── GetGitRevisionDescription.cmake.in │ ├── PreventInSourceBuild.cmake │ ├── TdSetUpCompiler.cmake │ ├── iOS.cmake │ └── illumos.cmake ├── CMakeLists.txt ├── Doxyfile ├── LICENSE_1_0.txt ├── README.md ├── SplitSource.php ├── TdConfig.cmake ├── benchmark/ │ ├── CMakeLists.txt │ ├── bench_actor.cpp │ ├── bench_crypto.cpp │ ├── bench_db.cpp │ ├── bench_empty.cpp │ ├── bench_handshake.cpp │ ├── bench_http.cpp │ ├── bench_http_reader.cpp │ ├── bench_http_server.cpp │ ├── bench_http_server_cheat.cpp │ ├── bench_http_server_fast.cpp │ ├── bench_log.cpp │ ├── bench_misc.cpp │ ├── bench_queue.cpp │ ├── bench_tddb.cpp │ ├── check_proxy.cpp │ ├── check_tls.cpp │ ├── hashmap_build.cpp │ ├── hashset_memory.cpp │ ├── rmdir.cpp │ └── wget.cpp ├── build.html ├── example/ │ ├── README.md │ ├── android/ │ │ ├── .gitignore │ │ ├── AddIntDef.php │ │ ├── CMakeLists.txt │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── build-openssl.sh │ │ ├── build-tdlib.sh │ │ ├── check-environment.sh │ │ └── fetch-sdk.sh │ ├── cpp/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── td_example.cpp │ │ └── tdjson_example.cpp │ ├── csharp/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── TdExample.cs │ │ ├── TdExample.csproj │ │ └── TdExample.sln │ ├── ios/ │ │ ├── Python-Apple-support.patch │ │ ├── README.md │ │ ├── build-openssl.sh │ │ └── build.sh │ ├── java/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── org/ │ │ │ └── drinkless/ │ │ │ └── tdlib/ │ │ │ ├── Client.java │ │ │ ├── JsonClient.java │ │ │ └── example/ │ │ │ ├── Example.java │ │ │ └── JsonExample.java │ │ └── td_jni.cpp │ ├── python/ │ │ ├── .gitignore │ │ ├── README.md │ │ └── tdjson_example.py │ ├── swift/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── src/ │ │ │ ├── main.swift │ │ │ └── td-Bridging-Header.h │ │ └── td.xcodeproj/ │ │ └── project.pbxproj │ ├── uwp/ │ │ ├── LICENSE_1_0.txt │ │ ├── README.md │ │ ├── SDKManifest.xml │ │ ├── Telegram.Td.UWP.nuspec │ │ ├── Telegram.Td.UWP.targets │ │ ├── [Content_Types].xml │ │ ├── app/ │ │ │ ├── .gitignore │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── ApplicationInsights.config │ │ │ ├── MainPage.xaml │ │ │ ├── MainPage.xaml.cs │ │ │ ├── Package.appxmanifest │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ └── Default.rd.xml │ │ │ ├── TdApp.csproj │ │ │ ├── TdApp.sln │ │ │ ├── TdApp_TemporaryKey.pfx │ │ │ └── project.json │ │ ├── build.ps1 │ │ └── extension.vsixmanifest │ └── web/ │ ├── .gitignore │ ├── README.md │ ├── build-openssl.sh │ ├── build-tdlib.sh │ ├── build-tdweb.sh │ ├── copy-tdlib.sh │ └── tdweb/ │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── index.js │ │ ├── logger.js │ │ ├── wasm-utils.js │ │ └── worker.js │ └── webpack.config.js ├── format.ps1 ├── format.sh ├── memprof/ │ ├── memprof.cpp │ ├── memprof.h │ ├── memprof_stat.cpp │ └── memprof_stat.h ├── post.js ├── sqlite/ │ ├── CMakeLists.txt │ └── sqlite/ │ ├── LICENSE │ ├── sqlite3.c │ ├── sqlite3.h │ ├── sqlite3ext.h │ └── sqlite3session.h ├── src.ps1 ├── src.sh ├── td/ │ ├── generate/ │ │ ├── CMakeLists.txt │ │ ├── DotnetTlDocumentationGenerator.php │ │ ├── DoxygenTlDocumentationGenerator.php │ │ ├── JavadocTlDocumentationGenerator.php │ │ ├── TlDocumentationGenerator.php │ │ ├── generate_c.cpp │ │ ├── generate_common.cpp │ │ ├── generate_dotnet.cpp │ │ ├── generate_java.cpp │ │ ├── generate_json.cpp │ │ ├── generate_mtproto.cpp │ │ ├── scheme/ │ │ │ ├── e2e_api.tl │ │ │ ├── mtproto_api.tl │ │ │ ├── secret_api.tl │ │ │ ├── td_api.tl │ │ │ └── telegram_api.tl │ │ ├── tl-parser/ │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE │ │ │ ├── crc32.c │ │ │ ├── crc32.h │ │ │ ├── portable_endian.h │ │ │ ├── tl-parser-tree.h │ │ │ ├── tl-parser.c │ │ │ ├── tl-parser.h │ │ │ ├── tl-tl.h │ │ │ ├── tlc.c │ │ │ ├── wgetopt.c │ │ │ └── wgetopt.h │ │ ├── tl_json_converter.cpp │ │ ├── tl_json_converter.h │ │ ├── tl_writer_c.h │ │ ├── tl_writer_cpp.cpp │ │ ├── tl_writer_cpp.h │ │ ├── tl_writer_dotnet.h │ │ ├── tl_writer_h.cpp │ │ ├── tl_writer_h.h │ │ ├── tl_writer_hpp.cpp │ │ ├── tl_writer_hpp.h │ │ ├── tl_writer_java.cpp │ │ ├── tl_writer_java.h │ │ ├── tl_writer_jni_cpp.cpp │ │ ├── tl_writer_jni_cpp.h │ │ ├── tl_writer_jni_h.cpp │ │ ├── tl_writer_jni_h.h │ │ ├── tl_writer_td.cpp │ │ └── tl_writer_td.h │ ├── mtproto/ │ │ ├── AuthData.cpp │ │ ├── AuthData.h │ │ ├── AuthKey.h │ │ ├── ConnectionManager.cpp │ │ ├── ConnectionManager.h │ │ ├── CryptoStorer.h │ │ ├── DhCallback.h │ │ ├── DhHandshake.cpp │ │ ├── DhHandshake.h │ │ ├── Handshake.cpp │ │ ├── Handshake.h │ │ ├── HandshakeActor.cpp │ │ ├── HandshakeActor.h │ │ ├── HandshakeConnection.h │ │ ├── HttpTransport.cpp │ │ ├── HttpTransport.h │ │ ├── IStreamTransport.cpp │ │ ├── IStreamTransport.h │ │ ├── KDF.cpp │ │ ├── KDF.h │ │ ├── MessageId.h │ │ ├── MtprotoQuery.h │ │ ├── NoCryptoStorer.h │ │ ├── PacketInfo.h │ │ ├── PacketStorer.h │ │ ├── Ping.cpp │ │ ├── Ping.h │ │ ├── PingConnection.cpp │ │ ├── PingConnection.h │ │ ├── ProxySecret.cpp │ │ ├── ProxySecret.h │ │ ├── RSA.cpp │ │ ├── RSA.h │ │ ├── RawConnection.cpp │ │ ├── RawConnection.h │ │ ├── SessionConnection.cpp │ │ ├── SessionConnection.h │ │ ├── TcpTransport.cpp │ │ ├── TcpTransport.h │ │ ├── TlsInit.cpp │ │ ├── TlsInit.h │ │ ├── TlsReaderByteFlow.cpp │ │ ├── TlsReaderByteFlow.h │ │ ├── Transport.cpp │ │ ├── Transport.h │ │ ├── TransportType.h │ │ ├── utils.cpp │ │ └── utils.h │ ├── telegram/ │ │ ├── AccentColorId.h │ │ ├── AccessRights.h │ │ ├── AccountManager.cpp │ │ ├── AccountManager.h │ │ ├── ActiveStoryState.cpp │ │ ├── ActiveStoryState.h │ │ ├── AffectedHistory.h │ │ ├── AffiliateType.cpp │ │ ├── AffiliateType.h │ │ ├── AgeVerificationParameters.cpp │ │ ├── AgeVerificationParameters.h │ │ ├── AgeVerificationParameters.hpp │ │ ├── AlarmManager.cpp │ │ ├── AlarmManager.h │ │ ├── AnimationsManager.cpp │ │ ├── AnimationsManager.h │ │ ├── AnimationsManager.hpp │ │ ├── Application.cpp │ │ ├── Application.h │ │ ├── AttachMenuManager.cpp │ │ ├── AttachMenuManager.h │ │ ├── AuctionBidLevel.cpp │ │ ├── AuctionBidLevel.h │ │ ├── AudiosManager.cpp │ │ ├── AudiosManager.h │ │ ├── AudiosManager.hpp │ │ ├── AuthManager.cpp │ │ ├── AuthManager.h │ │ ├── AuthManager.hpp │ │ ├── AutoDownloadSettings.cpp │ │ ├── AutoDownloadSettings.h │ │ ├── AutosaveManager.cpp │ │ ├── AutosaveManager.h │ │ ├── BackgroundId.h │ │ ├── BackgroundInfo.cpp │ │ ├── BackgroundInfo.h │ │ ├── BackgroundInfo.hpp │ │ ├── BackgroundManager.cpp │ │ ├── BackgroundManager.h │ │ ├── BackgroundType.cpp │ │ ├── BackgroundType.h │ │ ├── BackgroundType.hpp │ │ ├── BaseTheme.cpp │ │ ├── BaseTheme.h │ │ ├── Birthdate.cpp │ │ ├── Birthdate.h │ │ ├── Birthdate.hpp │ │ ├── BlockListId.h │ │ ├── BoostManager.cpp │ │ ├── BoostManager.h │ │ ├── BotCommand.cpp │ │ ├── BotCommand.h │ │ ├── BotCommandScope.cpp │ │ ├── BotCommandScope.h │ │ ├── BotInfoManager.cpp │ │ ├── BotInfoManager.h │ │ ├── BotMenuButton.cpp │ │ ├── BotMenuButton.h │ │ ├── BotQueries.cpp │ │ ├── BotQueries.h │ │ ├── BotRecommendationManager.cpp │ │ ├── BotRecommendationManager.h │ │ ├── BotVerification.cpp │ │ ├── BotVerification.h │ │ ├── BotVerification.hpp │ │ ├── BotVerifierSettings.cpp │ │ ├── BotVerifierSettings.h │ │ ├── BotVerifierSettings.hpp │ │ ├── BusinessAwayMessage.cpp │ │ ├── BusinessAwayMessage.h │ │ ├── BusinessAwayMessage.hpp │ │ ├── BusinessAwayMessageSchedule.cpp │ │ ├── BusinessAwayMessageSchedule.h │ │ ├── BusinessAwayMessageSchedule.hpp │ │ ├── BusinessBotManageBar.cpp │ │ ├── BusinessBotManageBar.h │ │ ├── BusinessBotRights.cpp │ │ ├── BusinessBotRights.h │ │ ├── BusinessBotRights.hpp │ │ ├── BusinessChatLink.cpp │ │ ├── BusinessChatLink.h │ │ ├── BusinessConnectedBot.cpp │ │ ├── BusinessConnectedBot.h │ │ ├── BusinessConnectedBot.hpp │ │ ├── BusinessConnectionId.h │ │ ├── BusinessConnectionManager.cpp │ │ ├── BusinessConnectionManager.h │ │ ├── BusinessGreetingMessage.cpp │ │ ├── BusinessGreetingMessage.h │ │ ├── BusinessGreetingMessage.hpp │ │ ├── BusinessInfo.cpp │ │ ├── BusinessInfo.h │ │ ├── BusinessInfo.hpp │ │ ├── BusinessIntro.cpp │ │ ├── BusinessIntro.h │ │ ├── BusinessIntro.hpp │ │ ├── BusinessManager.cpp │ │ ├── BusinessManager.h │ │ ├── BusinessRecipients.cpp │ │ ├── BusinessRecipients.h │ │ ├── BusinessRecipients.hpp │ │ ├── BusinessWorkHours.cpp │ │ ├── BusinessWorkHours.h │ │ ├── BusinessWorkHours.hpp │ │ ├── CallActor.cpp │ │ ├── CallActor.h │ │ ├── CallDiscardReason.cpp │ │ ├── CallDiscardReason.h │ │ ├── CallId.h │ │ ├── CallManager.cpp │ │ ├── CallManager.h │ │ ├── CallbackQueriesManager.cpp │ │ ├── CallbackQueriesManager.h │ │ ├── ChainId.h │ │ ├── ChannelId.h │ │ ├── ChannelParticipantFilter.cpp │ │ ├── ChannelParticipantFilter.h │ │ ├── ChannelRecommendationManager.cpp │ │ ├── ChannelRecommendationManager.h │ │ ├── ChannelType.h │ │ ├── ChatId.h │ │ ├── ChatManager.cpp │ │ ├── ChatManager.h │ │ ├── ChatReactions.cpp │ │ ├── ChatReactions.h │ │ ├── ChatReactions.hpp │ │ ├── ChatTheme.cpp │ │ ├── ChatTheme.h │ │ ├── ChatTheme.hpp │ │ ├── Client.cpp │ │ ├── Client.h │ │ ├── ClientActor.cpp │ │ ├── ClientActor.h │ │ ├── ClientDotNet.cpp │ │ ├── ClientJson.cpp │ │ ├── ClientJson.h │ │ ├── CommonDialogManager.cpp │ │ ├── CommonDialogManager.h │ │ ├── ConfigManager.cpp │ │ ├── ConfigManager.h │ │ ├── ConnectionState.cpp │ │ ├── ConnectionState.h │ │ ├── ConnectionStateManager.cpp │ │ ├── ConnectionStateManager.h │ │ ├── Contact.cpp │ │ ├── Contact.h │ │ ├── CountryInfoManager.cpp │ │ ├── CountryInfoManager.h │ │ ├── CurrencyAmount.cpp │ │ ├── CurrencyAmount.h │ │ ├── CurrencyAmount.hpp │ │ ├── CustomEmojiId.h │ │ ├── DelayDispatcher.cpp │ │ ├── DelayDispatcher.h │ │ ├── Dependencies.cpp │ │ ├── Dependencies.h │ │ ├── DeviceTokenManager.cpp │ │ ├── DeviceTokenManager.h │ │ ├── DhCache.cpp │ │ ├── DhCache.h │ │ ├── DhConfig.h │ │ ├── DialogAction.cpp │ │ ├── DialogAction.h │ │ ├── DialogActionBar.cpp │ │ ├── DialogActionBar.h │ │ ├── DialogActionManager.cpp │ │ ├── DialogActionManager.h │ │ ├── DialogAdministrator.cpp │ │ ├── DialogAdministrator.h │ │ ├── DialogBoostLinkInfo.h │ │ ├── DialogDate.h │ │ ├── DialogDb.cpp │ │ ├── DialogDb.h │ │ ├── DialogEventLog.cpp │ │ ├── DialogEventLog.h │ │ ├── DialogFilter.cpp │ │ ├── DialogFilter.h │ │ ├── DialogFilter.hpp │ │ ├── DialogFilterDialogInfo.h │ │ ├── DialogFilterId.h │ │ ├── DialogFilterInviteLink.cpp │ │ ├── DialogFilterInviteLink.h │ │ ├── DialogFilterManager.cpp │ │ ├── DialogFilterManager.h │ │ ├── DialogId.cpp │ │ ├── DialogId.h │ │ ├── DialogInviteLink.cpp │ │ ├── DialogInviteLink.h │ │ ├── DialogInviteLink.hpp │ │ ├── DialogInviteLinkManager.cpp │ │ ├── DialogInviteLinkManager.h │ │ ├── DialogListId.cpp │ │ ├── DialogListId.h │ │ ├── DialogLocation.cpp │ │ ├── DialogLocation.h │ │ ├── DialogManager.cpp │ │ ├── DialogManager.h │ │ ├── DialogNotificationSettings.cpp │ │ ├── DialogNotificationSettings.h │ │ ├── DialogNotificationSettings.hpp │ │ ├── DialogParticipant.cpp │ │ ├── DialogParticipant.h │ │ ├── DialogParticipantFilter.cpp │ │ ├── DialogParticipantFilter.h │ │ ├── DialogParticipantManager.cpp │ │ ├── DialogParticipantManager.h │ │ ├── DialogPhoto.cpp │ │ ├── DialogPhoto.h │ │ ├── DialogPhoto.hpp │ │ ├── DialogSource.cpp │ │ ├── DialogSource.h │ │ ├── Dimensions.cpp │ │ ├── Dimensions.h │ │ ├── Dimensions.hpp │ │ ├── DisallowedGiftsSettings.cpp │ │ ├── DisallowedGiftsSettings.h │ │ ├── DisallowedGiftsSettings.hpp │ │ ├── Document.cpp │ │ ├── Document.h │ │ ├── Document.hpp │ │ ├── DocumentsManager.cpp │ │ ├── DocumentsManager.h │ │ ├── DocumentsManager.hpp │ │ ├── DownloadManager.cpp │ │ ├── DownloadManager.h │ │ ├── DownloadManagerCallback.cpp │ │ ├── DownloadManagerCallback.h │ │ ├── DraftMessage.cpp │ │ ├── DraftMessage.h │ │ ├── DraftMessage.hpp │ │ ├── EmailVerification.cpp │ │ ├── EmailVerification.h │ │ ├── EmojiGameInfo.cpp │ │ ├── EmojiGameInfo.h │ │ ├── EmojiGroup.cpp │ │ ├── EmojiGroup.h │ │ ├── EmojiGroup.hpp │ │ ├── EmojiGroupType.cpp │ │ ├── EmojiGroupType.h │ │ ├── EmojiStatus.cpp │ │ ├── EmojiStatus.h │ │ ├── EncryptedFile.h │ │ ├── FactCheck.cpp │ │ ├── FactCheck.h │ │ ├── FactCheck.hpp │ │ ├── FileReferenceManager.cpp │ │ ├── FileReferenceManager.h │ │ ├── FileReferenceManager.hpp │ │ ├── FolderId.h │ │ ├── ForumTopic.cpp │ │ ├── ForumTopic.h │ │ ├── ForumTopic.hpp │ │ ├── ForumTopicEditedData.cpp │ │ ├── ForumTopicEditedData.h │ │ ├── ForumTopicEditedData.hpp │ │ ├── ForumTopicFullId.h │ │ ├── ForumTopicIcon.cpp │ │ ├── ForumTopicIcon.h │ │ ├── ForumTopicIcon.hpp │ │ ├── ForumTopicId.h │ │ ├── ForumTopicInfo.cpp │ │ ├── ForumTopicInfo.h │ │ ├── ForumTopicInfo.hpp │ │ ├── ForumTopicManager.cpp │ │ ├── ForumTopicManager.h │ │ ├── Game.cpp │ │ ├── Game.h │ │ ├── Game.hpp │ │ ├── GameManager.cpp │ │ ├── GameManager.h │ │ ├── GitCommitHash.cpp.in │ │ ├── GitCommitHash.h │ │ ├── GiveawayParameters.cpp │ │ ├── GiveawayParameters.h │ │ ├── GiveawayParameters.hpp │ │ ├── Global.cpp │ │ ├── Global.h │ │ ├── GlobalPrivacySettings.cpp │ │ ├── GlobalPrivacySettings.h │ │ ├── GroupCallId.h │ │ ├── GroupCallJoinParameters.cpp │ │ ├── GroupCallJoinParameters.h │ │ ├── GroupCallManager.cpp │ │ ├── GroupCallManager.h │ │ ├── GroupCallMessage.cpp │ │ ├── GroupCallMessage.h │ │ ├── GroupCallMessageLimit.cpp │ │ ├── GroupCallMessageLimit.h │ │ ├── GroupCallMessageLimit.hpp │ │ ├── GroupCallParticipant.cpp │ │ ├── GroupCallParticipant.h │ │ ├── GroupCallParticipantOrder.cpp │ │ ├── GroupCallParticipantOrder.h │ │ ├── GroupCallVideoPayload.cpp │ │ ├── GroupCallVideoPayload.h │ │ ├── HashtagHints.cpp │ │ ├── HashtagHints.h │ │ ├── InlineMessageManager.cpp │ │ ├── InlineMessageManager.h │ │ ├── InlineQueriesManager.cpp │ │ ├── InlineQueriesManager.h │ │ ├── InputBusinessChatLink.cpp │ │ ├── InputBusinessChatLink.h │ │ ├── InputCallId.cpp │ │ ├── InputCallId.h │ │ ├── InputDialogId.cpp │ │ ├── InputDialogId.h │ │ ├── InputGroupCall.cpp │ │ ├── InputGroupCall.h │ │ ├── InputGroupCallId.cpp │ │ ├── InputGroupCallId.h │ │ ├── InputInvoice.cpp │ │ ├── InputInvoice.h │ │ ├── InputInvoice.hpp │ │ ├── InputMessageText.cpp │ │ ├── InputMessageText.h │ │ ├── InputMessageText.hpp │ │ ├── JsonValue.cpp │ │ ├── JsonValue.h │ │ ├── KeyboardButtonStyle.cpp │ │ ├── KeyboardButtonStyle.h │ │ ├── KeyboardButtonStyle.hpp │ │ ├── LabeledPricePart.h │ │ ├── LanguagePackManager.cpp │ │ ├── LanguagePackManager.h │ │ ├── LinkManager.cpp │ │ ├── LinkManager.h │ │ ├── Location.cpp │ │ ├── Location.h │ │ ├── Log.cpp │ │ ├── Log.h │ │ ├── Logging.cpp │ │ ├── Logging.h │ │ ├── MediaArea.cpp │ │ ├── MediaArea.h │ │ ├── MediaArea.hpp │ │ ├── MediaAreaCoordinates.cpp │ │ ├── MediaAreaCoordinates.h │ │ ├── MediaAreaCoordinates.hpp │ │ ├── MessageContent.cpp │ │ ├── MessageContent.h │ │ ├── MessageContentType.cpp │ │ ├── MessageContentType.h │ │ ├── MessageCopyOptions.cpp │ │ ├── MessageCopyOptions.h │ │ ├── MessageCover.cpp │ │ ├── MessageCover.h │ │ ├── MessageDb.cpp │ │ ├── MessageDb.h │ │ ├── MessageEffectId.h │ │ ├── MessageEntity.cpp │ │ ├── MessageEntity.h │ │ ├── MessageEntity.hpp │ │ ├── MessageExtendedMedia.cpp │ │ ├── MessageExtendedMedia.h │ │ ├── MessageExtendedMedia.hpp │ │ ├── MessageForwardInfo.cpp │ │ ├── MessageForwardInfo.h │ │ ├── MessageForwardInfo.hpp │ │ ├── MessageFullId.h │ │ ├── MessageId.cpp │ │ ├── MessageId.h │ │ ├── MessageImportManager.cpp │ │ ├── MessageImportManager.h │ │ ├── MessageInputReplyTo.cpp │ │ ├── MessageInputReplyTo.h │ │ ├── MessageInputReplyTo.hpp │ │ ├── MessageLinkInfo.h │ │ ├── MessageOrigin.cpp │ │ ├── MessageOrigin.h │ │ ├── MessageOrigin.hpp │ │ ├── MessageQueryManager.cpp │ │ ├── MessageQueryManager.h │ │ ├── MessageQuote.cpp │ │ ├── MessageQuote.h │ │ ├── MessageQuote.hpp │ │ ├── MessageReaction.cpp │ │ ├── MessageReaction.h │ │ ├── MessageReaction.hpp │ │ ├── MessageReactor.cpp │ │ ├── MessageReactor.h │ │ ├── MessageReactor.hpp │ │ ├── MessageReplyHeader.cpp │ │ ├── MessageReplyHeader.h │ │ ├── MessageReplyInfo.cpp │ │ ├── MessageReplyInfo.h │ │ ├── MessageReplyInfo.hpp │ │ ├── MessageSearchFilter.cpp │ │ ├── MessageSearchFilter.h │ │ ├── MessageSearchOffset.cpp │ │ ├── MessageSearchOffset.h │ │ ├── MessageSelfDestructType.cpp │ │ ├── MessageSelfDestructType.h │ │ ├── MessageSendOptions.cpp │ │ ├── MessageSendOptions.h │ │ ├── MessageSender.cpp │ │ ├── MessageSender.h │ │ ├── MessageSource.cpp │ │ ├── MessageSource.h │ │ ├── MessageThreadDb.cpp │ │ ├── MessageThreadDb.h │ │ ├── MessageThreadInfo.h │ │ ├── MessageTopic.cpp │ │ ├── MessageTopic.h │ │ ├── MessageTtl.cpp │ │ ├── MessageTtl.h │ │ ├── MessageViewer.cpp │ │ ├── MessageViewer.h │ │ ├── MessagesInfo.cpp │ │ ├── MessagesInfo.h │ │ ├── MessagesManager.cpp │ │ ├── MessagesManager.h │ │ ├── MinChannel.h │ │ ├── MinChannel.hpp │ │ ├── MissingInvitee.cpp │ │ ├── MissingInvitee.h │ │ ├── NewPasswordState.cpp │ │ ├── NewPasswordState.h │ │ ├── Notification.h │ │ ├── NotificationGroupFromDatabase.h │ │ ├── NotificationGroupId.h │ │ ├── NotificationGroupInfo.cpp │ │ ├── NotificationGroupInfo.h │ │ ├── NotificationGroupInfo.hpp │ │ ├── NotificationGroupKey.h │ │ ├── NotificationGroupType.cpp │ │ ├── NotificationGroupType.h │ │ ├── NotificationId.h │ │ ├── NotificationManager.cpp │ │ ├── NotificationManager.h │ │ ├── NotificationObjectFullId.h │ │ ├── NotificationObjectId.h │ │ ├── NotificationSettingsManager.cpp │ │ ├── NotificationSettingsManager.h │ │ ├── NotificationSettingsScope.cpp │ │ ├── NotificationSettingsScope.h │ │ ├── NotificationSound.cpp │ │ ├── NotificationSound.h │ │ ├── NotificationSoundType.h │ │ ├── NotificationType.cpp │ │ ├── NotificationType.h │ │ ├── OnlineManager.cpp │ │ ├── OnlineManager.h │ │ ├── OptionManager.cpp │ │ ├── OptionManager.h │ │ ├── OrderInfo.cpp │ │ ├── OrderInfo.h │ │ ├── OrderInfo.hpp │ │ ├── OrderedMessage.cpp │ │ ├── OrderedMessage.h │ │ ├── Outline.cpp │ │ ├── Outline.h │ │ ├── PaidReactionType.cpp │ │ ├── PaidReactionType.h │ │ ├── PaidReactionType.hpp │ │ ├── Passkey.cpp │ │ ├── Passkey.h │ │ ├── PasswordManager.cpp │ │ ├── PasswordManager.h │ │ ├── Payments.cpp │ │ ├── Payments.h │ │ ├── PeerColor.cpp │ │ ├── PeerColor.h │ │ ├── PeerColorCollectible.cpp │ │ ├── PeerColorCollectible.h │ │ ├── PeerColorCollectible.hpp │ │ ├── PeopleNearbyManager.cpp │ │ ├── PeopleNearbyManager.h │ │ ├── PhoneNumberManager.cpp │ │ ├── PhoneNumberManager.h │ │ ├── Photo.cpp │ │ ├── Photo.h │ │ ├── Photo.hpp │ │ ├── PhotoFormat.h │ │ ├── PhotoSize.cpp │ │ ├── PhotoSize.h │ │ ├── PhotoSize.hpp │ │ ├── PhotoSizeSource.cpp │ │ ├── PhotoSizeSource.h │ │ ├── PhotoSizeSource.hpp │ │ ├── PhotoSizeType.h │ │ ├── PhotoSizeType.hpp │ │ ├── PollId.h │ │ ├── PollId.hpp │ │ ├── PollManager.cpp │ │ ├── PollManager.h │ │ ├── PollManager.hpp │ │ ├── Premium.cpp │ │ ├── Premium.h │ │ ├── PremiumGiftOption.cpp │ │ ├── PremiumGiftOption.h │ │ ├── PremiumGiftOption.hpp │ │ ├── PrivacyManager.cpp │ │ ├── PrivacyManager.h │ │ ├── ProfileTab.cpp │ │ ├── ProfileTab.h │ │ ├── PromoDataManager.cpp │ │ ├── PromoDataManager.h │ │ ├── PtsManager.h │ │ ├── PublicDialogType.h │ │ ├── QueryCombiner.cpp │ │ ├── QueryCombiner.h │ │ ├── QueryMerger.cpp │ │ ├── QueryMerger.h │ │ ├── QuickReplyManager.cpp │ │ ├── QuickReplyManager.h │ │ ├── QuickReplyMessageFullId.h │ │ ├── QuickReplyShortcutId.h │ │ ├── ReactionListType.cpp │ │ ├── ReactionListType.h │ │ ├── ReactionManager.cpp │ │ ├── ReactionManager.h │ │ ├── ReactionManager.hpp │ │ ├── ReactionNotificationSettings.cpp │ │ ├── ReactionNotificationSettings.h │ │ ├── ReactionNotificationSettings.hpp │ │ ├── ReactionNotificationsFrom.cpp │ │ ├── ReactionNotificationsFrom.h │ │ ├── ReactionNotificationsFrom.hpp │ │ ├── ReactionType.cpp │ │ ├── ReactionType.h │ │ ├── ReactionType.hpp │ │ ├── ReactionUnavailabilityReason.h │ │ ├── RecentDialogList.cpp │ │ ├── RecentDialogList.h │ │ ├── ReferralProgramInfo.cpp │ │ ├── ReferralProgramInfo.h │ │ ├── ReferralProgramInfo.hpp │ │ ├── ReferralProgramManager.cpp │ │ ├── ReferralProgramManager.h │ │ ├── ReferralProgramParameters.cpp │ │ ├── ReferralProgramParameters.h │ │ ├── ReferralProgramParameters.hpp │ │ ├── ReferralProgramSortOrder.cpp │ │ ├── ReferralProgramSortOrder.h │ │ ├── RepliedMessageInfo.cpp │ │ ├── RepliedMessageInfo.h │ │ ├── RepliedMessageInfo.hpp │ │ ├── ReplyMarkup.cpp │ │ ├── ReplyMarkup.h │ │ ├── ReplyMarkup.hpp │ │ ├── ReportReason.cpp │ │ ├── ReportReason.h │ │ ├── RequestActor.h │ │ ├── RequestedDialogType.cpp │ │ ├── RequestedDialogType.h │ │ ├── RequestedDialogType.hpp │ │ ├── Requests.cpp │ │ ├── Requests.h │ │ ├── RestrictionReason.cpp │ │ ├── RestrictionReason.h │ │ ├── SavedMessagesManager.cpp │ │ ├── SavedMessagesManager.h │ │ ├── SavedMessagesTopicId.cpp │ │ ├── SavedMessagesTopicId.h │ │ ├── ScheduledServerMessageId.h │ │ ├── ScopeNotificationSettings.cpp │ │ ├── ScopeNotificationSettings.h │ │ ├── ScopeNotificationSettings.hpp │ │ ├── SearchPostsFlood.cpp │ │ ├── SearchPostsFlood.h │ │ ├── SecretChatActor.cpp │ │ ├── SecretChatActor.h │ │ ├── SecretChatDb.cpp │ │ ├── SecretChatDb.h │ │ ├── SecretChatId.h │ │ ├── SecretChatLayer.h │ │ ├── SecretChatsManager.cpp │ │ ├── SecretChatsManager.h │ │ ├── SecretInputMedia.cpp │ │ ├── SecretInputMedia.h │ │ ├── SecureManager.cpp │ │ ├── SecureManager.h │ │ ├── SecureStorage.cpp │ │ ├── SecureStorage.h │ │ ├── SecureValue.cpp │ │ ├── SecureValue.h │ │ ├── SecureValue.hpp │ │ ├── SendCodeHelper.cpp │ │ ├── SendCodeHelper.h │ │ ├── SendCodeHelper.hpp │ │ ├── SentEmailCode.cpp │ │ ├── SentEmailCode.h │ │ ├── SequenceDispatcher.cpp │ │ ├── SequenceDispatcher.h │ │ ├── ServerMessageId.h │ │ ├── SetWithPosition.h │ │ ├── SharedDialog.cpp │ │ ├── SharedDialog.h │ │ ├── SharedDialog.hpp │ │ ├── SpecialStickerSetType.cpp │ │ ├── SpecialStickerSetType.h │ │ ├── SponsoredMessageManager.cpp │ │ ├── SponsoredMessageManager.h │ │ ├── StarAmount.cpp │ │ ├── StarAmount.h │ │ ├── StarAmount.hpp │ │ ├── StarGift.cpp │ │ ├── StarGift.h │ │ ├── StarGift.hpp │ │ ├── StarGiftAttribute.cpp │ │ ├── StarGiftAttribute.h │ │ ├── StarGiftAttribute.hpp │ │ ├── StarGiftAttributeId.cpp │ │ ├── StarGiftAttributeId.h │ │ ├── StarGiftAttributeRarity.cpp │ │ ├── StarGiftAttributeRarity.h │ │ ├── StarGiftAttributeRarity.hpp │ │ ├── StarGiftAuctionRound.cpp │ │ ├── StarGiftAuctionRound.h │ │ ├── StarGiftAuctionState.cpp │ │ ├── StarGiftAuctionState.h │ │ ├── StarGiftAuctionUserState.cpp │ │ ├── StarGiftAuctionUserState.h │ │ ├── StarGiftBackground.cpp │ │ ├── StarGiftBackground.h │ │ ├── StarGiftBackground.hpp │ │ ├── StarGiftCollection.cpp │ │ ├── StarGiftCollection.h │ │ ├── StarGiftCollectionId.h │ │ ├── StarGiftId.cpp │ │ ├── StarGiftId.h │ │ ├── StarGiftId.hpp │ │ ├── StarGiftManager.cpp │ │ ├── StarGiftManager.h │ │ ├── StarGiftResalePrice.cpp │ │ ├── StarGiftResalePrice.h │ │ ├── StarGiftResalePrice.hpp │ │ ├── StarGiftSettings.cpp │ │ ├── StarGiftSettings.h │ │ ├── StarGiftSettings.hpp │ │ ├── StarManager.cpp │ │ ├── StarManager.h │ │ ├── StarRating.cpp │ │ ├── StarRating.h │ │ ├── StarRating.hpp │ │ ├── StarSubscription.cpp │ │ ├── StarSubscription.h │ │ ├── StarSubscriptionPricing.cpp │ │ ├── StarSubscriptionPricing.h │ │ ├── StarSubscriptionPricing.hpp │ │ ├── StateManager.cpp │ │ ├── StateManager.h │ │ ├── StatisticsManager.cpp │ │ ├── StatisticsManager.h │ │ ├── StickerFormat.cpp │ │ ├── StickerFormat.h │ │ ├── StickerListType.cpp │ │ ├── StickerListType.h │ │ ├── StickerMaskPosition.cpp │ │ ├── StickerMaskPosition.h │ │ ├── StickerMaskPosition.hpp │ │ ├── StickerPhotoSize.cpp │ │ ├── StickerPhotoSize.h │ │ ├── StickerPhotoSize.hpp │ │ ├── StickerSetId.cpp │ │ ├── StickerSetId.h │ │ ├── StickerType.cpp │ │ ├── StickerType.h │ │ ├── StickersManager.cpp │ │ ├── StickersManager.h │ │ ├── StickersManager.hpp │ │ ├── StorageManager.cpp │ │ ├── StorageManager.h │ │ ├── StoryAlbum.cpp │ │ ├── StoryAlbum.h │ │ ├── StoryAlbumFullId.h │ │ ├── StoryAlbumId.h │ │ ├── StoryContent.cpp │ │ ├── StoryContent.h │ │ ├── StoryContentType.cpp │ │ ├── StoryContentType.h │ │ ├── StoryDb.cpp │ │ ├── StoryDb.h │ │ ├── StoryForwardInfo.cpp │ │ ├── StoryForwardInfo.h │ │ ├── StoryForwardInfo.hpp │ │ ├── StoryFullId.h │ │ ├── StoryId.h │ │ ├── StoryInteractionInfo.cpp │ │ ├── StoryInteractionInfo.h │ │ ├── StoryInteractionInfo.hpp │ │ ├── StoryListId.h │ │ ├── StoryManager.cpp │ │ ├── StoryManager.h │ │ ├── StoryNotificationSettings.h │ │ ├── StoryStealthMode.cpp │ │ ├── StoryStealthMode.h │ │ ├── StoryStealthMode.hpp │ │ ├── StoryViewer.cpp │ │ ├── StoryViewer.h │ │ ├── SuggestedAction.cpp │ │ ├── SuggestedAction.h │ │ ├── SuggestedAction.hpp │ │ ├── SuggestedActionManager.cpp │ │ ├── SuggestedActionManager.h │ │ ├── SuggestedPost.cpp │ │ ├── SuggestedPost.h │ │ ├── SuggestedPost.hpp │ │ ├── SuggestedPostPrice.cpp │ │ ├── SuggestedPostPrice.h │ │ ├── SuggestedPostPrice.hpp │ │ ├── Support.cpp │ │ ├── Support.h │ │ ├── SynchronousRequests.cpp │ │ ├── SynchronousRequests.h │ │ ├── TargetDialogTypes.cpp │ │ ├── TargetDialogTypes.h │ │ ├── Td.cpp │ │ ├── Td.h │ │ ├── TdCallback.h │ │ ├── TdDb.cpp │ │ ├── TdDb.h │ │ ├── TempPasswordState.cpp │ │ ├── TempPasswordState.h │ │ ├── TempPasswordState.hpp │ │ ├── TermsOfService.cpp │ │ ├── TermsOfService.h │ │ ├── TermsOfService.hpp │ │ ├── TermsOfServiceManager.cpp │ │ ├── TermsOfServiceManager.h │ │ ├── ThemeManager.cpp │ │ ├── ThemeManager.h │ │ ├── ThemeSettings.cpp │ │ ├── ThemeSettings.h │ │ ├── ThemeSettings.hpp │ │ ├── TimeZoneManager.cpp │ │ ├── TimeZoneManager.h │ │ ├── ToDoCompletion.cpp │ │ ├── ToDoCompletion.h │ │ ├── ToDoCompletion.hpp │ │ ├── ToDoItem.cpp │ │ ├── ToDoItem.h │ │ ├── ToDoItem.hpp │ │ ├── ToDoList.cpp │ │ ├── ToDoList.h │ │ ├── ToDoList.hpp │ │ ├── TonAmount.cpp │ │ ├── TonAmount.h │ │ ├── TonAmount.hpp │ │ ├── TopDialogCategory.cpp │ │ ├── TopDialogCategory.h │ │ ├── TopDialogManager.cpp │ │ ├── TopDialogManager.h │ │ ├── TranscriptionInfo.cpp │ │ ├── TranscriptionInfo.h │ │ ├── TranscriptionInfo.hpp │ │ ├── TranscriptionManager.cpp │ │ ├── TranscriptionManager.h │ │ ├── TranslationManager.cpp │ │ ├── TranslationManager.h │ │ ├── UniqueId.h │ │ ├── UpdatesManager.cpp │ │ ├── UpdatesManager.h │ │ ├── UserId.h │ │ ├── UserManager.cpp │ │ ├── UserManager.h │ │ ├── UserPrivacySetting.cpp │ │ ├── UserPrivacySetting.h │ │ ├── UserPrivacySettingRule.cpp │ │ ├── UserPrivacySettingRule.h │ │ ├── UserStarGift.cpp │ │ ├── UserStarGift.h │ │ ├── Usernames.cpp │ │ ├── Usernames.h │ │ ├── Venue.cpp │ │ ├── Venue.h │ │ ├── VerificationStatus.cpp │ │ ├── VerificationStatus.h │ │ ├── Version.h │ │ ├── VideoNotesManager.cpp │ │ ├── VideoNotesManager.h │ │ ├── VideoNotesManager.hpp │ │ ├── VideosManager.cpp │ │ ├── VideosManager.h │ │ ├── VideosManager.hpp │ │ ├── VoiceNotesManager.cpp │ │ ├── VoiceNotesManager.h │ │ ├── VoiceNotesManager.hpp │ │ ├── WebApp.cpp │ │ ├── WebApp.h │ │ ├── WebApp.hpp │ │ ├── WebAppManager.cpp │ │ ├── WebAppManager.h │ │ ├── WebAppOpenParameters.cpp │ │ ├── WebAppOpenParameters.h │ │ ├── WebPageBlock.cpp │ │ ├── WebPageBlock.h │ │ ├── WebPageId.h │ │ ├── WebPagesManager.cpp │ │ ├── WebPagesManager.h │ │ ├── cli.cpp │ │ ├── files/ │ │ │ ├── FileBitmask.cpp │ │ │ ├── FileBitmask.h │ │ │ ├── FileData.h │ │ │ ├── FileData.hpp │ │ │ ├── FileDb.cpp │ │ │ ├── FileDb.h │ │ │ ├── FileDbId.h │ │ │ ├── FileDownloadManager.cpp │ │ │ ├── FileDownloadManager.h │ │ │ ├── FileDownloader.cpp │ │ │ ├── FileDownloader.h │ │ │ ├── FileEncryptionKey.cpp │ │ │ ├── FileEncryptionKey.h │ │ │ ├── FileFromBytes.cpp │ │ │ ├── FileFromBytes.h │ │ │ ├── FileGcParameters.cpp │ │ │ ├── FileGcParameters.h │ │ │ ├── FileGcWorker.cpp │ │ │ ├── FileGcWorker.h │ │ │ ├── FileGenerateManager.cpp │ │ │ ├── FileGenerateManager.h │ │ │ ├── FileHashUploader.cpp │ │ │ ├── FileHashUploader.h │ │ │ ├── FileId.h │ │ │ ├── FileId.hpp │ │ │ ├── FileLoadManager.cpp │ │ │ ├── FileLoadManager.h │ │ │ ├── FileLoaderActor.h │ │ │ ├── FileLoaderUtils.cpp │ │ │ ├── FileLoaderUtils.h │ │ │ ├── FileLocation.h │ │ │ ├── FileLocation.hpp │ │ │ ├── FileManager.cpp │ │ │ ├── FileManager.h │ │ │ ├── FileManager.hpp │ │ │ ├── FileSourceId.h │ │ │ ├── FileSourceId.hpp │ │ │ ├── FileStats.cpp │ │ │ ├── FileStats.h │ │ │ ├── FileStatsWorker.cpp │ │ │ ├── FileStatsWorker.h │ │ │ ├── FileType.cpp │ │ │ ├── FileType.h │ │ │ ├── FileUploadId.h │ │ │ ├── FileUploadManager.cpp │ │ │ ├── FileUploadManager.h │ │ │ ├── FileUploader.cpp │ │ │ ├── FileUploader.h │ │ │ ├── PartsManager.cpp │ │ │ ├── PartsManager.h │ │ │ ├── ResourceManager.cpp │ │ │ ├── ResourceManager.h │ │ │ ├── ResourceState.cpp │ │ │ └── ResourceState.h │ │ ├── logevent/ │ │ │ ├── LogEvent.h │ │ │ ├── LogEventHelper.cpp │ │ │ ├── LogEventHelper.h │ │ │ └── SecretChatEvent.h │ │ ├── misc.cpp │ │ ├── misc.h │ │ ├── net/ │ │ │ ├── AuthDataShared.cpp │ │ │ ├── AuthDataShared.h │ │ │ ├── AuthKeyState.h │ │ │ ├── ConnectionCreator.cpp │ │ │ ├── ConnectionCreator.h │ │ │ ├── DcAuthManager.cpp │ │ │ ├── DcAuthManager.h │ │ │ ├── DcId.h │ │ │ ├── DcOptions.h │ │ │ ├── DcOptionsSet.cpp │ │ │ ├── DcOptionsSet.h │ │ │ ├── MtprotoHeader.cpp │ │ │ ├── MtprotoHeader.h │ │ │ ├── NetActor.cpp │ │ │ ├── NetActor.h │ │ │ ├── NetQuery.cpp │ │ │ ├── NetQuery.h │ │ │ ├── NetQueryCounter.h │ │ │ ├── NetQueryCreator.cpp │ │ │ ├── NetQueryCreator.h │ │ │ ├── NetQueryDelayer.cpp │ │ │ ├── NetQueryDelayer.h │ │ │ ├── NetQueryDispatcher.cpp │ │ │ ├── NetQueryDispatcher.h │ │ │ ├── NetQueryStats.cpp │ │ │ ├── NetQueryStats.h │ │ │ ├── NetQueryVerifier.cpp │ │ │ ├── NetQueryVerifier.h │ │ │ ├── NetStatsManager.cpp │ │ │ ├── NetStatsManager.h │ │ │ ├── NetType.h │ │ │ ├── Proxy.cpp │ │ │ ├── Proxy.h │ │ │ ├── ProxyChecker.cpp │ │ │ ├── ProxyChecker.h │ │ │ ├── PublicRsaKeySharedCdn.cpp │ │ │ ├── PublicRsaKeySharedCdn.h │ │ │ ├── PublicRsaKeySharedMain.cpp │ │ │ ├── PublicRsaKeySharedMain.h │ │ │ ├── PublicRsaKeyWatchdog.cpp │ │ │ ├── PublicRsaKeyWatchdog.h │ │ │ ├── Session.cpp │ │ │ ├── Session.h │ │ │ ├── SessionMultiProxy.cpp │ │ │ ├── SessionMultiProxy.h │ │ │ ├── SessionProxy.cpp │ │ │ ├── SessionProxy.h │ │ │ └── TempAuthKeyWatchdog.h │ │ ├── td_c_client.cpp │ │ ├── td_c_client.h │ │ ├── td_emscripten.cpp │ │ ├── td_json_client.cpp │ │ ├── td_json_client.h │ │ ├── td_log.cpp │ │ └── td_log.h │ └── tl/ │ ├── TlObject.h │ ├── tl_dotnet_object.h │ ├── tl_jni_object.cpp │ ├── tl_jni_object.h │ ├── tl_json.h │ ├── tl_object_parse.h │ └── tl_object_store.h ├── tdactor/ │ ├── CMakeLists.txt │ ├── example/ │ │ └── example.cpp │ ├── td/ │ │ └── actor/ │ │ ├── ConcurrentScheduler.cpp │ │ ├── ConcurrentScheduler.h │ │ ├── MultiPromise.cpp │ │ ├── MultiPromise.h │ │ ├── MultiTimeout.cpp │ │ ├── MultiTimeout.h │ │ ├── PromiseFuture.h │ │ ├── SchedulerLocalStorage.h │ │ ├── SignalSlot.h │ │ ├── SleepActor.h │ │ ├── Timeout.h │ │ ├── actor.h │ │ └── impl/ │ │ ├── Actor-decl.h │ │ ├── Actor.h │ │ ├── ActorId-decl.h │ │ ├── ActorId.h │ │ ├── ActorInfo-decl.h │ │ ├── ActorInfo.h │ │ ├── Event.h │ │ ├── EventFull-decl.h │ │ ├── EventFull.h │ │ ├── Scheduler-decl.h │ │ ├── Scheduler.cpp │ │ └── Scheduler.h │ └── test/ │ ├── actors_bugs.cpp │ ├── actors_main.cpp │ ├── actors_simple.cpp │ └── actors_workers.cpp ├── tdclientjson_export_list ├── tddb/ │ ├── CMakeLists.txt │ └── td/ │ └── db/ │ ├── BinlogKeyValue.h │ ├── DbKey.h │ ├── KeyValueSyncInterface.h │ ├── SeqKeyValue.h │ ├── SqliteConnectionSafe.cpp │ ├── SqliteConnectionSafe.h │ ├── SqliteDb.cpp │ ├── SqliteDb.h │ ├── SqliteKeyValue.cpp │ ├── SqliteKeyValue.h │ ├── SqliteKeyValueAsync.cpp │ ├── SqliteKeyValueAsync.h │ ├── SqliteKeyValueSafe.h │ ├── SqliteStatement.cpp │ ├── SqliteStatement.h │ ├── TQueue.cpp │ ├── TQueue.h │ ├── TsSeqKeyValue.h │ ├── binlog/ │ │ ├── Binlog.cpp │ │ ├── Binlog.h │ │ ├── BinlogEvent.cpp │ │ ├── BinlogEvent.h │ │ ├── BinlogHelper.h │ │ ├── BinlogInterface.h │ │ ├── ConcurrentBinlog.cpp │ │ ├── ConcurrentBinlog.h │ │ ├── binlog_dump.cpp │ │ └── detail/ │ │ ├── BinlogEventsBuffer.cpp │ │ ├── BinlogEventsBuffer.h │ │ ├── BinlogEventsProcessor.cpp │ │ └── BinlogEventsProcessor.h │ └── detail/ │ ├── RawSqliteDb.cpp │ └── RawSqliteDb.h ├── tde2e/ │ ├── CMakeLists.txt │ ├── td/ │ │ └── e2e/ │ │ ├── BitString.cpp │ │ ├── BitString.h │ │ ├── Blockchain.cpp │ │ ├── Blockchain.h │ │ ├── Blockchain.md │ │ ├── Call.cpp │ │ ├── Call.h │ │ ├── CheckSharedSecret.cpp │ │ ├── CheckSharedSecret.h │ │ ├── Container.h │ │ ├── DecryptedKey.cpp │ │ ├── DecryptedKey.h │ │ ├── EncryptedKey.cpp │ │ ├── EncryptedKey.h │ │ ├── EncryptedStorage.cpp │ │ ├── EncryptedStorage.h │ │ ├── Encryption.md │ │ ├── Keys.cpp │ │ ├── Keys.h │ │ ├── MessageEncryption.cpp │ │ ├── MessageEncryption.h │ │ ├── Mnemonic.cpp │ │ ├── Mnemonic.h │ │ ├── QRHandshake.cpp │ │ ├── QRHandshake.h │ │ ├── TestBlockchain.cpp │ │ ├── TestBlockchain.h │ │ ├── Trie.cpp │ │ ├── Trie.h │ │ ├── bip39.cpp │ │ ├── bip39.h │ │ ├── e2e_api.cpp │ │ ├── e2e_api.h │ │ ├── e2e_errors.h │ │ ├── encryption_test.py │ │ └── utils.h │ └── test/ │ ├── EncryptionTestVectors.h │ ├── blockchain.cpp │ ├── e2e.cpp │ └── encryption.cpp ├── tdnet/ │ ├── CMakeLists.txt │ └── td/ │ └── net/ │ ├── DarwinHttp.h │ ├── DarwinHttp.mm │ ├── GetHostByNameActor.cpp │ ├── GetHostByNameActor.h │ ├── HttpChunkedByteFlow.cpp │ ├── HttpChunkedByteFlow.h │ ├── HttpConnectionBase.cpp │ ├── HttpConnectionBase.h │ ├── HttpContentLengthByteFlow.cpp │ ├── HttpContentLengthByteFlow.h │ ├── HttpFile.cpp │ ├── HttpFile.h │ ├── HttpHeaderCreator.cpp │ ├── HttpHeaderCreator.h │ ├── HttpInboundConnection.cpp │ ├── HttpInboundConnection.h │ ├── HttpOutboundConnection.cpp │ ├── HttpOutboundConnection.h │ ├── HttpProxy.cpp │ ├── HttpProxy.h │ ├── HttpQuery.cpp │ ├── HttpQuery.h │ ├── HttpReader.cpp │ ├── HttpReader.h │ ├── NetStats.h │ ├── Socks5.cpp │ ├── Socks5.h │ ├── SslCtx.cpp │ ├── SslCtx.h │ ├── SslStream.cpp │ ├── SslStream.h │ ├── TcpListener.cpp │ ├── TcpListener.h │ ├── TransparentProxy.cpp │ ├── TransparentProxy.h │ ├── Wget.cpp │ └── Wget.h ├── tdtl/ │ ├── CMakeLists.txt │ └── td/ │ └── tl/ │ ├── tl_config.cpp │ ├── tl_config.h │ ├── tl_core.cpp │ ├── tl_core.h │ ├── tl_file_outputer.cpp │ ├── tl_file_outputer.h │ ├── tl_file_utils.cpp │ ├── tl_file_utils.h │ ├── tl_generate.cpp │ ├── tl_generate.h │ ├── tl_outputer.cpp │ ├── tl_outputer.h │ ├── tl_simple.h │ ├── tl_simple_parser.h │ ├── tl_string_outputer.cpp │ ├── tl_string_outputer.h │ ├── tl_writer.cpp │ └── tl_writer.h ├── tdutils/ │ ├── CMakeLists.txt │ ├── generate/ │ │ ├── CMakeLists.txt │ │ ├── generate_mime_types_gperf.cpp │ │ └── mime_types.txt │ ├── td/ │ │ └── utils/ │ │ ├── AesCtrByteFlow.h │ │ ├── AsyncFileLog.cpp │ │ ├── AsyncFileLog.h │ │ ├── AtomicRead.h │ │ ├── BigNum.cpp │ │ ├── BigNum.h │ │ ├── BufferedFd.h │ │ ├── BufferedReader.h │ │ ├── BufferedUdp.cpp │ │ ├── BufferedUdp.h │ │ ├── ByteFlow.h │ │ ├── CancellationToken.h │ │ ├── ChainScheduler.h │ │ ├── ChangesProcessor.h │ │ ├── Closure.h │ │ ├── CombinedLog.h │ │ ├── ConcurrentHashTable.h │ │ ├── Container.h │ │ ├── Context.h │ │ ├── DecTree.h │ │ ├── Destructor.h │ │ ├── Ed25519.cpp │ │ ├── Ed25519.h │ │ ├── Enumerator.h │ │ ├── EpochBasedMemoryReclamation.h │ │ ├── ExitGuard.cpp │ │ ├── ExitGuard.h │ │ ├── FileLog.cpp │ │ ├── FileLog.h │ │ ├── FlatHashMap.h │ │ ├── FlatHashMapChunks.h │ │ ├── FlatHashSet.h │ │ ├── FlatHashTable.cpp │ │ ├── FlatHashTable.h │ │ ├── FloodControlFast.h │ │ ├── FloodControlGlobal.cpp │ │ ├── FloodControlGlobal.h │ │ ├── FloodControlStrict.h │ │ ├── Gzip.cpp │ │ ├── Gzip.h │ │ ├── GzipByteFlow.cpp │ │ ├── GzipByteFlow.h │ │ ├── Hash.h │ │ ├── HashMap.h │ │ ├── HashSet.h │ │ ├── HashTableUtils.h │ │ ├── HazardPointers.h │ │ ├── Heap.h │ │ ├── Hints.cpp │ │ ├── Hints.h │ │ ├── HttpDate.cpp │ │ ├── HttpDate.h │ │ ├── HttpUrl.cpp │ │ ├── HttpUrl.h │ │ ├── JsonBuilder.cpp │ │ ├── JsonBuilder.h │ │ ├── List.h │ │ ├── MapNode.h │ │ ├── MemoryLog.h │ │ ├── MimeType.cpp │ │ ├── MimeType.h │ │ ├── MovableValue.h │ │ ├── MpmcQueue.cpp │ │ ├── MpmcQueue.h │ │ ├── MpmcWaiter.h │ │ ├── MpscLinkQueue.h │ │ ├── MpscPollableQueue.h │ │ ├── Named.h │ │ ├── NullLog.h │ │ ├── ObjectPool.h │ │ ├── Observer.h │ │ ├── OptionParser.cpp │ │ ├── OptionParser.h │ │ ├── OrderedEventsProcessor.h │ │ ├── Parser.h │ │ ├── PathView.cpp │ │ ├── PathView.h │ │ ├── Promise.h │ │ ├── Random.cpp │ │ ├── Random.h │ │ ├── ScopeGuard.h │ │ ├── SetNode.h │ │ ├── SharedObjectPool.h │ │ ├── SharedSlice.cpp │ │ ├── SharedSlice.h │ │ ├── Slice-decl.h │ │ ├── Slice.cpp │ │ ├── Slice.h │ │ ├── SliceBuilder.h │ │ ├── Span.h │ │ ├── SpinLock.h │ │ ├── StackAllocator.cpp │ │ ├── StackAllocator.h │ │ ├── Status.cpp │ │ ├── Status.h │ │ ├── StealingQueue.h │ │ ├── Storer.h │ │ ├── StorerBase.h │ │ ├── StringBuilder.cpp │ │ ├── StringBuilder.h │ │ ├── ThreadLocalStorage.h │ │ ├── ThreadSafeCounter.h │ │ ├── Time.cpp │ │ ├── Time.h │ │ ├── TimedStat.h │ │ ├── Timer.cpp │ │ ├── Timer.h │ │ ├── TlDowncastHelper.h │ │ ├── TlStorerToString.h │ │ ├── TsCerr.cpp │ │ ├── TsCerr.h │ │ ├── TsFileLog.cpp │ │ ├── TsFileLog.h │ │ ├── TsList.h │ │ ├── TsLog.cpp │ │ ├── TsLog.h │ │ ├── UInt.h │ │ ├── Variant.h │ │ ├── VectorQueue.h │ │ ├── WaitFreeHashMap.h │ │ ├── WaitFreeHashSet.h │ │ ├── WaitFreeVector.h │ │ ├── algorithm.h │ │ ├── as.h │ │ ├── base64.cpp │ │ ├── base64.h │ │ ├── benchmark.h │ │ ├── bits.h │ │ ├── buffer.cpp │ │ ├── buffer.h │ │ ├── check.cpp │ │ ├── check.h │ │ ├── common.h │ │ ├── config.h.in │ │ ├── crypto.cpp │ │ ├── crypto.h │ │ ├── emoji.cpp │ │ ├── emoji.h │ │ ├── filesystem.cpp │ │ ├── filesystem.h │ │ ├── find_boundary.cpp │ │ ├── find_boundary.h │ │ ├── fixed_vector.h │ │ ├── format.h │ │ ├── int_types.h │ │ ├── invoke.h │ │ ├── logging.cpp │ │ ├── logging.h │ │ ├── misc.cpp │ │ ├── misc.h │ │ ├── optional.h │ │ ├── overloaded.h │ │ ├── port/ │ │ │ ├── Clocks.cpp │ │ │ ├── Clocks.h │ │ │ ├── CxCli.h │ │ │ ├── EventFd.h │ │ │ ├── EventFdBase.h │ │ │ ├── FileFd.cpp │ │ │ ├── FileFd.h │ │ │ ├── FromApp.h │ │ │ ├── IPAddress.cpp │ │ │ ├── IPAddress.h │ │ │ ├── IoSlice.h │ │ │ ├── MemoryMapping.cpp │ │ │ ├── MemoryMapping.h │ │ │ ├── Mutex.h │ │ │ ├── Poll.h │ │ │ ├── PollBase.h │ │ │ ├── PollFlags.cpp │ │ │ ├── PollFlags.h │ │ │ ├── RwMutex.h │ │ │ ├── ServerSocketFd.cpp │ │ │ ├── ServerSocketFd.h │ │ │ ├── SocketFd.cpp │ │ │ ├── SocketFd.h │ │ │ ├── Stat.cpp │ │ │ ├── Stat.h │ │ │ ├── StdStreams.cpp │ │ │ ├── StdStreams.h │ │ │ ├── UdpSocketFd.cpp │ │ │ ├── UdpSocketFd.h │ │ │ ├── config.h │ │ │ ├── detail/ │ │ │ │ ├── Epoll.cpp │ │ │ │ ├── Epoll.h │ │ │ │ ├── EventFdBsd.cpp │ │ │ │ ├── EventFdBsd.h │ │ │ │ ├── EventFdLinux.cpp │ │ │ │ ├── EventFdLinux.h │ │ │ │ ├── EventFdWindows.cpp │ │ │ │ ├── EventFdWindows.h │ │ │ │ ├── Iocp.cpp │ │ │ │ ├── Iocp.h │ │ │ │ ├── KQueue.cpp │ │ │ │ ├── KQueue.h │ │ │ │ ├── NativeFd.cpp │ │ │ │ ├── NativeFd.h │ │ │ │ ├── Poll.cpp │ │ │ │ ├── Poll.h │ │ │ │ ├── PollableFd.h │ │ │ │ ├── Select.cpp │ │ │ │ ├── Select.h │ │ │ │ ├── ThreadIdGuard.cpp │ │ │ │ ├── ThreadIdGuard.h │ │ │ │ ├── ThreadPthread.cpp │ │ │ │ ├── ThreadPthread.h │ │ │ │ ├── ThreadStl.h │ │ │ │ ├── WineventPoll.cpp │ │ │ │ ├── WineventPoll.h │ │ │ │ └── skip_eintr.h │ │ │ ├── path.cpp │ │ │ ├── path.h │ │ │ ├── platform.cpp │ │ │ ├── platform.h │ │ │ ├── rlimit.cpp │ │ │ ├── rlimit.h │ │ │ ├── signals.cpp │ │ │ ├── signals.h │ │ │ ├── sleep.cpp │ │ │ ├── sleep.h │ │ │ ├── stacktrace.cpp │ │ │ ├── stacktrace.h │ │ │ ├── thread.h │ │ │ ├── thread_local.cpp │ │ │ ├── thread_local.h │ │ │ ├── uname.cpp │ │ │ ├── uname.h │ │ │ ├── user.cpp │ │ │ ├── user.h │ │ │ ├── wstring_convert.cpp │ │ │ └── wstring_convert.h │ │ ├── queue.h │ │ ├── simple_tests.h │ │ ├── tests.cpp │ │ ├── tests.h │ │ ├── tl_helpers.h │ │ ├── tl_parsers.cpp │ │ ├── tl_parsers.h │ │ ├── tl_storers.h │ │ ├── translit.cpp │ │ ├── translit.h │ │ ├── type_traits.h │ │ ├── uint128.h │ │ ├── unicode.cpp │ │ ├── unicode.h │ │ ├── unique_ptr.h │ │ ├── unique_value_ptr.h │ │ ├── utf8.cpp │ │ └── utf8.h │ └── test/ │ ├── ChainScheduler.cpp │ ├── ConcurrentHashMap.cpp │ ├── Enumerator.cpp │ ├── EpochBasedMemoryReclamation.cpp │ ├── HashSet.cpp │ ├── HazardPointers.cpp │ ├── HttpUrl.cpp │ ├── List.cpp │ ├── MpmcQueue.cpp │ ├── MpmcWaiter.cpp │ ├── MpscLinkQueue.cpp │ ├── OptionParser.cpp │ ├── OrderedEventsProcessor.cpp │ ├── SharedObjectPool.cpp │ ├── SharedSlice.cpp │ ├── StealingQueue.cpp │ ├── WaitFreeHashMap.cpp │ ├── WaitFreeHashSet.cpp │ ├── WaitFreeVector.cpp │ ├── bitmask.cpp │ ├── buffer.cpp │ ├── crypto.cpp │ ├── emoji.cpp │ ├── filesystem.cpp │ ├── gzip.cpp │ ├── hashset_benchmark.cpp │ ├── heap.cpp │ ├── json.cpp │ ├── log.cpp │ ├── misc.cpp │ ├── port.cpp │ ├── pq.cpp │ └── variant.cpp ├── test/ │ ├── CMakeLists.txt │ ├── country_info.cpp │ ├── crypto.cpp │ ├── data.cpp │ ├── data.h │ ├── db.cpp │ ├── fuzz_url.cpp │ ├── http.cpp │ ├── link.cpp │ ├── main.cpp │ ├── message_entities.cpp │ ├── mtproto.cpp │ ├── online.cpp │ ├── poll.cpp │ ├── query_merger.cpp │ ├── secret.cpp │ ├── secure_storage.cpp │ ├── set_with_position.cpp │ ├── string_cleaning.cpp │ ├── tdclient.cpp │ └── tqueue.cpp └── update_version.sh
Showing preview only (1,781K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (19278 symbols across 1484 files)
FILE: SplitSource.php
function disjoint_set_find (line 3) | function disjoint_set_find(&$parents, $x) {
function disjoint_set_union (line 10) | function disjoint_set_union(&$parents, $x, $y) {
function split_file (line 23) | function split_file($file, $chunks, $undo) {
FILE: benchmark/bench_actor.cpp
type TestActor (line 22) | struct TestActor final : public td::Actor {
method start_up (line 25) | void start_up() final {
method tear_down (line 30) | void tear_down() final {
type td (line 39) | namespace td {
class ActorTraits<TestActor> (line 41) | class ActorTraits<TestActor> {
class CreateActorBench (line 48) | class CreateActorBench final : public td::Benchmark {
method start_up (line 51) | void start_up() final {
method tear_down (line 56) | void tear_down() final {
method get_description (line 62) | td::string get_description() const final {
method run (line 66) | void run(int n) final {
class RingBench (line 77) | class RingBench final : public td::Benchmark {
type PassActor (line 79) | struct PassActor
method pass (line 99) | void pass(int n) {
method raw_event (line 124) | void raw_event(const td::Event::Raw &raw) final {
method start_up (line 128) | void start_up() final {
method wakeup (line 131) | void wakeup() final {
method get_description (line 88) | td::string get_description() const final {
type PassActor (line 94) | struct PassActor final : public td::Actor {
method pass (line 99) | void pass(int n) {
method raw_event (line 124) | void raw_event(const td::Event::Raw &raw) final {
method start_up (line 128) | void start_up() final {
method wakeup (line 131) | void wakeup() final {
method RingBench (line 140) | RingBench(int actor_n, int thread_n) : actor_n_(actor_n), thread_n_(th...
method start_up (line 143) | void start_up() final {
method run (line 158) | void run(int n) final {
method tear_down (line 166) | void tear_down() final {
class QueryBench (line 173) | class QueryBench final : public td::Benchmark {
method get_description (line 175) | td::string get_description() const final {
class ClientActor (line 181) | class ClientActor final : public td::Actor {
class Callback (line 183) | class Callback {
method Callback (line 185) | Callback() = default;
method Callback (line 186) | Callback(const Callback &) = delete;
method Callback (line 187) | Callback &operator=(const Callback &) = delete;
method Callback (line 188) | Callback(Callback &&) = delete;
method Callback (line 189) | Callback &operator=(Callback &&) = delete;
method ClientActor (line 193) | explicit ClientActor(td::unique_ptr<Callback> callback) : callback_(...
method f (line 195) | void f(int x) {
method dummy (line 198) | void dummy(int x, int *y) {
method f_immediate_promise (line 201) | void f_immediate_promise(int x, td::PromiseActor<int> &&promise) {
method f_promise (line 204) | void f_promise(td::Promise<> promise) {
class ServerActor (line 212) | class ServerActor final : public td::Actor {
class ClientCallback (line 214) | class ClientCallback final : public ClientActor::Callback {
method ClientCallback (line 216) | explicit ClientCallback(td::ActorId<ServerActor> server) : server_...
method on_result (line 218) | void on_result(int x) final {
method start_up (line 225) | void start_up() final {
method on_result (line 229) | void on_result(int x) {
method wakeup (line 234) | void wakeup() final {
method run (line 277) | void run(int n) {
method raw_event (line 282) | void raw_event(const td::Event::Raw &event) final {
method result (line 287) | void result(int val) {
method start_up (line 298) | void start_up() final {
method run (line 305) | void run(int n) final {
method tear_down (line 316) | void tear_down() final {
function main (line 327) | int main() {
FILE: benchmark/bench_crypto.cpp
class SHA1Bench (line 34) | class SHA1Bench final : public td::Benchmark {
method get_description (line 38) | std::string get_description() const final {
method start_up (line 42) | void start_up() final {
method run (line 46) | void run(int n) final {
class SHA1ShortBench (line 55) | class SHA1ShortBench final : public td::Benchmark {
method get_description (line 59) | std::string get_description() const final {
method start_up (line 63) | void start_up() final {
method run (line 67) | void run(int n) final {
class SHA256ShortBench (line 75) | class SHA256ShortBench final : public td::Benchmark {
method get_description (line 79) | std::string get_description() const final {
method start_up (line 83) | void start_up() final {
method run (line 87) | void run(int n) final {
class SHA512ShortBench (line 95) | class SHA512ShortBench final : public td::Benchmark {
method get_description (line 99) | std::string get_description() const final {
method start_up (line 103) | void start_up() final {
method run (line 107) | void run(int n) final {
class HmacSha256ShortBench (line 115) | class HmacSha256ShortBench final : public td::Benchmark {
method get_description (line 119) | std::string get_description() const final {
method start_up (line 123) | void start_up() final {
method run (line 127) | void run(int n) final {
class HmacSha512ShortBench (line 136) | class HmacSha512ShortBench final : public td::Benchmark {
method get_description (line 140) | std::string get_description() const final {
method start_up (line 144) | void start_up() final {
method run (line 148) | void run(int n) final {
class AesEcbBench (line 157) | class AesEcbBench final : public td::Benchmark {
method get_description (line 163) | std::string get_description() const final {
method start_up (line 167) | void start_up() final {
method run (line 173) | void run(int n) final {
class AesIgeEncryptBench (line 186) | class AesIgeEncryptBench final : public td::Benchmark {
method get_description (line 192) | std::string get_description() const final {
method start_up (line 196) | void start_up() final {
method run (line 202) | void run(int n) final {
class AesIgeDecryptBench (line 212) | class AesIgeDecryptBench final : public td::Benchmark {
method get_description (line 218) | std::string get_description() const final {
method start_up (line 222) | void start_up() final {
method run (line 228) | void run(int n) final {
class AesCtrBench (line 238) | class AesCtrBench final : public td::Benchmark {
method get_description (line 244) | std::string get_description() const final {
method start_up (line 248) | void start_up() final {
method run (line 254) | void run(int n) final {
class AesCtrOpenSSLBench (line 265) | class AesCtrOpenSSLBench final : public td::Benchmark {
method get_description (line 271) | std::string get_description() const final {
method start_up (line 275) | void start_up() final {
method run (line 281) | void run(int n) final {
class AesCbcDecryptBench (line 300) | class AesCbcDecryptBench final : public td::Benchmark {
method get_description (line 306) | std::string get_description() const final {
method start_up (line 310) | void start_up() final {
method run (line 316) | void run(int n) final {
class AesCbcEncryptBench (line 324) | class AesCbcEncryptBench final : public td::Benchmark {
method get_description (line 330) | std::string get_description() const final {
method start_up (line 334) | void start_up() final {
method run (line 340) | void run(int n) final {
class AesIgeShortBench (line 349) | class AesIgeShortBench final : public td::Benchmark {
method get_description (line 355) | std::string get_description() const final {
method start_up (line 359) | void start_up() final {
method run (line 365) | void run(int n) final {
class Crc32Bench (line 452) | class Crc32Bench final : public td::Benchmark {
method get_description (line 456) | std::string get_description() const final {
method start_up (line 460) | void start_up() final {
method run (line 464) | void run(int n) final {
class Crc64Bench (line 473) | class Crc64Bench final : public td::Benchmark {
method get_description (line 477) | std::string get_description() const final {
method start_up (line 481) | void start_up() final {
method run (line 485) | void run(int n) final {
function main (line 494) | int main() {
FILE: benchmark/bench_db.cpp
class TdKvBench (line 31) | class TdKvBench final : public td::Benchmark {
method TdKvBench (line 36) | explicit TdKvBench(td::string name) {
method get_description (line 40) | td::string get_description() const final {
class Main (line 44) | class Main final : public td::Actor {
method Main (line 46) | explicit Main(int n) : n_(n) {
method loop (line 50) | void loop() final {
method start_up_n (line 74) | void start_up_n(int n) final {
method run (line 79) | void run(int n) final {
method tear_down (line 87) | void tear_down() final {
class SqliteKVBench (line 93) | class SqliteKVBench final : public td::Benchmark {
method get_description (line 95) | td::string get_description() const final {
method start_up (line 98) | void start_up() final {
method run (line 113) | void run(int n) final {
function init_db (line 134) | static td::Status init_db(td::SqliteDb &db) {
class SqliteKeyValueAsyncBench (line 145) | class SqliteKeyValueAsyncBench final : public td::Benchmark {
method get_description (line 147) | td::string get_description() const final {
method start_up (line 150) | void start_up() final {
method run (line 154) | void run(int n) final {
method tear_down (line 163) | void tear_down() final {
method do_start_up (line 182) | td::Status do_start_up() {
class SeqKvBench (line 202) | class SeqKvBench final : public td::Benchmark {
method get_description (line 203) | td::string get_description() const final {
method run (line 208) | void run(int n) final {
class BinlogKeyValueBench (line 216) | class BinlogKeyValueBench final : public td::Benchmark {
method get_description (line 217) | td::string get_description() const final {
method start_up (line 222) | void start_up() final {
method run (line 226) | void run(int n) final {
function main (line 233) | int main() {
FILE: benchmark/bench_empty.cpp
function main (line 7) | int main() {
FILE: benchmark/bench_handshake.cpp
class HandshakeBench (line 28) | class HandshakeBench final : public td::Benchmark {
method get_description (line 29) | td::string get_description() const final {
class FakeDhCallback (line 33) | class FakeDhCallback final : public td::mtproto::DhCallback {
method is_good_prime (line 35) | int is_good_prime(td::Slice prime_str) const final {
method add_good_prime (line 42) | void add_good_prime(td::Slice prime_str) const final {
method add_bad_prime (line 45) | void add_bad_prime(td::Slice prime_str) const final {
method run (line 51) | void run(int n) final {
function main (line 70) | int main() {
FILE: benchmark/bench_http.cpp
class HttpClient (line 26) | class HttpClient final : public td::HttpOutboundConnection::Callback {
method start_up (line 27) | void start_up() final {
method tear_down (line 40) | void tear_down() final {
method loop (line 46) | void loop() final {
method handle (line 55) | void handle(td::unique_ptr<td::HttpQuery> result) final {
method on_connection_error (line 59) | void on_connection_error(td::Status error) final {
function main (line 67) | int main() {
FILE: benchmark/bench_http_reader.cpp
class HttpReaderBench (line 19) | class HttpReaderBench final : public td::Benchmark {
method get_description (line 20) | std::string get_description() const final {
method run (line 24) | void run(int n) final {
method start_up (line 49) | void start_up() final {
class BufferBench (line 56) | class BufferBench final : public td::Benchmark {
method get_description (line 57) | std::string get_description() const final {
method run (line 61) | void run(int n) final {
method start_up (line 77) | void start_up() final {
class FindBoundaryBench (line 83) | class FindBoundaryBench final : public td::Benchmark {
method get_description (line 84) | std::string get_description() const final {
method run (line 88) | void run(int n) final {
method start_up (line 108) | void start_up() final {
function main (line 114) | int main() {
FILE: benchmark/bench_http_server.cpp
class HelloWorld (line 23) | class HelloWorld final : public td::HttpInboundConnection::Callback {
method handle (line 25) | void handle(td::unique_ptr<td::HttpQuery> query, td::ActorOwn<td::Http...
method hangup (line 42) | void hangup() final {
class Server (line 49) | class Server final : public td::TcpListener::Callback {
method start_up (line 51) | void start_up() final {
method accept (line 55) | void accept(td::SocketFd fd) final {
method hangup (line 64) | void hangup() final {
function main (line 75) | int main() {
FILE: benchmark/bench_http_server_cheat.cpp
class HelloWorld (line 25) | class HelloWorld final : public td::Actor {
method HelloWorld (line 27) | explicit HelloWorld(td::SocketFd socket_fd) : socket_fd_(std::move(soc...
method start_up (line 40) | void start_up() final {
method loop (line 54) | void loop() final {
method do_loop (line 62) | td::Status do_loop() {
method write_loop (line 71) | td::Status write_loop() {
method read_loop (line 82) | td::Status read_loop() {
class Server (line 100) | class Server final : public td::TcpListener::Callback {
method start_up (line 102) | void start_up() final {
method accept (line 106) | void accept(td::SocketFd fd) final {
method hangup (line 112) | void hangup() final {
function main (line 123) | int main() {
FILE: benchmark/bench_http_server_fast.cpp
class HttpEchoConnection (line 23) | class HttpEchoConnection final : public td::Actor {
method HttpEchoConnection (line 25) | explicit HttpEchoConnection(td::SocketFd fd) : fd_(std::move(fd)) {
method start_up (line 32) | void start_up() final {
method tear_down (line 36) | void tear_down() final {
method handle_query (line 41) | void handle_query() {
method loop (line 56) | void loop() final {
method loop_read (line 67) | td::Status loop_read() {
method loop_write (line 79) | td::Status loop_write() {
class Server (line 86) | class Server final : public td::TcpListener::Callback {
method start_up (line 88) | void start_up() final {
method accept (line 92) | void accept(td::SocketFd fd) final {
method hangup (line 97) | void hangup() final {
function main (line 107) | int main() {
FILE: benchmark/bench_log.cpp
function create_tmp_file (line 20) | std::string create_tmp_file() {
class IostreamWriteBench (line 38) | class IostreamWriteBench final : public td::Benchmark {
method get_description (line 46) | std::string get_description() const final {
method start_up (line 50) | void start_up() final {
method run (line 57) | void run(int n) final {
method tear_down (line 63) | void tear_down() final {
class FILEWriteBench (line 69) | class FILEWriteBench final : public td::Benchmark {
method get_description (line 77) | std::string get_description() const final {
method start_up (line 81) | void start_up() final {
method run (line 87) | void run(int n) final {
method tear_down (line 94) | void tear_down() final {
class ALogWriteBench (line 103) | class ALogWriteBench final : public td::Benchmark {
method get_description (line 105) | std::string get_description() const final {
method start_up (line 108) | void start_up() final {
method run (line 110) | void run(int n) final {
method tear_down (line 115) | void tear_down() final {
class LogWriteBench (line 120) | class LogWriteBench final : public td::Benchmark {
method get_description (line 129) | std::string get_description() const final {
method start_up (line 133) | void start_up() final {
method run (line 140) | void run(int n) final {
method tear_down (line 146) | void tear_down() final {
function main (line 153) | int main() {
FILE: benchmark/bench_misc.cpp
class F (line 45) | class F {
method F (line 49) | explicit F(td::uint32 &sum) : sum(sum) {
function get_file_object (line 68) | static td::td_api::object_ptr<td::td_api::file> get_file_object() {
type A (line 152) | struct A {
class PipeBench (line 192) | class PipeBench final : public td::Benchmark {
method get_description (line 196) | td::string get_description() const final {
method start_up (line 200) | void start_up() final {
method run (line 205) | void run(int n) final {
method tear_down (line 218) | void tear_down() final {
class SemBench (line 226) | class SemBench final : public td::Benchmark {
method get_description (line 230) | td::string get_description() const final {
method start_up (line 234) | void start_up() final {
method run (line 239) | void run(int n) final {
method tear_down (line 246) | void tear_down() final {
class UtimeBench (line 253) | class UtimeBench final : public td::Benchmark {
method start_up (line 255) | void start_up() final {
method get_description (line 258) | td::string get_description() const final {
method run (line 261) | void run(int n) final {
class CreateFileBench (line 283) | class CreateFileBench final : public td::Benchmark {
method get_description (line 284) | td::string get_description() const final {
method start_up (line 287) | void start_up() final {
method run (line 290) | void run(int n) final {
method tear_down (line 295) | void tear_down() final {
class WalkPathBench (line 300) | class WalkPathBench final : public td::Benchmark {
method get_description (line 301) | td::string get_description() const final {
method start_up_n (line 304) | void start_up_n(int n) final {
method run (line 310) | void run(int n) final {
method tear_down (line 320) | void tear_down() final {
class AtomicReleaseIncBench (line 327) | class AtomicReleaseIncBench final : public td::Benchmark {
method get_description (line 328) | td::string get_description() const final {
method run (line 333) | void run(int n) final {
class AtomicReleaseCasIncBench (line 351) | class AtomicReleaseCasIncBench final : public td::Benchmark {
method get_description (line 352) | td::string get_description() const final {
method run (line 357) | void run(int n) final {
class RwMutexReadBench (line 377) | class RwMutexReadBench final : public td::Benchmark {
method get_description (line 378) | td::string get_description() const final {
method run (line 382) | void run(int n) final {
class RwMutexWriteBench (line 398) | class RwMutexWriteBench final : public td::Benchmark {
method get_description (line 399) | td::string get_description() const final {
method run (line 403) | void run(int n) final {
class ThreadSafeCounterBench (line 418) | class ThreadSafeCounterBench final : public td::Benchmark {
method get_description (line 422) | td::string get_description() const final {
method run (line 425) | void run(int n) final {
method ThreadSafeCounterBench (line 442) | explicit ThreadSafeCounterBench(int thread_count) : thread_count_(thre...
class AtomicCounterBench (line 448) | class AtomicCounterBench final : public td::Benchmark {
method get_description (line 452) | td::string get_description() const final {
method run (line 455) | void run(int n) final {
method AtomicCounterBench (line 472) | explicit AtomicCounterBench(int thread_count) : thread_count_(thread_c...
class IdDuplicateCheckerOld (line 480) | class IdDuplicateCheckerOld {
method get_description (line 482) | static td::string get_description() {
method check (line 485) | td::Status check(td::uint64 message_id) {
class IdDuplicateCheckerNew (line 510) | class IdDuplicateCheckerNew {
method get_description (line 512) | static td::string get_description() {
method check (line 515) | td::Status check(td::uint64 message_id) {
class IdDuplicateCheckerNewOther (line 536) | class IdDuplicateCheckerNewOther {
method get_description (line 538) | static td::string get_description() {
method check (line 541) | td::Status check(td::uint64 message_id) {
class IdDuplicateCheckerNewSimple (line 562) | class IdDuplicateCheckerNewSimple {
method get_description (line 564) | static td::string get_description() {
method check (line 567) | td::Status check(td::uint64 message_id) {
class IdDuplicateCheckerArray (line 589) | class IdDuplicateCheckerArray {
method get_description (line 591) | static td::string get_description() {
method check (line 594) | td::Status check(td::uint64 message_id) {
class DuplicateCheckerBench (line 624) | class DuplicateCheckerBench final : public td::Benchmark {
method get_description (line 625) | td::string get_description() const final {
method run (line 628) | void run(int n) final {
class DuplicateCheckerBenchRepeat (line 637) | class DuplicateCheckerBenchRepeat final : public td::Benchmark {
method get_description (line 638) | td::string get_description() const final {
method run (line 641) | void run(int n) final {
class DuplicateCheckerBenchRepeatOnly (line 660) | class DuplicateCheckerBenchRepeatOnly final : public td::Benchmark {
method get_description (line 661) | td::string get_description() const final {
method run (line 664) | void run(int n) final {
class DuplicateCheckerBenchReverse (line 674) | class DuplicateCheckerBenchReverse final : public td::Benchmark {
method get_description (line 675) | td::string get_description() const final {
method run (line 678) | void run(int n) final {
class DuplicateCheckerBenchEvenOdd (line 688) | class DuplicateCheckerBenchEvenOdd final : public td::Benchmark {
method get_description (line 689) | td::string get_description() const final {
method run (line 692) | void run(int n) final {
function main (line 755) | int main() {
FILE: benchmark/bench_queue.cpp
class Backoff (line 45) | class Backoff {
method next (line 49) | bool next() {
class PipeQueue (line 62) | class PipeQueue {
method init (line 67) | void init() {
method put (line 75) | void put(qvalue_t value) {
method qvalue_t (line 80) | qvalue_t get() {
method destroy (line 87) | void destroy() {
class VarQueue (line 93) | class VarQueue {
method init (line 97) | void init() {
method put (line 101) | void put(qvalue_t value) {
method qvalue_t (line 105) | qvalue_t try_get() {
method acquire (line 111) | void acquire() {
method qvalue_t (line 115) | qvalue_t get() {
method destroy (line 127) | void destroy() {
class SemQueue (line 131) | class SemQueue {
method init (line 136) | void init() {
method put (line 141) | void put(qvalue_t value) {
method qvalue_t (line 146) | qvalue_t get() {
method destroy (line 152) | void destroy() {
method reader_flush (line 158) | void reader_flush() {
method writer_flush (line 161) | void writer_flush() {
method writer_put (line 164) | void writer_put(qvalue_t value) {
method reader_wait (line 168) | int reader_wait() {
method qvalue_t (line 172) | qvalue_t reader_get_unsafe() {
class EventfdQueue (line 179) | class EventfdQueue {
method init (line 184) | void init() {
method put (line 188) | void put(qvalue_t value) {
method qvalue_t (line 194) | qvalue_t get() {
method destroy (line 201) | void destroy() {
class BufferQueue (line 210) | class BufferQueue {
type node (line 211) | struct node {
type Position (line 217) | struct Position {
method init (line 225) | void init() {
method init (line 236) | void init() {
method reader_empty (line 241) | bool reader_empty() {
method writer_empty (line 245) | bool writer_empty() {
method reader_ready (line 249) | int reader_ready() {
method writer_ready (line 253) | int writer_ready() {
method qvalue_t (line 257) | qvalue_t get_unsafe() {
method flush_reader (line 261) | void flush_reader() {
method update_reader (line 265) | int update_reader() {
method put_unsafe (line 270) | void put_unsafe(qvalue_t val) {
method flush_writer (line 274) | void flush_writer() {
method update_writer (line 278) | int update_writer() {
method wait_reader (line 283) | int wait_reader() {
method qvalue_t (line 293) | qvalue_t get_noflush() {
method qvalue_t (line 307) | qvalue_t get() {
method put_noflush (line 313) | void put_noflush(qvalue_t val) {
method put (line 324) | void put(qvalue_t val) {
method destroy (line 329) | void destroy() {
class BufferedFdQueue (line 334) | class BufferedFdQueue {
method init (line 341) | void init() {
method put (line 346) | void put(qvalue_t value) {
method put_noflush (line 355) | void put_noflush(qvalue_t value) {
method flush_writer (line 358) | void flush_writer() {
method flush_reader (line 367) | void flush_reader() {
method qvalue_t (line 371) | qvalue_t get_unsafe_flush() {
method qvalue_t (line 377) | qvalue_t get_unsafe() {
method wait_reader (line 381) | int wait_reader() {
method qvalue_t (line 403) | qvalue_t get() {
method destroy (line 426) | void destroy() {
class FdQueue (line 432) | class FdQueue {
method init (line 439) | void init() {
method put (line 444) | void put(qvalue_t value) {
method qvalue_t (line 453) | qvalue_t get() {
method destroy (line 483) | void destroy() {
class SemBackoffQueue (line 491) | class SemBackoffQueue {
method init (line 496) | void init() {
method put (line 501) | void put(qvalue_t value) {
method qvalue_t (line 506) | qvalue_t get() {
method destroy (line 518) | void destroy() {
class SemCheatQueue (line 524) | class SemCheatQueue {
method init (line 529) | void init() {
method put (line 534) | void put(qvalue_t value) {
method qvalue_t (line 539) | qvalue_t get() {
method destroy (line 553) | void destroy() {
class QueueBenchmark2 (line 560) | class QueueBenchmark2 final : public td::Benchmark {
method QueueBenchmark2 (line 572) | QueueBenchmark2(int connections_n, td::string name) : connections_n(co...
method get_description (line 575) | td::string get_description() const final {
method start_up (line 579) | void start_up() final {
method tear_down (line 584) | void tear_down() final {
method server_process (line 589) | void server_process(qvalue_t value) {
method client_process (line 619) | void client_process(qvalue_t value) {
method run (line 664) | void run(int n) final {
class QueueBenchmark (line 679) | class QueueBenchmark final : public td::Benchmark {
method QueueBenchmark (line 687) | QueueBenchmark(int connections_n, td::string name) : connections_n(con...
method get_description (line 690) | td::string get_description() const final {
method start_up (line 694) | void start_up() final {
method tear_down (line 699) | void tear_down() final {
method run (line 771) | void run(int n) final {
class RingBenchmark (line 786) | class RingBenchmark final : public td::Benchmark {
type Thread (line 789) | struct Thread {
method start_up (line 818) | void start_up() final {
method tear_down (line 826) | void tear_down() final {
method run (line 832) | void run(int n) final {
function main (line 885) | int main() {
FILE: benchmark/bench_tddb.cpp
function init_db (line 30) | static td::Status init_db(td::SqliteDb &db) {
class MessageDbBench (line 39) | class MessageDbBench final : public td::Benchmark {
method get_description (line 41) | td::string get_description() const final {
method start_up (line 44) | void start_up() final {
method run (line 49) | void run(int n) final {
method tear_down (line 69) | void tear_down() final {
method do_start_up (line 89) | td::Status do_start_up() {
function main (line 110) | int main() {
FILE: benchmark/check_proxy.cpp
function usage (line 22) | static void usage() {
function main (line 35) | int main(int argc, char **argv) {
FILE: benchmark/check_tls.cpp
function is_quadratic_residue (line 27) | static bool is_quadratic_residue(const td::BigNum &a) {
type TlsInfo (line 45) | struct TlsInfo {
function test_tls (line 50) | td::Result<TlsInfo> test_tls(const td::string &url) {
function main (line 268) | int main(int argc, char *argv[]) {
FILE: benchmark/hashmap_build.cpp
function main (line 544) | int main() {
FILE: benchmark/hashset_memory.cpp
function use_memprof (line 37) | static bool use_memprof() {
function get_memory (line 45) | static td::uint64 get_memory() {
class Generator (line 56) | class Generator {
method T (line 58) | T next() {
method dyn_size (line 61) | static size_t dyn_size() {
class IntGenerator (line 67) | class IntGenerator {
method T (line 69) | T next() {
method dyn_size (line 72) | static size_t dyn_size() {
class Generator<td::int32> (line 81) | class Generator<td::int32> final : public IntGenerator<td::int32> {}
class Generator<td::int64> (line 83) | class Generator<td::int64> final : public IntGenerator<td::int64> {}
class Generator<td::unique_ptr<T>> (line 86) | class Generator<td::unique_ptr<T>> {
method next (line 88) | td::unique_ptr<T> next() {
method dyn_size (line 91) | static std::size_t dyn_size() {
function measure (line 97) | static void measure(td::StringBuilder &sb, td::Slice name, td::Slice key...
function print_memory_stats (line 159) | void print_memory_stats(td::Slice name) {
function main (line 181) | int main(int argc, const char *argv[]) {
FILE: benchmark/rmdir.cpp
function main (line 12) | int main(int argc, char *argv[]) {
FILE: benchmark/wget.cpp
function main (line 18) | int main(int argc, char *argv[]) {
FILE: example/cpp/td_example.cpp
type detail (line 25) | namespace detail {
type overload (line 27) | struct overload
type overload<F> (line 30) | struct overload<F> : public F {
method overload (line 31) | explicit overload(F f) : F(f) {
type overload<F, Fs...> (line 35) | struct overload<F, Fs...>
method overload (line 38) | overload(F f, Fs... fs) : overload<F>(f), overload<Fs...>(fs...) {
function overloaded (line 46) | auto overloaded(F... f) {
class TdExample (line 52) | class TdExample {
method TdExample (line 54) | TdExample() {
method loop (line 61) | void loop() {
method restart (line 149) | void restart() {
method send_query (line 154) | void send_query(td_api::object_ptr<td_api::Function> f, std::function<...
method process_response (line 162) | void process_response(td::ClientManager::Response response) {
method get_user_name (line 177) | std::string get_user_name(std::int64_t user_id) const {
method get_chat_title (line 185) | std::string get_chat_title(std::int64_t chat_id) const {
method process_update (line 193) | void process_update(td_api::object_ptr<td_api::Object> update) {
method create_authentication_query_handler (line 231) | auto create_authentication_query_handler() {
method on_authorization_state_update (line 239) | void on_authorization_state_update() {
method check_authentication_error (line 324) | void check_authentication_error(Object object) {
method next_query_id (line 332) | std::uint64_t next_query_id() {
function main (line 337) | int main() {
FILE: example/cpp/tdjson_example.cpp
function main (line 14) | int main() {
FILE: example/csharp/TdExample.cs
class Example (line 19) | class Example
method CreateTdClient (line 35) | private static Td.Client CreateTdClient()
method Print (line 40) | private static void Print(string str)
method ReadLine (line 53) | private static string ReadLine(string str)
method OnAuthorizationStateUpdated (line 62) | private static void OnAuthorizationStateUpdated(TdApi.AuthorizationSta...
method GetChatId (line 148) | private static long GetChatId(string arg)
method GetCommand (line 164) | private static void GetCommand()
method sendMessage (line 206) | private static void sendMessage(long chatId, string message)
method Main (line 216) | static void Main()
class DefaultHandler (line 254) | private class DefaultHandler : Td.ClientResultHandler
method OnResult (line 256) | void Td.ClientResultHandler.OnResult(TdApi.BaseObject @object)
class UpdateHandler (line 262) | private class UpdateHandler : Td.ClientResultHandler
method OnResult (line 264) | void Td.ClientResultHandler.OnResult(TdApi.BaseObject @object)
class AuthorizationRequestHandler (line 277) | private class AuthorizationRequestHandler : Td.ClientResultHandler
method OnResult (line 279) | void Td.ClientResultHandler.OnResult(TdApi.BaseObject @object)
FILE: example/java/org/drinkless/tdlib/Client.java
class Client (line 15) | public final class Client {
type ResultHandler (line 27) | public interface ResultHandler {
method onResult (line 33) | void onResult(TdApi.Object object);
type ExceptionHandler (line 41) | public interface ExceptionHandler {
method onException (line 47) | void onException(Throwable e);
type LogMessageHandler (line 53) | public interface LogMessageHandler {
method onLogMessage (line 62) | void onLogMessage(int verbosityLevel, String message);
class ExecutionException (line 68) | public static class ExecutionException extends Exception {
method ExecutionException (line 77) | ExecutionException (TdApi.Error error) {
method send (line 94) | public void send(TdApi.Function query, ResultHandler resultHandler, Ex...
method send (line 110) | public void send(TdApi.Function query, ResultHandler resultHandler) {
method execute (line 122) | @SuppressWarnings("unchecked")
method create (line 139) | public static Client create(ResultHandler updateHandler, ExceptionHand...
method setLogMessageHandler (line 160) | public static void setLogMessageHandler(int maxVerbosityLevel, Client....
class ResponseReceiver (line 164) | private static class ResponseReceiver implements Runnable {
method run (line 167) | @Override
method processResult (line 178) | private void processResult(int clientId, long id, TdApi.Object objec...
class Handler (line 228) | private static class Handler {
method Handler (line 232) | Handler(ResultHandler resultHandler, ExceptionHandler exceptionHandl...
method Client (line 238) | private Client(ResultHandler updateHandler, ExceptionHandler updateExc...
method createNativeClient (line 250) | private static native int createNativeClient();
method nativeClientSend (line 252) | private static native void nativeClientSend(int nativeClientId, long e...
method nativeClientReceive (line 254) | private static native int nativeClientReceive(int[] clientIds, long[] ...
method nativeClientExecute (line 256) | private static native TdApi.Object nativeClientExecute(TdApi.Function ...
method nativeClientSetLogMessageHandler (line 258) | private static native void nativeClientSetLogMessageHandler(int maxVer...
FILE: example/java/org/drinkless/tdlib/JsonClient.java
class JsonClient (line 12) | public final class JsonClient {
method createClientId (line 26) | public static native int createClientId();
method send (line 33) | public static native void send(int clientId, String request);
method receive (line 40) | public static native String receive(double timeout);
method execute (line 48) | public static native String execute(String request);
type LogMessageHandler (line 53) | public interface LogMessageHandler {
method onLogMessage (line 62) | void onLogMessage(int verbosityLevel, String message);
method setLogMessageHandler (line 72) | public static native void setLogMessageHandler(int maxVerbosityLevel, ...
method JsonClient (line 77) | private JsonClient() {
FILE: example/java/org/drinkless/tdlib/example/Example.java
class Example (line 28) | public final class Example {
method print (line 58) | private static void print(String str) {
method setChatPositions (line 68) | private static void setChatPositions(TdApi.Chat chat, TdApi.ChatPositi...
method onAuthorizationStateUpdated (line 90) | private static void onAuthorizationStateUpdated(TdApi.AuthorizationSta...
method toInt (line 174) | private static int toInt(String arg) {
method getChatId (line 183) | private static long getChatId(String arg) {
method promptString (line 192) | private static String promptString(String prompt) {
method getCommand (line 206) | private static void getCommand() {
method getMainChatList (line 247) | private static void getMainChatList(final int limit) {
method sendMessage (line 290) | private static void sendMessage(long chatId, String message) {
method main (line 302) | public static void main(String[] args) throws InterruptedException {
class OrderedChat (line 338) | private static class OrderedChat implements Comparable<OrderedChat> {
method OrderedChat (line 342) | OrderedChat(long chatId, TdApi.ChatPosition position) {
method compareTo (line 347) | @Override
method equals (line 358) | @Override
class DefaultHandler (line 365) | private static class DefaultHandler implements Client.ResultHandler {
method onResult (line 366) | @Override
class UpdateHandler (line 372) | private static class UpdateHandler implements Client.ResultHandler {
method onResult (line 373) | @Override
class AuthorizationRequestHandler (line 686) | private static class AuthorizationRequestHandler implements Client.Res...
method onResult (line 687) | @Override
class LogMessageHandler (line 703) | private static class LogMessageHandler implements Client.LogMessageHan...
method onLogMessage (line 704) | @Override
method onFatalError (line 714) | private static void onFatalError(String errorMessage) {
FILE: example/java/org/drinkless/tdlib/example/JsonExample.java
class JsonExample (line 14) | public final class JsonExample {
method main (line 15) | public static void main(String[] args) throws InterruptedException {
class LogMessageHandler (line 38) | private static class LogMessageHandler implements JsonClient.LogMessag...
method onLogMessage (line 39) | @Override
FILE: example/java/td_jni.cpp
type td_jni (line 21) | namespace td_jni {
function jint (line 24) | static jint JsonClient_createClientId(JNIEnv *env, jclass clazz) {
function JsonClient_send (line 28) | static void JsonClient_send(JNIEnv *env, jclass clazz, jint client_id,...
function jstring (line 32) | static jstring JsonClient_receive(JNIEnv *env, jclass clazz, jdouble t...
function jstring (line 40) | static jstring JsonClient_execute(JNIEnv *env, jclass clazz, jstring r...
function fetch_function (line 48) | static td::td_api::object_ptr<td::td_api::Function> fetch_function(JNI...
function jint (line 61) | static jint Client_createNativeClient(JNIEnv *env, jclass clazz) {
function Client_nativeClientSend (line 65) | static void Client_nativeClientSend(JNIEnv *env, jclass clazz, jint cl...
function jint (line 70) | static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jint...
function jobject (line 102) | static jobject Client_nativeClientExecute(JNIEnv *env, jclass clazz, j...
function jstring (line 108) | static jstring Object_toString(JNIEnv *env, jobject object) {
function jstring (line 112) | static jstring Function_toString(JNIEnv *env, jobject object) {
function on_log_message (line 121) | static void on_log_message(int verbosity_level, const char *log_messag...
function Client_nativeClientSetLogMessageHandler (line 148) | static void Client_nativeClientSetLogMessageHandler(JNIEnv *env, jclas...
function jint (line 176) | static jint register_native(JavaVM *vm) {
function JNIEXPORT (line 238) | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
FILE: example/python/tdjson_example.py
class TdExample (line 16) | class TdExample:
method __init__ (line 19) | def __init__(self, api_id: int = None, api_hash: str = None):
method _load_library (line 33) | def _load_library(self) -> None:
method _setup_functions (line 49) | def _setup_functions(self) -> None:
method _setup_logging (line 80) | def _setup_logging(self, verbosity_level: int = 1) -> None:
method execute (line 97) | def execute(self, query: Dict[str, Any]) -> Optional[Dict[str, Any]]:
method send (line 112) | def send(self, query: Dict[str, Any]) -> None:
method receive (line 121) | def receive(self, timeout: float = 1.0) -> Optional[Dict[str, Any]]:
method login (line 135) | def login(self) -> None:
method _handle_authentication (line 148) | def _handle_authentication(self) -> None:
function main (line 256) | def main():
FILE: example/uwp/app/App.xaml.cs
class App (line 19) | sealed partial class App : Application
method App (line 25) | public App()
method OnLaunched (line 39) | protected override void OnLaunched(LaunchActivatedEventArgs e)
method OnNavigationFailed (line 85) | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
method OnSuspending (line 97) | private void OnSuspending(object sender, SuspendingEventArgs e)
FILE: example/uwp/app/MainPage.xaml.cs
class MainPage (line 17) | public sealed partial class MainPage : Page
method MainPage (line 23) | public MainPage()
method Print (line 51) | public void Print(String str)
method LogMessageCallback (line 59) | private void LogMessageCallback(int verbosity_level, String str)
method AcceptCommand (line 69) | private void AcceptCommand(String command)
method Button_Click (line 74) | private void Button_Click(object sender, RoutedEventArgs e)
class MyClientResultHandler (line 150) | class MyClientResultHandler : Td.ClientResultHandler
method MyClientResultHandler (line 154) | public MyClientResultHandler(MainPage page)
method OnResult (line 159) | public void OnResult(TdApi.BaseObject obj)
class BenchSimpleHandler (line 166) | class BenchSimpleHandler : Td.ClientResultHandler
method BenchSimpleHandler (line 171) | public BenchSimpleHandler(MainPage page, int cnt)
method OnResult (line 177) | public void OnResult(TdApi.BaseObject obj)
FILE: example/web/tdweb/src/index.js
class TdClient (line 27) | class TdClient {
method constructor (line 44) | constructor(options) {
method send (line 73) | send(query) {
method sendInternal (line 78) | sendInternal(query) {
method doSend (line 82) | doSend(query, isExternal) {
method externalPostMessage (line 111) | externalPostMessage(query) {
method readFile (line 141) | async readFile(query) {
method deleteFile (line 147) | async deleteFile(query) {
method onResponse (line 166) | onResponse(response) {
method prepareFile (line 216) | prepareFile(file) {
method prepareResponse (line 221) | prepareResponse(response) {
method onBroadcastMessage (line 248) | onBroadcastMessage(e) {
method postState (line 281) | postState() {
method onWaitSetEmpty (line 293) | onWaitSetEmpty() {
method onFsInited (line 298) | onFsInited() {
method onInited (line 303) | onInited() {
method sendStart (line 309) | sendStart() {
method doSendStart (line 315) | doSendStart() {
method onClosed (line 327) | onClosed() {
method close (line 336) | close() {
method closeOtherClients (line 364) | async closeOtherClients(options) {
method onUpdate (line 392) | onUpdate(update) {
class ListNode (line 399) | class ListNode {
method constructor (line 400) | constructor(value) {
method erase (line 405) | erase() {
method clear (line 409) | clear() {
method connect (line 414) | connect(other) {
method onUsed (line 419) | onUsed(other) {
method getLru (line 427) | getLru() {
class FileManager (line 436) | class FileManager {
method constructor (line 437) | constructor(instanceName, client) {
method init (line 447) | init() {
method unload (line 459) | unload(info) {
method registerFile (line 476) | registerFile(file) {
method flushLoad (line 530) | async flushLoad() {
method load (line 556) | load(key, resolve, reject) {
method doLoadFull (line 565) | async doLoadFull(info) {
method doLoad (line 578) | async doLoad(info, offset, size) {
method doDelete (line 621) | doDelete(info) {
method readFile (line 626) | async readFile(query) {
method deleteFile (line 657) | deleteFile(query) {
FILE: example/web/tdweb/src/logger.js
class Logger (line 1) | class Logger {
method constructor (line 2) | constructor() {
method debug (line 5) | debug(...str) {
method log (line 10) | log(...str) {
method info (line 15) | info(...str) {
method warn (line 20) | warn(...str) {
method error (line 25) | error(...str) {
method setVerbosity (line 30) | setVerbosity(level, default_level = 'info') {
method checkVerbosity (line 42) | checkVerbosity(level) {
FILE: example/web/tdweb/src/wasm-utils.js
function instantiateStreaming (line 6) | async function instantiateStreaming(url, importObject) {
function fetchAndInstantiate (line 10) | function fetchAndInstantiate(url, importObject) {
function instantiateCachedURL (line 26) | function instantiateCachedURL(dbVersion, url, importObject) {
function instantiateAny (line 122) | async function instantiateAny(version, url, importObject) {
FILE: example/web/tdweb/src/worker.js
function initLocalForage (line 14) | async function initLocalForage() {
function loadTdlibWasm (line 63) | async function loadTdlibWasm(onFS, wasmUrl) {
function loadTdlib (line 94) | async function loadTdlib(onFS, wasmUrl) {
class OutboundFileSystem (line 119) | class OutboundFileSystem {
method constructor (line 120) | constructor(root, FS) {
method blobToPath (line 127) | blobToPath(blob, name) {
method forgetPath (line 146) | forgetPath(path) {
class InboundFileSystem (line 154) | class InboundFileSystem {
method create (line 155) | static async create(dbName, root, FS_promise) {
method load_pids (line 197) | async load_pids() {
method has (line 219) | has(pid) {
method forget (line 227) | forget(pid) {
method doPersist (line 233) | async doPersist(pid, path, arr, resolve, reject, write) {
method flushPersist (line 260) | async flushPersist() {
method tryFinishPersist (line 293) | async tryFinishPersist() {
method persist (line 312) | async persist(pid, path, arr) {
method unlink (line 331) | async unlink(pid) {
class DbFileSystem (line 351) | class DbFileSystem {
method create (line 352) | static async create(root, FS_promise, readOnly = false) {
method sync (line 418) | async sync(force) {
method close (line 439) | async close() {
method destroy (line 443) | async destroy() {
class TdFileSystem (line 467) | class TdFileSystem {
method init_fs (line 468) | static async init_fs(prefix, FS_promise) {
method create (line 473) | static async create(instanceName, FS_promise, readOnly = false) {
method destroy (line 510) | async destroy() {
class TdClient (line 515) | class TdClient {
method constructor (line 516) | constructor(callback) {
method testLocalForage (line 524) | async testLocalForage() {
method init (line 550) | async init(options) {
method prepareQueryRecursive (line 681) | prepareQueryRecursive(query) {
method prepareQuery (line 697) | prepareQuery(query) {
method onStart (line 715) | onStart() {
method deleteIdbKey (line 720) | deleteIdbKey(query) {
method readFilePart (line 737) | readFilePart(query) {
method send (line 765) | send(query) {
method execute (line 815) | execute(query) {
method receive (line 824) | receive() {
method cancelReceive (line 852) | cancelReceive() {
method scheduleReceiveSoon (line 859) | scheduleReceiveSoon() {
method scheduleReceive (line 867) | scheduleReceive() {
method scheduleReceiveIn (line 875) | scheduleReceiveIn(timeout) {
method onFatalError (line 881) | onFatalError(error) {
method close (line 886) | async close(last_update) {
method destroy (line 898) | async destroy(result) {
method asyncOnFatalError (line 915) | async asyncOnFatalError(error) {
method saveFile (line 920) | saveFile(pid, file) {
method doSaveFile (line 939) | async doSaveFile(pid, file, arr) {
method prepareFile (line 948) | prepareFile(file) {
method prepareResponse (line 967) | prepareResponse(response) {
method flushPendingQueries (line 980) | flushPendingQueries() {
FILE: memprof/memprof.cpp
function is_memprof_on (line 26) | bool is_memprof_on() {
function get_fast_backtrace_success_rate (line 36) | double get_fast_backtrace_success_rate() {
function fast_backtrace (line 55) | static int fast_backtrace(void **buffer, int size) {
function get_fast_backtrace_success_rate (line 81) | double get_fast_backtrace_success_rate() {
function Backtrace (line 88) | static Backtrace get_backtrace() {
type malloc_info (line 126) | struct malloc_info {
function get_hash (line 132) | static std::uint64_t get_hash(const Backtrace &bt) {
type HashtableNode (line 140) | struct HashtableNode {
function get_ht_size (line 150) | std::size_t get_ht_size() {
function get_ht_pos (line 154) | std::int32_t get_ht_pos(const Backtrace &bt, bool force = false) {
function dump_alloc (line 193) | void dump_alloc(const std::function<void(const AllocInfo &)> &func) {
function register_xalloc (line 203) | void register_xalloc(malloc_info *info, std::int32_t diff) {
function malloc_info (line 239) | static malloc_info *get_info(void *data_void) {
function free (line 252) | void free(void *data_void) {
function is_memprof_on (line 314) | bool is_memprof_on() {
function dump_alloc (line 317) | void dump_alloc(const std::function<void(const AllocInfo &)> &func) {
function get_fast_backtrace_success_rate (line 319) | double get_fast_backtrace_success_rate() {
function get_ht_size (line 322) | std::size_t get_ht_size() {
function get_used_memory_size (line 327) | std::size_t get_used_memory_size() {
FILE: memprof/memprof.h
type AllocInfo (line 18) | struct AllocInfo {
FILE: memprof/memprof_stat.cpp
function is_memprof_on (line 25) | bool is_memprof_on() {
type malloc_info (line 34) | struct malloc_info {
function register_xalloc (line 41) | void register_xalloc(malloc_info *info, std::int32_t diff) {
function get_used_memory_size (line 48) | std::size_t get_used_memory_size() {
function malloc_info (line 80) | static malloc_info *get_info(void *data_void) {
function free (line 93) | void free(void *data_void) {
function posix_memalign (line 135) | int posix_memalign(void **memptr, size_t alignment, size_t size) {
function is_memprof_on (line 163) | bool is_memprof_on() {
function get_used_memory_size (line 166) | std::size_t get_used_memory_size() {
FILE: sqlite/sqlite/sqlite3.c
function SQLITE_PRIVATE (line 785) | SQLITE_PRIVATE const char **tdsqlite3CompileOptions(int *pnOpt){
type tdsqlite3 (line 1291) | typedef struct tdsqlite3 tdsqlite3;
type SQLITE_INT64_TYPE (line 1310) | typedef SQLITE_INT64_TYPE sqlite_int64;
type SQLITE_UINT64_TYPE (line 1312) | typedef SQLITE_UINT64_TYPE sqlite_uint64;
type sqlite_uint64 (line 1314) | typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
type __int64 (line 1317) | typedef __int64 sqlite_int64;
type sqlite_uint64 (line 1318) | typedef unsigned __int64 sqlite_uint64;
type sqlite_int64 (line 1320) | typedef long long int sqlite_int64;
type sqlite_uint64 (line 1321) | typedef unsigned long long int sqlite_uint64;
type sqlite_int64 (line 1323) | typedef sqlite_int64 tdsqlite3_int64;
type sqlite_uint64 (line 1324) | typedef sqlite_uint64 tdsqlite3_uint64;
type tdsqlite3_file (line 1723) | typedef struct tdsqlite3_file tdsqlite3_file;
type tdsqlite3_file (line 1724) | struct tdsqlite3_file {
type tdsqlite3_io_methods (line 1822) | typedef struct tdsqlite3_io_methods tdsqlite3_io_methods;
type tdsqlite3_io_methods (line 1823) | struct tdsqlite3_io_methods {
type tdsqlite3_mutex (line 2217) | typedef struct tdsqlite3_mutex tdsqlite3_mutex;
type tdsqlite3_api_routines (line 2227) | typedef struct tdsqlite3_api_routines tdsqlite3_api_routines;
type tdsqlite3_vfs (line 2398) | typedef struct tdsqlite3_vfs tdsqlite3_vfs;
type tdsqlite3_vfs (line 2400) | struct tdsqlite3_vfs {
type tdsqlite3_mem_methods (line 2696) | typedef struct tdsqlite3_mem_methods tdsqlite3_mem_methods;
type tdsqlite3_mem_methods (line 2697) | struct tdsqlite3_mem_methods {
type tdsqlite3_stmt (line 4745) | typedef struct tdsqlite3_stmt tdsqlite3_stmt;
type tdsqlite3_value (line 5193) | typedef struct tdsqlite3_value tdsqlite3_value;
type tdsqlite3_context (line 5207) | typedef struct tdsqlite3_context tdsqlite3_context;
type tdsqlite3_vtab (line 7661) | typedef struct tdsqlite3_vtab tdsqlite3_vtab;
type tdsqlite3_index_info (line 7662) | typedef struct tdsqlite3_index_info tdsqlite3_index_info;
type tdsqlite3_vtab_cursor (line 7663) | typedef struct tdsqlite3_vtab_cursor tdsqlite3_vtab_cursor;
type tdsqlite3_module (line 7664) | typedef struct tdsqlite3_module tdsqlite3_module;
type tdsqlite3_module (line 7682) | struct tdsqlite3_module {
type tdsqlite3_index_info (line 7822) | struct tdsqlite3_index_info {
type tdsqlite3_vtab (line 7968) | struct tdsqlite3_vtab {
type tdsqlite3_vtab_cursor (line 7992) | struct tdsqlite3_vtab_cursor {
type tdsqlite3_blob (line 8048) | typedef struct tdsqlite3_blob tdsqlite3_blob;
type tdsqlite3_mutex_methods (line 8496) | typedef struct tdsqlite3_mutex_methods tdsqlite3_mutex_methods;
type tdsqlite3_mutex_methods (line 8497) | struct tdsqlite3_mutex_methods {
type tdsqlite3_str (line 8752) | typedef struct tdsqlite3_str tdsqlite3_str;
type tdsqlite3_pcache (line 9233) | typedef struct tdsqlite3_pcache tdsqlite3_pcache;
type tdsqlite3_pcache_page (line 9245) | typedef struct tdsqlite3_pcache_page tdsqlite3_pcache_page;
type tdsqlite3_pcache_page (line 9246) | struct tdsqlite3_pcache_page {
type tdsqlite3_pcache_methods2 (line 9410) | typedef struct tdsqlite3_pcache_methods2 tdsqlite3_pcache_methods2;
type tdsqlite3_pcache_methods2 (line 9411) | struct tdsqlite3_pcache_methods2 {
type tdsqlite3_pcache_methods (line 9433) | typedef struct tdsqlite3_pcache_methods tdsqlite3_pcache_methods;
type tdsqlite3_pcache_methods (line 9434) | struct tdsqlite3_pcache_methods {
type tdsqlite3_backup (line 9459) | typedef struct tdsqlite3_backup tdsqlite3_backup;
type tdsqlite3_snapshot (line 10480) | typedef struct tdsqlite3_snapshot {
type tdsqlite3_rtree_geometry (line 10807) | typedef struct tdsqlite3_rtree_geometry tdsqlite3_rtree_geometry;
type tdsqlite3_rtree_query_info (line 10808) | typedef struct tdsqlite3_rtree_query_info tdsqlite3_rtree_query_info;
type tdsqlite3_int64 (line 10814) | typedef tdsqlite3_int64 tdsqlite3_rtree_dbl;
type tdsqlite3_rtree_dbl (line 10816) | typedef double tdsqlite3_rtree_dbl;
type tdsqlite3_rtree_geometry (line 10837) | struct tdsqlite3_rtree_geometry {
type tdsqlite3_rtree_query_info (line 10869) | struct tdsqlite3_rtree_query_info {
type tdsqlite3_session (line 10923) | typedef struct tdsqlite3_session tdsqlite3_session;
type tdsqlite3_changeset_iter (line 10931) | typedef struct tdsqlite3_changeset_iter tdsqlite3_changeset_iter;
type tdsqlite3_changegroup (line 11722) | typedef struct tdsqlite3_changegroup tdsqlite3_changegroup;
type tdsqlite3_rebaser (line 12286) | typedef struct tdsqlite3_rebaser tdsqlite3_rebaser;
type Fts5ExtensionApi (line 12602) | typedef struct Fts5ExtensionApi Fts5ExtensionApi;
type Fts5Context (line 12603) | typedef struct Fts5Context Fts5Context;
type Fts5PhraseIter (line 12604) | typedef struct Fts5PhraseIter Fts5PhraseIter;
type Fts5PhraseIter (line 12614) | struct Fts5PhraseIter {
type Fts5ExtensionApi (line 12830) | struct Fts5ExtensionApi {
type Fts5Tokenizer (line 13064) | typedef struct Fts5Tokenizer Fts5Tokenizer;
type fts5_tokenizer (line 13065) | typedef struct fts5_tokenizer fts5_tokenizer;
type fts5_tokenizer (line 13066) | struct fts5_tokenizer {
type fts5_api (line 13101) | typedef struct fts5_api fts5_api;
type fts5_api (line 13102) | struct fts5_api {
type Hash (line 13762) | typedef struct Hash Hash;
type HashElem (line 13763) | typedef struct HashElem HashElem;
type Hash (line 13786) | struct Hash {
type HashElem (line 13802) | struct HashElem {
type sqlite_int64 (line 14231) | typedef sqlite_int64 i64;
type sqlite_uint64 (line 14232) | typedef sqlite_uint64 u64;
type UINT32_TYPE (line 14233) | typedef UINT32_TYPE u32;
type UINT16_TYPE (line 14234) | typedef UINT16_TYPE u16;
type INT16_TYPE (line 14235) | typedef INT16_TYPE i16;
type UINT8_TYPE (line 14236) | typedef UINT8_TYPE u8;
type INT8_TYPE (line 14237) | typedef INT8_TYPE i8;
type u64 (line 14254) | typedef u64 tRowcnt;
type u32 (line 14256) | typedef u32 tRowcnt;
type INT16_TYPE (line 14282) | typedef INT16_TYPE LogEst;
type uptr (line 14302) | typedef uintptr_t uptr;
type u32 (line 14304) | typedef u32 uptr;
type u64 (line 14306) | typedef u64 uptr;
type BusyHandler (line 14454) | typedef struct BusyHandler BusyHandler;
type BusyHandler (line 14455) | struct BusyHandler {
type AggInfo (line 14549) | typedef struct AggInfo AggInfo;
type AuthContext (line 14550) | typedef struct AuthContext AuthContext;
type AutoincInfo (line 14551) | typedef struct AutoincInfo AutoincInfo;
type Bitvec (line 14552) | typedef struct Bitvec Bitvec;
type CollSeq (line 14553) | typedef struct CollSeq CollSeq;
type Column (line 14554) | typedef struct Column Column;
type Db (line 14555) | typedef struct Db Db;
type Schema (line 14556) | typedef struct Schema Schema;
type Expr (line 14557) | typedef struct Expr Expr;
type ExprList (line 14558) | typedef struct ExprList ExprList;
type FKey (line 14559) | typedef struct FKey FKey;
type FuncDestructor (line 14560) | typedef struct FuncDestructor FuncDestructor;
type FuncDef (line 14561) | typedef struct FuncDef FuncDef;
type FuncDefHash (line 14562) | typedef struct FuncDefHash FuncDefHash;
type IdList (line 14563) | typedef struct IdList IdList;
type Index (line 14564) | typedef struct Index Index;
type IndexSample (line 14565) | typedef struct IndexSample IndexSample;
type KeyClass (line 14566) | typedef struct KeyClass KeyClass;
type KeyInfo (line 14567) | typedef struct KeyInfo KeyInfo;
type Lookaside (line 14568) | typedef struct Lookaside Lookaside;
type LookasideSlot (line 14569) | typedef struct LookasideSlot LookasideSlot;
type Module (line 14570) | typedef struct Module Module;
type NameContext (line 14571) | typedef struct NameContext NameContext;
type Parse (line 14572) | typedef struct Parse Parse;
type PreUpdate (line 14573) | typedef struct PreUpdate PreUpdate;
type PrintfArguments (line 14574) | typedef struct PrintfArguments PrintfArguments;
type RenameToken (line 14575) | typedef struct RenameToken RenameToken;
type RowSet (line 14576) | typedef struct RowSet RowSet;
type Savepoint (line 14577) | typedef struct Savepoint Savepoint;
type Select (line 14578) | typedef struct Select Select;
type SQLiteThread (line 14579) | typedef struct SQLiteThread SQLiteThread;
type SelectDest (line 14580) | typedef struct SelectDest SelectDest;
type SrcList (line 14581) | typedef struct SrcList SrcList;
type StrAccum (line 14582) | typedef struct tdsqlite3_str StrAccum;
type Table (line 14583) | typedef struct Table Table;
type TableLock (line 14584) | typedef struct TableLock TableLock;
type Token (line 14585) | typedef struct Token Token;
type TreeView (line 14586) | typedef struct TreeView TreeView;
type Trigger (line 14587) | typedef struct Trigger Trigger;
type TriggerPrg (line 14588) | typedef struct TriggerPrg TriggerPrg;
type TriggerStep (line 14589) | typedef struct TriggerStep TriggerStep;
type UnpackedRecord (line 14590) | typedef struct UnpackedRecord UnpackedRecord;
type Upsert (line 14591) | typedef struct Upsert Upsert;
type VTable (line 14592) | typedef struct VTable VTable;
type VtabCtx (line 14593) | typedef struct VtabCtx VtabCtx;
type Walker (line 14594) | typedef struct Walker Walker;
type WhereInfo (line 14595) | typedef struct WhereInfo WhereInfo;
type Window (line 14596) | typedef struct Window Window;
type With (line 14597) | typedef struct With With;
type SQLITE_BITMASK_TYPE (line 14608) | typedef SQLITE_BITMASK_TYPE Bitmask;
type u64 (line 14610) | typedef u64 Bitmask;
type VList (line 14632) | typedef int VList;
type Btree (line 14679) | typedef struct Btree Btree;
type BtCursor (line 14680) | typedef struct BtCursor BtCursor;
type BtShared (line 14681) | typedef struct BtShared BtShared;
type BtreePayload (line 14682) | typedef struct BtreePayload BtreePayload;
type KeyInfo (line 14870) | struct KeyInfo
type BtreePayload (line 14931) | struct BtreePayload {
type Vdbe (line 15065) | typedef struct Vdbe Vdbe;
type Mem (line 15071) | typedef struct tdsqlite3_value Mem;
type SubProgram (line 15072) | typedef struct SubProgram SubProgram;
type VdbeOp (line 15079) | struct VdbeOp {
type VdbeOp (line 15118) | typedef struct VdbeOp VdbeOp;
type SubProgram (line 15124) | struct SubProgram {
type VdbeOpList (line 15138) | struct VdbeOpList {
type VdbeOpList (line 15144) | typedef struct VdbeOpList VdbeOpList;
type u32 (line 15693) | typedef u32 Pgno;
type Pager (line 15698) | typedef struct Pager Pager;
type DbPage (line 15703) | typedef struct PgHdr DbPage;
type PgHdr (line 15929) | typedef struct PgHdr PgHdr;
type PCache (line 15930) | typedef struct PCache PCache;
type PgHdr (line 15936) | struct PgHdr {
type Db (line 16498) | struct Db {
type Schema (line 16523) | struct Schema {
type Lookaside (line 16612) | struct Lookaside {
type LookasideSlot (line 16630) | struct LookasideSlot {
type FuncDefHash (line 16654) | struct FuncDefHash {
type tdsqlite3_userauth (line 16664) | typedef struct tdsqlite3_userauth tdsqlite3_userauth;
type tdsqlite3_userauth (line 16665) | struct tdsqlite3_userauth {
type tdsqlite3 (line 16713) | struct tdsqlite3 {
type FuncDef (line 16984) | struct FuncDef {
type FuncDestructor (line 17014) | struct FuncDestructor {
type Savepoint (line 17174) | struct Savepoint {
type Module (line 17195) | struct Module {
type Column (line 17221) | struct Column {
type CollSeq (line 17254) | struct CollSeq {
type VTable (line 17355) | struct VTable {
type Table (line 17376) | struct Table {
type FKey (line 17501) | struct FKey {
type KeyInfo (line 17566) | struct KeyInfo {
type UnpackedRecord (line 17617) | struct UnpackedRecord {
type Index (line 17663) | struct Index {
type IndexSample (line 17726) | struct IndexSample {
type Token (line 17750) | struct Token {
type AggInfo (line 17768) | struct AggInfo {
type i16 (line 17810) | typedef i16 ynVar;
type ynVar (line 17812) | typedef int ynVar;
type Expr (line 17878) | struct Expr {
type ExprList (line 18050) | struct ExprList {
type IdList (line 18093) | struct IdList {
type SrcList (line 18120) | struct SrcList {
type NameContext (line 18221) | struct NameContext {
type Upsert (line 18278) | struct Upsert {
type Select (line 18311) | struct Select {
type SelectDest (line 18453) | struct SelectDest {
type AutoincInfo (line 18471) | struct AutoincInfo {
type TriggerPrg (line 18496) | struct TriggerPrg {
type yDbMask (line 18515) | typedef unsigned int yDbMask;
type Parse (line 18539) | struct Parse {
type AuthContext (line 18680) | struct AuthContext {
type Trigger (line 18732) | struct Trigger {
type TriggerStep (line 18794) | struct TriggerStep {
type DbFixer (line 18814) | typedef struct DbFixer DbFixer;
type DbFixer (line 18815) | struct DbFixer {
type tdsqlite3_str (line 18828) | struct tdsqlite3_str {
type InitData (line 18848) | typedef struct {
type Sqlite3Config (line 18867) | struct Sqlite3Config {
type Walker (line 18949) | struct Walker {
type With (line 19000) | struct With {
type TreeView (line 19016) | struct TreeView {
type Window (line 19045) | struct Window {
type SrcList_item (line 19088) | struct SrcList_item
type PrintfArguments (line 19297) | struct PrintfArguments {
type SrcList_item (line 19470) | struct SrcList_item
type SrcList_item (line 19532) | struct SrcList_item
type Sqlite3Config (line 19797) | struct Sqlite3Config
type ExprList_item (line 19819) | struct ExprList_item
type sqlcipher_provider (line 20295) | typedef struct {
type MemPage (line 20619) | typedef struct MemPage MemPage;
type BtLock (line 20620) | typedef struct BtLock BtLock;
type CellInfo (line 20621) | typedef struct CellInfo CellInfo;
type MemPage (line 20660) | struct MemPage {
type BtLock (line 20699) | struct BtLock {
type Btree (line 20731) | struct Btree {
type BtShared (line 20794) | struct BtShared {
type CellInfo (line 20850) | struct CellInfo {
type BtCursor (line 20895) | struct BtCursor {
type IntegrityCk (line 21063) | typedef struct IntegrityCk IntegrityCk;
type IntegrityCk (line 21064) | struct IntegrityCk {
function cipher_hex2int (line 21218) | static int cipher_hex2int(char c) {
function cipher_hex2bin (line 21224) | static void cipher_hex2bin(const unsigned char *hex, int sz, unsigned ch...
function cipher_bin2hex (line 21231) | static void cipher_bin2hex(const unsigned char* in, int sz, char *out) {
function cipher_isHex (line 21238) | static int cipher_isHex(const unsigned char *hex, int sz){
type cipher_ctx (line 21255) | typedef struct {
type codec_ctx (line 21265) | typedef struct {
function codec_vdbe_return_string (line 21401) | static void codec_vdbe_return_string(Parse *pParse, const char *zLabel, ...
function codec_set_btree_to_codec_pagesize (line 21409) | static int codec_set_btree_to_codec_pagesize(tdsqlite3 *db, Db *pDb, cod...
function codec_set_pass_key (line 21436) | static int codec_set_pass_key(tdsqlite3* db, int nDb, const void *zKey, ...
function sqlcipher_codec_pragma (line 21447) | int sqlcipher_codec_pragma(tdsqlite3* db, int iDb, Parse *pParse, const ...
function tdsqlite3FreeCodecArg (line 22080) | static void tdsqlite3FreeCodecArg(void *pCodecArg) {
function SQLITE_PRIVATE (line 22087) | SQLITE_PRIVATE int tdsqlite3CodecAttach(tdsqlite3* db, int nDb, const vo...
function sqlcipher_find_db_index (line 22159) | int sqlcipher_find_db_index(tdsqlite3 *db, const char *zDb) {
function SQLITE_API (line 22173) | SQLITE_API void tdsqlite3_activate_see(const char* in) {
function SQLITE_API (line 22177) | SQLITE_API int tdsqlite3_key(tdsqlite3 *db, const void *pKey, int nKey) {
function SQLITE_API (line 22182) | SQLITE_API int tdsqlite3_key_v2(tdsqlite3 *db, const char *zDb, const vo...
function SQLITE_API (line 22192) | SQLITE_API int tdsqlite3_rekey(tdsqlite3 *db, const void *pKey, int nKey) {
function SQLITE_API (line 22207) | SQLITE_API int tdsqlite3_rekey_v2(tdsqlite3 *db, const char *zDb, const ...
function SQLITE_PRIVATE (line 22277) | SQLITE_PRIVATE void tdsqlite3CodecGetKey(tdsqlite3* db, int nDb, void **...
function sqlcipher_finalize (line 22320) | static int sqlcipher_finalize(tdsqlite3 *db, tdsqlite3_stmt *pStmt, char...
function sqlcipher_execSql (line 22334) | static int sqlcipher_execSql(tdsqlite3 *db, char **pzErrMsg, const char ...
function sqlcipher_execExecSql (line 22355) | static int sqlcipher_execExecSql(tdsqlite3 *db, char **pzErrMsg, const c...
function sqlcipher_exportFunc (line 22378) | void sqlcipher_exportFunc(tdsqlite3_context *context, int argc, tdsqlite...
function tdsqlite3_mutex (line 22589) | tdsqlite3_mutex* sqlcipher_mutex(int mutex) {
function sqlcipher_mem_init (line 22594) | static int sqlcipher_mem_init(void *pAppData) {
function sqlcipher_mem_shutdown (line 22597) | static void sqlcipher_mem_shutdown(void *pAppData) {
function sqlcipher_mem_size (line 22609) | static int sqlcipher_mem_size(void *p) {
function sqlcipher_mem_free (line 22612) | static void sqlcipher_mem_free(void *p) {
function sqlcipher_mem_roundup (line 22626) | static int sqlcipher_mem_roundup(int n) {
function sqlcipher_init_memmethods (line 22641) | void sqlcipher_init_memmethods() {
function sqlcipher_register_provider (line 22650) | int sqlcipher_register_provider(sqlcipher_provider *p) {
function sqlcipher_provider (line 22672) | sqlcipher_provider* sqlcipher_get_provider() {
function sqlcipher_deactivate (line 22676) | void sqlcipher_deactivate() {
function sqlcipher_ismemset (line 22738) | int sqlcipher_ismemset(const void *v, unsigned char value, u64 len) {
function sqlcipher_memcmp (line 22751) | int sqlcipher_memcmp(const void *v0, const void *v1, int len) {
function sqlcipher_mlock (line 22762) | void sqlcipher_mlock(void *ptr, u64 sz) {
function sqlcipher_munlock (line 22789) | void sqlcipher_munlock(void *ptr, u64 sz) {
function sqlcipher_free (line 22824) | void sqlcipher_free(void *ptr, u64 sz) {
function sqlcipher_cipher_ctx_init (line 22862) | static int sqlcipher_cipher_ctx_init(codec_ctx *ctx, cipher_ctx **iCtx) {
function sqlcipher_cipher_ctx_free (line 22884) | static void sqlcipher_cipher_ctx_free(codec_ctx* ctx, cipher_ctx **iCtx) {
function sqlcipher_codec_ctx_reserve_setup (line 22894) | static int sqlcipher_codec_ctx_reserve_setup(codec_ctx *ctx) {
function sqlcipher_cipher_ctx_cmp (line 22921) | static int sqlcipher_cipher_ctx_cmp(cipher_ctx *c1, cipher_ctx *c2) {
function sqlcipher_cipher_ctx_copy (line 22962) | static int sqlcipher_cipher_ctx_copy(codec_ctx *ctx, cipher_ctx *target,...
function sqlcipher_cipher_ctx_set_keyspec (line 22996) | static int sqlcipher_cipher_ctx_set_keyspec(codec_ctx *ctx, cipher_ctx *...
function sqlcipher_codec_get_store_pass (line 23012) | int sqlcipher_codec_get_store_pass(codec_ctx *ctx) {
function sqlcipher_codec_set_store_pass (line 23016) | void sqlcipher_codec_set_store_pass(codec_ctx *ctx, int value) {
function sqlcipher_codec_get_pass (line 23020) | void sqlcipher_codec_get_pass(codec_ctx *ctx, void **zKey, int *nKey) {
function sqlcipher_set_derive_key (line 23025) | static void sqlcipher_set_derive_key(codec_ctx *ctx, int derive) {
function sqlcipher_cipher_ctx_set_pass (line 23036) | static int sqlcipher_cipher_ctx_set_pass(cipher_ctx *ctx, const void *zK...
function sqlcipher_codec_ctx_set_pass (line 23051) | int sqlcipher_codec_ctx_set_pass(codec_ctx *ctx, const void *zKey, int n...
function sqlcipher_set_default_kdf_iter (line 23070) | void sqlcipher_set_default_kdf_iter(int iter) {
function sqlcipher_get_default_kdf_iter (line 23074) | int sqlcipher_get_default_kdf_iter() {
function sqlcipher_codec_ctx_set_kdf_iter (line 23078) | int sqlcipher_codec_ctx_set_kdf_iter(codec_ctx *ctx, int kdf_iter) {
function sqlcipher_codec_ctx_get_kdf_iter (line 23084) | int sqlcipher_codec_ctx_get_kdf_iter(codec_ctx *ctx) {
function sqlcipher_codec_ctx_set_fast_kdf_iter (line 23088) | int sqlcipher_codec_ctx_set_fast_kdf_iter(codec_ctx *ctx, int fast_kdf_i...
function sqlcipher_codec_ctx_get_fast_kdf_iter (line 23094) | int sqlcipher_codec_ctx_get_fast_kdf_iter(codec_ctx *ctx) {
function sqlcipher_set_default_use_hmac (line 23099) | void sqlcipher_set_default_use_hmac(int use) {
function sqlcipher_get_default_use_hmac (line 23104) | int sqlcipher_get_default_use_hmac() {
function sqlcipher_set_hmac_salt_mask (line 23108) | void sqlcipher_set_hmac_salt_mask(unsigned char mask) {
function sqlcipher_get_hmac_salt_mask (line 23112) | unsigned char sqlcipher_get_hmac_salt_mask() {
function sqlcipher_codec_ctx_set_use_hmac (line 23117) | int sqlcipher_codec_ctx_set_use_hmac(codec_ctx *ctx, int use) {
function sqlcipher_codec_ctx_get_use_hmac (line 23127) | int sqlcipher_codec_ctx_get_use_hmac(codec_ctx *ctx) {
function sqlcipher_set_default_plaintext_header_size (line 23136) | int sqlcipher_set_default_plaintext_header_size(int size) {
function sqlcipher_codec_ctx_set_plaintext_header_size (line 23141) | int sqlcipher_codec_ctx_set_plaintext_header_size(codec_ctx *ctx, int si...
function sqlcipher_get_default_plaintext_header_size (line 23149) | int sqlcipher_get_default_plaintext_header_size() {
function sqlcipher_codec_ctx_get_plaintext_header_size (line 23153) | int sqlcipher_codec_ctx_get_plaintext_header_size(codec_ctx *ctx) {
function sqlcipher_set_default_hmac_algorithm (line 23158) | int sqlcipher_set_default_hmac_algorithm(int algorithm) {
function sqlcipher_codec_ctx_set_hmac_algorithm (line 23163) | int sqlcipher_codec_ctx_set_hmac_algorithm(codec_ctx *ctx, int algorithm) {
function sqlcipher_get_default_hmac_algorithm (line 23168) | int sqlcipher_get_default_hmac_algorithm() {
function sqlcipher_codec_ctx_get_hmac_algorithm (line 23172) | int sqlcipher_codec_ctx_get_hmac_algorithm(codec_ctx *ctx) {
function sqlcipher_set_default_kdf_algorithm (line 23177) | int sqlcipher_set_default_kdf_algorithm(int algorithm) {
function sqlcipher_codec_ctx_set_kdf_algorithm (line 23182) | int sqlcipher_codec_ctx_set_kdf_algorithm(codec_ctx *ctx, int algorithm) {
function sqlcipher_get_default_kdf_algorithm (line 23187) | int sqlcipher_get_default_kdf_algorithm() {
function sqlcipher_codec_ctx_get_kdf_algorithm (line 23191) | int sqlcipher_codec_ctx_get_kdf_algorithm(codec_ctx *ctx) {
function sqlcipher_codec_ctx_set_flag (line 23195) | int sqlcipher_codec_ctx_set_flag(codec_ctx *ctx, unsigned int flag) {
function sqlcipher_codec_ctx_unset_flag (line 23200) | int sqlcipher_codec_ctx_unset_flag(codec_ctx *ctx, unsigned int flag) {
function sqlcipher_codec_ctx_get_flag (line 23205) | int sqlcipher_codec_ctx_get_flag(codec_ctx *ctx, unsigned int flag) {
function sqlcipher_codec_ctx_set_error (line 23209) | void sqlcipher_codec_ctx_set_error(codec_ctx *ctx, int error) {
function sqlcipher_codec_ctx_get_reservesize (line 23215) | int sqlcipher_codec_ctx_get_reservesize(codec_ctx *ctx) {
function sqlcipher_codec_ctx_init_kdf_salt (line 23223) | static int sqlcipher_codec_ctx_init_kdf_salt(codec_ctx *ctx) {
function sqlcipher_codec_ctx_set_kdf_salt (line 23240) | int sqlcipher_codec_ctx_set_kdf_salt(codec_ctx *ctx, unsigned char *salt...
function sqlcipher_codec_ctx_get_kdf_salt (line 23249) | int sqlcipher_codec_ctx_get_kdf_salt(codec_ctx *ctx, void** salt) {
function sqlcipher_codec_get_keyspec (line 23258) | void sqlcipher_codec_get_keyspec(codec_ctx *ctx, void **zKey, int *nKey) {
function sqlcipher_codec_ctx_set_pagesize (line 23263) | int sqlcipher_codec_ctx_set_pagesize(codec_ctx *ctx, int size) {
function sqlcipher_codec_ctx_get_pagesize (line 23281) | int sqlcipher_codec_ctx_get_pagesize(codec_ctx *ctx) {
function sqlcipher_set_default_pagesize (line 23285) | void sqlcipher_set_default_pagesize(int page_size) {
function sqlcipher_get_default_pagesize (line 23289) | int sqlcipher_get_default_pagesize() {
function sqlcipher_set_mem_security (line 23293) | void sqlcipher_set_mem_security(int on) {
function sqlcipher_get_mem_security (line 23298) | int sqlcipher_get_mem_security() {
function sqlcipher_codec_ctx_init (line 23303) | int sqlcipher_codec_ctx_init(codec_ctx **iCtx, Db *pDb, Pager *pPager, c...
function sqlcipher_codec_ctx_free (line 23418) | void sqlcipher_codec_ctx_free(codec_ctx **iCtx) {
function sqlcipher_put4byte_le (line 23434) | static void sqlcipher_put4byte_le(unsigned char *p, u32 v) {
function sqlcipher_page_hmac (line 23441) | static int sqlcipher_page_hmac(codec_ctx *ctx, cipher_ctx *c_ctx, Pgno p...
function sqlcipher_page_cipher (line 23477) | int sqlcipher_page_cipher(codec_ctx *ctx, int for_ctx, Pgno pgno, int mo...
function sqlcipher_cipher_ctx_key_derive (line 23570) | static int sqlcipher_cipher_ctx_key_derive(codec_ctx *ctx, cipher_ctx *c...
function sqlcipher_codec_key_derive (line 23637) | int sqlcipher_codec_key_derive(codec_ctx *ctx) {
function sqlcipher_codec_key_copy (line 23661) | int sqlcipher_codec_key_copy(codec_ctx *ctx, int source) {
function sqlcipher_check_connection (line 23674) | static int sqlcipher_check_connection(const char *filename, char *key, i...
function sqlcipher_codec_ctx_integrity_check (line 23721) | int sqlcipher_codec_ctx_integrity_check(codec_ctx *ctx, Parse *pParse, c...
function sqlcipher_codec_ctx_migrate (line 23794) | int sqlcipher_codec_ctx_migrate(codec_ctx *ctx) {
function sqlcipher_codec_add_random (line 23990) | int sqlcipher_codec_add_random(codec_ctx *ctx, const char *zRight, int r...
function sqlcipher_profile_callback (line 24012) | static void sqlcipher_profile_callback(void *file, const char *sql, tdsq...
function sqlcipher_cipher_profile (line 24018) | int sqlcipher_cipher_profile(tdsqlite3 *db, const char *destination){
function sqlcipher_codec_fips_status (line 24041) | int sqlcipher_codec_fips_status(codec_ctx *ctx) {
type openssl_ctx (line 24106) | typedef struct {
function HMAC_CTX (line 24114) | static HMAC_CTX *HMAC_CTX_new(void)
function HMAC_CTX_free (line 24127) | static void HMAC_CTX_free(HMAC_CTX *ctx)
function sqlcipher_openssl_add_random (line 24136) | static int sqlcipher_openssl_add_random(void *ctx, void *buffer, int len...
function sqlcipher_openssl_activate (line 24160) | static int sqlcipher_openssl_activate(void *ctx) {
function sqlcipher_openssl_deactivate (line 24209) | static int sqlcipher_openssl_deactivate(void *ctx) {
function sqlcipher_openssl_random (line 24245) | static int sqlcipher_openssl_random (void *ctx, void *buffer, int length) {
function sqlcipher_openssl_hmac (line 24267) | static int sqlcipher_openssl_hmac(void *ctx, int algorithm, unsigned cha...
function sqlcipher_openssl_kdf (line 24305) | static int sqlcipher_openssl_kdf(void *ctx, int algorithm, const unsigne...
function sqlcipher_openssl_cipher (line 24335) | static int sqlcipher_openssl_cipher(void *ctx, int mode, unsigned char *...
function sqlcipher_openssl_get_key_sz (line 24361) | static int sqlcipher_openssl_get_key_sz(void *ctx) {
function sqlcipher_openssl_get_iv_sz (line 24365) | static int sqlcipher_openssl_get_iv_sz(void *ctx) {
function sqlcipher_openssl_get_block_sz (line 24369) | static int sqlcipher_openssl_get_block_sz(void *ctx) {
function sqlcipher_openssl_get_hmac_sz (line 24373) | static int sqlcipher_openssl_get_hmac_sz(void *ctx, int algorithm) {
function sqlcipher_openssl_ctx_init (line 24389) | static int sqlcipher_openssl_ctx_init(void **ctx) {
function sqlcipher_openssl_ctx_free (line 24401) | static int sqlcipher_openssl_ctx_free(void **ctx) {
function sqlcipher_openssl_fips_status (line 24407) | static int sqlcipher_openssl_fips_status(void *ctx) {
function SQLITE_PRIVATE (line 24415) | SQLITE_PRIVATE int sqlcipher_openssl_setup(sqlcipher_provider *p) {
function sqlcipher_activate (line 24436) | void sqlcipher_activate() {
type Sqlite3Config (line 24691) | struct Sqlite3Config
type Op (line 24862) | typedef struct VdbeOp Op;
type Bool (line 24867) | typedef unsigned Bool;
type VdbeSorter (line 24870) | typedef struct VdbeSorter VdbeSorter;
type AuxData (line 24873) | typedef struct AuxData AuxData;
type VdbeCursor (line 24891) | typedef struct VdbeCursor VdbeCursor;
type VdbeCursor (line 24892) | struct VdbeCursor {
type VdbeFrame (line 24977) | typedef struct VdbeFrame VdbeFrame;
type VdbeFrame (line 24978) | struct VdbeFrame {
type tdsqlite3_value (line 25016) | struct tdsqlite3_value {
type AuxData (line 25124) | struct AuxData {
type tdsqlite3_context (line 25145) | struct tdsqlite3_context {
type bft (line 25160) | typedef unsigned bft;
type ScanStatus (line 25165) | typedef struct ScanStatus ScanStatus;
type ScanStatus (line 25166) | struct ScanStatus {
type DblquoteStr (line 25182) | typedef struct DblquoteStr DblquoteStr;
type DblquoteStr (line 25183) | struct DblquoteStr {
type Vdbe (line 25195) | struct Vdbe {
type PreUpdate (line 25281) | struct PreUpdate {
type tdsqlite3_int64 (line 25440) | typedef tdsqlite3_int64 tdsqlite3StatValueType;
type u32 (line 25442) | typedef u32 tdsqlite3StatValueType;
type tdsqlite3StatType (line 25444) | typedef struct tdsqlite3StatType tdsqlite3StatType;
function SQLITE_WSD (line 25445) | static SQLITE_WSD struct tdsqlite3StatType {
function SQLITE_PRIVATE (line 25486) | SQLITE_PRIVATE tdsqlite3_int64 tdsqlite3StatusValue(int op){
function SQLITE_PRIVATE (line 25506) | SQLITE_PRIVATE void tdsqlite3StatusUp(int op, int N){
function SQLITE_PRIVATE (line 25517) | SQLITE_PRIVATE void tdsqlite3StatusDown(int op, int N){
function SQLITE_PRIVATE (line 25531) | SQLITE_PRIVATE void tdsqlite3StatusHighwater(int op, int X){
function SQLITE_API (line 25551) | SQLITE_API int tdsqlite3_status64(
function SQLITE_API (line 25576) | SQLITE_API int tdsqlite3_status(int op, int *pCurrent, int *pHighwater, ...
function u32 (line 25593) | static u32 countLookasideSlots(LookasideSlot *p){
function SQLITE_PRIVATE (line 25605) | SQLITE_PRIVATE int tdsqlite3LookasideUsed(tdsqlite3 *db, int *pHighwater){
function SQLITE_API (line 25619) | SQLITE_API int tdsqlite3_db_status(
type tm (line 25873) | struct tm
type DateTime (line 25879) | typedef struct DateTime DateTime;
type DateTime (line 25880) | struct DateTime {
function getDigits (line 25923) | static int getDigits(const char *zDate, const char *zFormat, ...){
function parseTimezone (line 25977) | static int parseTimezone(const char *zDate, DateTime *p){
function parseHhMmSs (line 26013) | static int parseHhMmSs(const char *zDate, DateTime *p){
function datetimeError (line 26053) | static void datetimeError(DateTime *p){
function computeJD (line 26064) | static void computeJD(DateTime *p){
function parseYyyyMmDd (line 26114) | static int parseYyyyMmDd(const char *zDate, DateTime *p){
function setDateTimeToCurrent (line 26151) | static int setDateTimeToCurrent(tdsqlite3_context *context, DateTime *p){
function setRawDateNumber (line 26167) | static void setRawDateNumber(DateTime *p, double r){
function parseDateOrTime (line 26192) | static int parseDateOrTime(
function validJulianDay (line 26225) | static int validJulianDay(tdsqlite3_int64 iJD){
function computeYMD (line 26232) | static void computeYMD(DateTime *p){
function computeHMS (line 26261) | static void computeHMS(DateTime *p){
function computeYMD_HMS (line 26280) | static void computeYMD_HMS(DateTime *p){
function clearYMD_HMS_TZ (line 26288) | static void clearYMD_HMS_TZ(DateTime *p){
function osLocaltime (line 26326) | static int osLocaltime(time_t *t, struct tm *pTm){
function tdsqlite3_int64 (line 26365) | static tdsqlite3_int64 localtimeOffset(
function parseModifier (line 26469) | static int parseModifier(
function isDate (line 26686) | static int isDate(
function juliandayFunc (line 26729) | static void juliandayFunc(
function datetimeFunc (line 26746) | static void datetimeFunc(
function timeFunc (line 26766) | static void timeFunc(
function dateFunc (line 26785) | static void dateFunc(
function strftimeFunc (line 26818) | static void strftimeFunc(
function ctimeFunc (line 26956) | static void ctimeFunc(
function cdateFunc (line 26970) | static void cdateFunc(
function ctimestampFunc (line 26984) | static void ctimestampFunc(
function currentTimeFunc (line 27006) | static void currentTimeFunc(
function SQLITE_PRIVATE (line 27044) | SQLITE_PRIVATE void tdsqlite3RegisterDateTimeFunctions(void){
function SQLITE_PRIVATE (line 27147) | SQLITE_PRIVATE void tdsqlite3OsClose(tdsqlite3_file *pId){
function SQLITE_PRIVATE (line 27153) | SQLITE_PRIVATE int tdsqlite3OsRead(tdsqlite3_file *id, void *pBuf, int a...
function SQLITE_PRIVATE (line 27157) | SQLITE_PRIVATE int tdsqlite3OsWrite(tdsqlite3_file *id, const void *pBuf...
function SQLITE_PRIVATE (line 27161) | SQLITE_PRIVATE int tdsqlite3OsTruncate(tdsqlite3_file *id, i64 size){
function SQLITE_PRIVATE (line 27164) | SQLITE_PRIVATE int tdsqlite3OsSync(tdsqlite3_file *id, int flags){
function SQLITE_PRIVATE (line 27168) | SQLITE_PRIVATE int tdsqlite3OsFileSize(tdsqlite3_file *id, i64 *pSize){
function SQLITE_PRIVATE (line 27172) | SQLITE_PRIVATE int tdsqlite3OsLock(tdsqlite3_file *id, int lockType){
function SQLITE_PRIVATE (line 27176) | SQLITE_PRIVATE int tdsqlite3OsUnlock(tdsqlite3_file *id, int lockType){
function SQLITE_PRIVATE (line 27179) | SQLITE_PRIVATE int tdsqlite3OsCheckReservedLock(tdsqlite3_file *id, int ...
function SQLITE_PRIVATE (line 27192) | SQLITE_PRIVATE int tdsqlite3OsFileControl(tdsqlite3_file *id, int op, vo...
function SQLITE_PRIVATE (line 27213) | SQLITE_PRIVATE void tdsqlite3OsFileControlHint(tdsqlite3_file *id, int o...
function SQLITE_PRIVATE (line 27217) | SQLITE_PRIVATE int tdsqlite3OsSectorSize(tdsqlite3_file *id){
function SQLITE_PRIVATE (line 27221) | SQLITE_PRIVATE int tdsqlite3OsDeviceCharacteristics(tdsqlite3_file *id){
function SQLITE_PRIVATE (line 27225) | SQLITE_PRIVATE int tdsqlite3OsShmLock(tdsqlite3_file *id, int offset, in...
function SQLITE_PRIVATE (line 27228) | SQLITE_PRIVATE void tdsqlite3OsShmBarrier(tdsqlite3_file *id){
function SQLITE_PRIVATE (line 27231) | SQLITE_PRIVATE int tdsqlite3OsShmUnmap(tdsqlite3_file *id, int deleteFlag){
function SQLITE_PRIVATE (line 27234) | SQLITE_PRIVATE int tdsqlite3OsShmMap(
function SQLITE_PRIVATE (line 27248) | SQLITE_PRIVATE int tdsqlite3OsFetch(tdsqlite3_file *id, i64 iOff, int iA...
function SQLITE_PRIVATE (line 27252) | SQLITE_PRIVATE int tdsqlite3OsUnfetch(tdsqlite3_file *id, i64 iOff, void...
function SQLITE_PRIVATE (line 27257) | SQLITE_PRIVATE int tdsqlite3OsFetch(tdsqlite3_file *id, i64 iOff, int iA...
function SQLITE_PRIVATE (line 27261) | SQLITE_PRIVATE int tdsqlite3OsUnfetch(tdsqlite3_file *id, i64 iOff, void...
function SQLITE_PRIVATE (line 27270) | SQLITE_PRIVATE int tdsqlite3OsOpen(
function SQLITE_PRIVATE (line 27287) | SQLITE_PRIVATE int tdsqlite3OsDelete(tdsqlite3_vfs *pVfs, const char *zP...
function SQLITE_PRIVATE (line 27292) | SQLITE_PRIVATE int tdsqlite3OsAccess(
function SQLITE_PRIVATE (line 27301) | SQLITE_PRIVATE int tdsqlite3OsFullPathname(
function SQLITE_PRIVATE (line 27312) | SQLITE_PRIVATE void *tdsqlite3OsDlOpen(tdsqlite3_vfs *pVfs, const char *...
function SQLITE_PRIVATE (line 27315) | SQLITE_PRIVATE void tdsqlite3OsDlError(tdsqlite3_vfs *pVfs, int nByte, c...
function SQLITE_PRIVATE (line 27318) | SQLITE_PRIVATE void (*tdsqlite3OsDlSym(tdsqlite3_vfs *pVfs, void *pHdle,...
function SQLITE_PRIVATE (line 27321) | SQLITE_PRIVATE void tdsqlite3OsDlClose(tdsqlite3_vfs *pVfs, void *pHandle){
function SQLITE_PRIVATE (line 27325) | SQLITE_PRIVATE int tdsqlite3OsRandomness(tdsqlite3_vfs *pVfs, int nByte,...
function SQLITE_PRIVATE (line 27336) | SQLITE_PRIVATE int tdsqlite3OsSleep(tdsqlite3_vfs *pVfs, int nMicro){
function SQLITE_PRIVATE (line 27339) | SQLITE_PRIVATE int tdsqlite3OsGetLastError(tdsqlite3_vfs *pVfs){
function SQLITE_PRIVATE (line 27342) | SQLITE_PRIVATE int tdsqlite3OsCurrentTimeInt64(tdsqlite3_vfs *pVfs, tdsq...
function SQLITE_PRIVATE (line 27360) | SQLITE_PRIVATE int tdsqlite3OsOpenMalloc(
function SQLITE_PRIVATE (line 27382) | SQLITE_PRIVATE void tdsqlite3OsCloseFree(tdsqlite3_file *pFile){
function SQLITE_PRIVATE (line 27394) | SQLITE_PRIVATE int tdsqlite3OsInit(void){
function SQLITE_API (line 27411) | SQLITE_API tdsqlite3_vfs *tdsqlite3_vfs_find(const char *zVfs){
function vfsUnlink (line 27435) | static void vfsUnlink(tdsqlite3_vfs *pVfs){
function SQLITE_API (line 27457) | SQLITE_API int tdsqlite3_vfs_register(tdsqlite3_vfs *pVfs, int makeDflt){
function SQLITE_API (line 27485) | SQLITE_API int tdsqlite3_vfs_unregister(tdsqlite3_vfs *pVfs){
type BenignMallocHooks (line 27533) | typedef struct BenignMallocHooks BenignMallocHooks;
function SQLITE_WSD (line 27534) | static SQLITE_WSD struct BenignMallocHooks {
function SQLITE_PRIVATE (line 27559) | SQLITE_PRIVATE void tdsqlite3BenignMallocHooks(
function SQLITE_PRIVATE (line 27573) | SQLITE_PRIVATE void tdsqlite3BeginBenignMalloc(void){
function SQLITE_PRIVATE (line 27579) | SQLITE_PRIVATE void tdsqlite3EndBenignMalloc(void){
function tdsqlite3MemFree (line 27621) | static void tdsqlite3MemFree(void *pPrior){ return; }
function tdsqlite3MemSize (line 27623) | static int tdsqlite3MemSize(void *pPrior){ return 0; }
function tdsqlite3MemRoundup (line 27624) | static int tdsqlite3MemRoundup(int n){ return n; }
function tdsqlite3MemInit (line 27625) | static int tdsqlite3MemInit(void *NotUsed){ return SQLITE_OK; }
function tdsqlite3MemShutdown (line 27626) | static void tdsqlite3MemShutdown(void *NotUsed){ return; }
function SQLITE_PRIVATE (line 27634) | SQLITE_PRIVATE void tdsqlite3MemSetDefault(void){
function tdsqlite3MemFree (line 27813) | static void tdsqlite3MemFree(void *pPrior){
function tdsqlite3MemSize (line 27828) | static int tdsqlite3MemSize(void *pPrior){
function tdsqlite3MemRoundup (line 27883) | static int tdsqlite3MemRoundup(int n){
function tdsqlite3MemInit (line 27890) | static int tdsqlite3MemInit(void *NotUsed){
function tdsqlite3MemShutdown (line 27917) | static void tdsqlite3MemShutdown(void *NotUsed){
function SQLITE_PRIVATE (line 27928) | SQLITE_PRIVATE void tdsqlite3MemSetDefault(void){
type MemBlockHdr (line 28000) | struct MemBlockHdr {
type MemBlockHdr (line 28037) | struct MemBlockHdr
type MemBlockHdr (line 28038) | struct MemBlockHdr
function adjustStats (line 28074) | static void adjustStats(int iSize, int increment){
type MemBlockHdr (line 28097) | struct MemBlockHdr
type MemBlockHdr (line 28098) | struct MemBlockHdr
type MemBlockHdr (line 28103) | struct MemBlockHdr
function tdsqlite3MemSize (line 28121) | static int tdsqlite3MemSize(void *p){
function tdsqlite3MemInit (line 28133) | static int tdsqlite3MemInit(void *NotUsed){
function tdsqlite3MemShutdown (line 28147) | static void tdsqlite3MemShutdown(void *NotUsed){
function tdsqlite3MemRoundup (line 28155) | static int tdsqlite3MemRoundup(int n){
function randomFill (line 28164) | static void randomFill(char *pBuf, int nByte){
type MemBlockHdr (line 28188) | struct MemBlockHdr
type MemBlockHdr (line 28204) | struct MemBlockHdr
function tdsqlite3MemFree (line 28246) | static void tdsqlite3MemFree(void *pPrior){
type MemBlockHdr (line 28289) | struct MemBlockHdr
function SQLITE_PRIVATE (line 28309) | SQLITE_PRIVATE void tdsqlite3MemSetDefault(void){
function SQLITE_PRIVATE (line 28326) | SQLITE_PRIVATE void tdsqlite3MemdebugSetType(void *p, u8 eType){
function SQLITE_PRIVATE (line 28344) | SQLITE_PRIVATE int tdsqlite3MemdebugHasType(void *p, u8 eType){
function SQLITE_PRIVATE (line 28366) | SQLITE_PRIVATE int tdsqlite3MemdebugNoType(void *p, u8 eType){
function SQLITE_PRIVATE (line 28384) | SQLITE_PRIVATE void tdsqlite3MemdebugBacktrace(int depth){
function SQLITE_PRIVATE (line 28391) | SQLITE_PRIVATE void tdsqlite3MemdebugBacktraceCallback(void (*xBacktrace...
function SQLITE_PRIVATE (line 28398) | SQLITE_PRIVATE void tdsqlite3MemdebugSettitle(const char *zTitle){
function SQLITE_PRIVATE (line 28408) | SQLITE_PRIVATE void tdsqlite3MemdebugSync(){
function SQLITE_PRIVATE (line 28421) | SQLITE_PRIVATE void tdsqlite3MemdebugDump(const char *zFilename){
function SQLITE_PRIVATE (line 28463) | SQLITE_PRIVATE int tdsqlite3MemdebugMallocCount(){
type Mem3Block (line 28556) | typedef struct Mem3Block Mem3Block;
type Mem3Block (line 28557) | struct Mem3Block {
function SQLITE_WSD (line 28576) | static SQLITE_WSD struct Mem3Global {
function memsys3UnlinkFromList (line 28623) | static void memsys3UnlinkFromList(u32 i, u32 *pRoot){
function memsys3Unlink (line 28643) | static void memsys3Unlink(u32 i){
function memsys3LinkIntoList (line 28663) | static void memsys3LinkIntoList(u32 i, u32 *pRoot){
function memsys3Link (line 28677) | static void memsys3Link(u32 i){
function memsys3Enter (line 28698) | static void memsys3Enter(void){
function memsys3Leave (line 28704) | static void memsys3Leave(void){
function memsys3OutOfMemory (line 28711) | static void memsys3OutOfMemory(int nByte){
function memsys3Merge (line 28791) | static void memsys3Merge(u32 *pRoot){
function memsys3FreeUnsafe (line 28912) | static void memsys3FreeUnsafe(void *pOld){
function memsys3Size (line 28953) | static int memsys3Size(void *p){
function memsys3Roundup (line 28964) | static int memsys3Roundup(int n){
function memsys3Free (line 28987) | static void memsys3Free(void *pPrior){
function memsys3Init (line 29028) | static int memsys3Init(void *NotUsed){
function memsys3Shutdown (line 29053) | static void memsys3Shutdown(void *NotUsed){
function SQLITE_PRIVATE (line 29065) | SQLITE_PRIVATE void tdsqlite3Memsys3Dump(const char *zFilename){
function SQLITE_PRIVATE (line 29149) | SQLITE_PRIVATE const tdsqlite3_mem_methods *tdsqlite3MemGetMemsys3(void){
type Mem5Link (line 29233) | typedef struct Mem5Link Mem5Link;
type Mem5Link (line 29234) | struct Mem5Link {
function SQLITE_WSD (line 29258) | static SQLITE_WSD struct Mem5Global {
function memsys5Unlink (line 29315) | static void memsys5Unlink(int i, int iLogsize){
function memsys5Link (line 29337) | static void memsys5Link(int i, int iLogsize){
function memsys5Enter (line 29356) | static void memsys5Enter(void){
function memsys5Leave (line 29359) | static void memsys5Leave(void){
function memsys5Size (line 29367) | static int memsys5Size(void *p){
function memsys5FreeUnsafe (line 29456) | static void memsys5FreeUnsafe(void *pOld){
function memsys5Free (line 29538) | static void memsys5Free(void *pPrior){
function memsys5Roundup (line 29587) | static int memsys5Roundup(int n){
function memsys5Log (line 29604) | static int memsys5Log(int iValue){
function memsys5Init (line 29616) | static int memsys5Init(void *NotUsed){
function memsys5Shutdown (line 29674) | static void memsys5Shutdown(void *NotUsed){
function SQLITE_PRIVATE (line 29685) | SQLITE_PRIVATE void tdsqlite3Memsys5Dump(const char *zFilename){
function SQLITE_PRIVATE (line 29728) | SQLITE_PRIVATE const tdsqlite3_mem_methods *tdsqlite3MemGetMemsys5(void){
type CheckMutex (line 29799) | typedef struct CheckMutex CheckMutex;
type CheckMutex (line 29800) | struct CheckMutex {
function checkMutexHeld (line 29814) | static int checkMutexHeld(tdsqlite3_mutex *p){
function checkMutexNotheld (line 29817) | static int checkMutexNotheld(tdsqlite3_mutex *p){
function checkMutexInit (line 29825) | static int checkMutexInit(void){
function checkMutexEnd (line 29829) | static int checkMutexEnd(void){
function tdsqlite3_mutex (line 29837) | static tdsqlite3_mutex *checkMutexAlloc(int iType){
function checkMutexFree (line 29876) | static void checkMutexFree(tdsqlite3_mutex *p){
function checkMutexEnter (line 29899) | static void checkMutexEnter(tdsqlite3_mutex *p){
function checkMutexTry (line 29915) | static int checkMutexTry(tdsqlite3_mutex *p){
function checkMutexLeave (line 29923) | static void checkMutexLeave(tdsqlite3_mutex *p){
function tdsqlite3_mutex_methods (line 29928) | tdsqlite3_mutex_methods const *multiThreadedCheckMutex(void){
function SQLITE_PRIVATE (line 29952) | SQLITE_PRIVATE void tdsqlite3MutexWarnOnContention(tdsqlite3_mutex *p){
function SQLITE_PRIVATE (line 29964) | SQLITE_PRIVATE int tdsqlite3MutexInit(void){
function SQLITE_PRIVATE (line 30009) | SQLITE_PRIVATE int tdsqlite3MutexEnd(void){
function SQLITE_API (line 30025) | SQLITE_API tdsqlite3_mutex *tdsqlite3_mutex_alloc(int id){
function SQLITE_PRIVATE (line 30034) | SQLITE_PRIVATE tdsqlite3_mutex *tdsqlite3MutexAlloc(int id){
function SQLITE_API (line 30046) | SQLITE_API void tdsqlite3_mutex_free(tdsqlite3_mutex *p){
function SQLITE_API (line 30057) | SQLITE_API void tdsqlite3_mutex_enter(tdsqlite3_mutex *p){
function SQLITE_API (line 30068) | SQLITE_API int tdsqlite3_mutex_try(tdsqlite3_mutex *p){
function SQLITE_API (line 30083) | SQLITE_API void tdsqlite3_mutex_leave(tdsqlite3_mutex *p){
function SQLITE_API (line 30095) | SQLITE_API int tdsqlite3_mutex_held(tdsqlite3_mutex *p){
function SQLITE_API (line 30099) | SQLITE_API int tdsqlite3_mutex_notheld(tdsqlite3_mutex *p){
function noopMutexInit (line 30146) | static int noopMutexInit(void){ return SQLITE_OK; }
function noopMutexEnd (line 30147) | static int noopMutexEnd(void){ return SQLITE_OK; }
function tdsqlite3_mutex (line 30148) | static tdsqlite3_mutex *noopMutexAlloc(int id){
function noopMutexFree (line 30152) | static void noopMutexFree(tdsqlite3_mutex *p){ UNUSED_PARAMETER(p); retu...
function noopMutexEnter (line 30153) | static void noopMutexEnter(tdsqlite3_mutex *p){ UNUSED_PARAMETER(p); ret...
function noopMutexTry (line 30154) | static int noopMutexTry(tdsqlite3_mutex *p){
function noopMutexLeave (line 30158) | static void noopMutexLeave(tdsqlite3_mutex *p){ UNUSED_PARAMETER(p); ret...
function SQLITE_PRIVATE (line 30160) | SQLITE_PRIVATE tdsqlite3_mutex_methods const *tdsqlite3NoopMutex(void){
type tdsqlite3_debug_mutex (line 30188) | typedef struct tdsqlite3_debug_mutex {
function debugMutexHeld (line 30197) | static int debugMutexHeld(tdsqlite3_mutex *pX){
function debugMutexNotheld (line 30201) | static int debugMutexNotheld(tdsqlite3_mutex *pX){
function debugMutexInit (line 30209) | static int debugMutexInit(void){ return SQLITE_OK; }
function debugMutexEnd (line 30210) | static int debugMutexEnd(void){ return SQLITE_OK; }
function tdsqlite3_mutex (line 30217) | static tdsqlite3_mutex *debugMutexAlloc(int id){
function debugMutexFree (line 30248) | static void debugMutexFree(tdsqlite3_mutex *pX){
function debugMutexEnter (line 30271) | static void debugMutexEnter(tdsqlite3_mutex *pX){
function debugMutexTry (line 30276) | static int debugMutexTry(tdsqlite3_mutex *pX){
function debugMutexLeave (line 30289) | static void debugMutexLeave(tdsqlite3_mutex *pX){
function SQLITE_PRIVATE (line 30296) | SQLITE_PRIVATE tdsqlite3_mutex_methods const *tdsqlite3NoopMutex(void){
function SQLITE_PRIVATE (line 30319) | SQLITE_PRIVATE tdsqlite3_mutex_methods const *tdsqlite3DefaultMutex(void){
type tdsqlite3_mutex (line 30367) | struct tdsqlite3_mutex {
function pthreadMutexHeld (line 30404) | static int pthreadMutexHeld(tdsqlite3_mutex *p){
function pthreadMutexNotheld (line 30407) | static int pthreadMutexNotheld(tdsqlite3_mutex *p){
function SQLITE_PRIVATE (line 30417) | SQLITE_PRIVATE void tdsqlite3MemoryBarrier(void){
function pthreadMutexInit (line 30428) | static int pthreadMutexInit(void){ return SQLITE_OK; }
function pthreadMutexEnd (line 30429) | static int pthreadMutexEnd(void){ return SQLITE_OK; }
function tdsqlite3_mutex (line 30479) | static tdsqlite3_mutex *pthreadMutexAlloc(int iType){
function pthreadMutexFree (line 30550) | static void pthreadMutexFree(tdsqlite3_mutex *p){
function pthreadMutexEnter (line 30577) | static void pthreadMutexEnter(tdsqlite3_mutex *p){
function pthreadMutexTry (line 30619) | static int pthreadMutexTry(tdsqlite3_mutex *p){
function pthreadMutexLeave (line 30676) | static void pthreadMutexLeave(tdsqlite3_mutex *p){
function SQLITE_PRIVATE (line 30699) | SQLITE_PRIVATE tdsqlite3_mutex_methods const *tdsqlite3DefaultMutex(void){
function sqlite_uint64 (line 30818) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 30826) | __declspec(naked) __inline sqlite_uint64 __cdecl tdsqlite3Hwtime(void){
function sqlite_uint64 (line 30837) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 30845) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function tdsqlite3Hwtime (line 30868) | tdsqlite3Hwtime(void){ return ((sqlite_uint64)0); }
function local_ioerr (line 30906) | static void local_ioerr(){
type tdsqlite3_mutex (line 31053) | struct tdsqlite3_mutex {
function winMutexHeld (line 31082) | static int winMutexHeld(tdsqlite3_mutex *p){
function winMutexNotheld2 (line 31086) | static int winMutexNotheld2(tdsqlite3_mutex *p, DWORD tid){
function winMutexNotheld (line 31090) | static int winMutexNotheld(tdsqlite3_mutex *p){
function SQLITE_PRIVATE (line 31101) | SQLITE_PRIVATE void tdsqlite3MemoryBarrier(void){
function winMutexInit (line 31143) | static int winMutexInit(void){
function winMutexEnd (line 31165) | static int winMutexEnd(void){
function tdsqlite3_mutex (line 31228) | static tdsqlite3_mutex *winMutexAlloc(int iType){
function winMutexFree (line 31276) | static void winMutexFree(tdsqlite3_mutex *p){
function winMutexEnter (line 31300) | static void winMutexEnter(tdsqlite3_mutex *p){
function winMutexTry (line 31323) | static int winMutexTry(tdsqlite3_mutex *p){
function winMutexLeave (line 31373) | static void winMutexLeave(tdsqlite3_mutex *p){
function SQLITE_PRIVATE (line 31395) | SQLITE_PRIVATE tdsqlite3_mutex_methods const *tdsqlite3DefaultMutex(void){
function SQLITE_API (line 31441) | SQLITE_API int tdsqlite3_release_memory(int n){
function SQLITE_WSD (line 31463) | static SQLITE_WSD struct Mem0Global {
function SQLITE_PRIVATE (line 31480) | SQLITE_PRIVATE tdsqlite3_mutex *tdsqlite3MallocMutex(void){
function SQLITE_API (line 31490) | SQLITE_API int tdsqlite3_memory_alarm(
function SQLITE_API (line 31513) | SQLITE_API tdsqlite3_int64 tdsqlite3_soft_heap_limit64(tdsqlite3_int64 n){
function SQLITE_API (line 31538) | SQLITE_API void tdsqlite3_soft_heap_limit(int n){
function SQLITE_API (line 31555) | SQLITE_API tdsqlite3_int64 tdsqlite3_hard_heap_limit64(tdsqlite3_int64 n){
function SQLITE_PRIVATE (line 31577) | SQLITE_PRIVATE int tdsqlite3MallocInit(void){
function SQLITE_PRIVATE (line 31609) | SQLITE_PRIVATE int tdsqlite3HeapNearlyFull(void){
function SQLITE_PRIVATE (line 31616) | SQLITE_PRIVATE void tdsqlite3MallocEnd(void){
function tdsqlite3_memory_used (line 31626) | tdsqlite3_memory_used(void){
function SQLITE_API (line 31637) | SQLITE_API tdsqlite3_int64 tdsqlite3_memory_highwater(int resetFlag){
function tdsqlite3MallocAlarm (line 31646) | static void tdsqlite3MallocAlarm(int nByte){
function mallocWithAlarm (line 31657) | static void mallocWithAlarm(int n, void **pp){
function SQLITE_PRIVATE (line 31706) | SQLITE_PRIVATE void *tdsqlite3Malloc(u64 n){
function SQLITE_API (line 31731) | SQLITE_API void *tdsqlite3_malloc(int n){
function SQLITE_API (line 31737) | SQLITE_API void *tdsqlite3_malloc64(tdsqlite3_uint64 n){
function isLookaside (line 31748) | static int isLookaside(tdsqlite3 *db, void *p){
function SQLITE_PRIVATE (line 31759) | SQLITE_PRIVATE int tdsqlite3MallocSize(void *p){
function lookasideMallocSize (line 31763) | static int lookasideMallocSize(tdsqlite3 *db, void *p){
function SQLITE_PRIVATE (line 31770) | SQLITE_PRIVATE int tdsqlite3DbMallocSize(tdsqlite3 *db, void *p){
function SQLITE_API (line 31799) | SQLITE_API tdsqlite3_uint64 tdsqlite3_msize(void *p){
function SQLITE_API (line 31808) | SQLITE_API void tdsqlite3_free(void *p){
function SQLITE_NOINLINE (line 31827) | static SQLITE_NOINLINE void measureAllocationSize(tdsqlite3 *db, void *p){
function SQLITE_PRIVATE (line 31836) | SQLITE_PRIVATE void tdsqlite3DbFreeNN(tdsqlite3 *db, void *p){
function SQLITE_PRIVATE (line 31873) | SQLITE_PRIVATE void tdsqlite3DbFree(tdsqlite3 *db, void *p){
function SQLITE_PRIVATE (line 31881) | SQLITE_PRIVATE void *tdsqlite3Realloc(void *pOld, u64 nBytes){
function SQLITE_API (line 31933) | SQLITE_API void *tdsqlite3_realloc(void *pOld, int n){
function SQLITE_API (line 31940) | SQLITE_API void *tdsqlite3_realloc64(void *pOld, tdsqlite3_uint64 n){
function SQLITE_PRIVATE (line 31951) | SQLITE_PRIVATE void *tdsqlite3MallocZero(u64 n){
function SQLITE_PRIVATE (line 31963) | SQLITE_PRIVATE void *tdsqlite3DbMallocZero(tdsqlite3 *db, u64 n){
function SQLITE_NOINLINE (line 31975) | static SQLITE_NOINLINE void *dbMallocRawFinish(tdsqlite3 *db, u64 n){
function SQLITE_PRIVATE (line 32007) | SQLITE_PRIVATE void *tdsqlite3DbMallocRaw(tdsqlite3 *db, u64 n){
function SQLITE_PRIVATE (line 32014) | SQLITE_PRIVATE void *tdsqlite3DbMallocRawNN(tdsqlite3 *db, u64 n){
function SQLITE_PRIVATE (line 32070) | SQLITE_PRIVATE void *tdsqlite3DbRealloc(tdsqlite3 *db, void *p, u64 n){
function SQLITE_NOINLINE (line 32086) | static SQLITE_NOINLINE void *dbReallocFinish(tdsqlite3 *db, void *p, u64...
function SQLITE_PRIVATE (line 32116) | SQLITE_PRIVATE void *tdsqlite3DbReallocOrFree(tdsqlite3 *db, void *p, u6...
function SQLITE_PRIVATE (line 32132) | SQLITE_PRIVATE char *tdsqlite3DbStrDup(tdsqlite3 *db, const char *z){
function SQLITE_PRIVATE (line 32145) | SQLITE_PRIVATE char *tdsqlite3DbStrNDup(tdsqlite3 *db, const char *z, u6...
function SQLITE_PRIVATE (line 32165) | SQLITE_PRIVATE char *tdsqlite3DbSpanDup(tdsqlite3 *db, const char *zStar...
function SQLITE_PRIVATE (line 32176) | SQLITE_PRIVATE void tdsqlite3SetString(char **pz, tdsqlite3 *db, const c...
function SQLITE_PRIVATE (line 32187) | SQLITE_PRIVATE void tdsqlite3OomFault(tdsqlite3 *db){
function SQLITE_PRIVATE (line 32207) | SQLITE_PRIVATE void tdsqlite3OomClear(tdsqlite3 *db){
function SQLITE_NOINLINE (line 32219) | static SQLITE_NOINLINE int apiOomError(tdsqlite3 *db){
function SQLITE_PRIVATE (line 32237) | SQLITE_PRIVATE int tdsqlite3ApiExit(tdsqlite3* db, int rc){
type etByte (line 32295) | typedef unsigned char etByte;
type et_info (line 32301) | typedef struct et_info { /* Information about each format field */
function et_getdigit (line 32377) | static char et_getdigit(LONGDOUBLE_TYPE *val, int *cnt){
function setStrAccumError (line 32393) | static void setStrAccumError(StrAccum *p, u8 eError){
function tdsqlite3_int64 (line 32403) | static tdsqlite3_int64 getIntArg(PrintfArguments *p){
function getDoubleArg (line 32407) | static double getDoubleArg(PrintfArguments *p){
function SQLITE_API (line 32451) | SQLITE_API void tdsqlite3_str_vappendf(
function tdsqlite3StrAccumEnlarge (line 33148) | static int tdsqlite3StrAccumEnlarge(StrAccum *p, int N){
function SQLITE_API (line 33198) | SQLITE_API void tdsqlite3_str_appendchar(tdsqlite3_str *p, int N, char c){
function enlargeAndAppend (line 33214) | static void SQLITE_NOINLINE enlargeAndAppend(StrAccum *p, const char *z,...
function SQLITE_API (line 33226) | SQLITE_API void tdsqlite3_str_append(tdsqlite3_str *p, const char *z, in...
function SQLITE_API (line 33243) | SQLITE_API void tdsqlite3_str_appendall(tdsqlite3_str *p, const char *z){
function SQLITE_NOINLINE (line 33253) | static SQLITE_NOINLINE char *strAccumFinishRealloc(StrAccum *p){
function SQLITE_PRIVATE (line 33266) | SQLITE_PRIVATE char *tdsqlite3StrAccumFinish(StrAccum *p){
function SQLITE_API (line 33288) | SQLITE_API char *tdsqlite3_str_finish(tdsqlite3_str *p){
function SQLITE_API (line 33300) | SQLITE_API int tdsqlite3_str_errcode(tdsqlite3_str *p){
function SQLITE_API (line 33305) | SQLITE_API int tdsqlite3_str_length(tdsqlite3_str *p){
function SQLITE_API (line 33310) | SQLITE_API char *tdsqlite3_str_value(tdsqlite3_str *p){
function SQLITE_API (line 33319) | SQLITE_API void tdsqlite3_str_reset(StrAccum *p){
function SQLITE_PRIVATE (line 33343) | SQLITE_PRIVATE void tdsqlite3StrAccumInit(StrAccum *p, tdsqlite3 *db, ch...
function SQLITE_API (line 33354) | SQLITE_API tdsqlite3_str *tdsqlite3_str_new(tdsqlite3 *db){
function SQLITE_PRIVATE (line 33369) | SQLITE_PRIVATE char *tdsqlite3VMPrintf(tdsqlite3 *db, const char *zForma...
function SQLITE_PRIVATE (line 33389) | SQLITE_PRIVATE char *tdsqlite3MPrintf(tdsqlite3 *db, const char *zFormat...
function SQLITE_API (line 33402) | SQLITE_API char *tdsqlite3_vmprintf(const char *zFormat, va_list ap){
function SQLITE_API (line 33426) | SQLITE_API char *tdsqlite3_mprintf(const char *zFormat, ...){
function SQLITE_API (line 33451) | SQLITE_API char *tdsqlite3_vsnprintf(int n, char *zBuf, const char *zFor...
function SQLITE_API (line 33466) | SQLITE_API char *tdsqlite3_snprintf(int n, char *zBuf, const char *zForm...
function renderLogMsg (line 33489) | static void renderLogMsg(int iErrCode, const char *zFormat, va_list ap){
function SQLITE_API (line 33502) | SQLITE_API void tdsqlite3_log(int iErrCode, const char *zFormat, ...){
function SQLITE_PRIVATE (line 33517) | SQLITE_PRIVATE void tdsqlite3DebugPrintf(const char *zFormat, ...){
function SQLITE_API (line 33543) | SQLITE_API void tdsqlite3_str_appendf(StrAccum *p, const char *zFormat, ...
function TreeView (line 33578) | static TreeView *tdsqlite3TreeViewPush(TreeView *p, u8 moreToFollow){
function tdsqlite3TreeViewPop (line 33594) | static void tdsqlite3TreeViewPop(TreeView *p){
function tdsqlite3TreeViewLine (line 33604) | static void tdsqlite3TreeViewLine(TreeView *p, const char *zFormat, ...){
function tdsqlite3TreeViewItem (line 33631) | static void tdsqlite3TreeViewItem(TreeView *p, const char *zLabel,u8 mor...
function SQLITE_PRIVATE (line 33639) | SQLITE_PRIVATE void tdsqlite3TreeViewWith(TreeView *pView, const With *p...
function SQLITE_PRIVATE (line 33678) | SQLITE_PRIVATE void tdsqlite3TreeViewSrcList(TreeView *pView, const SrcL...
function SQLITE_PRIVATE (line 33719) | SQLITE_PRIVATE void tdsqlite3TreeViewSelect(TreeView *pView, const Selec...
function SQLITE_PRIVATE (line 33835) | SQLITE_PRIVATE void tdsqlite3TreeViewBound(
function SQLITE_PRIVATE (line 33872) | SQLITE_PRIVATE void tdsqlite3TreeViewWindow(TreeView *pView, const Windo...
function SQLITE_PRIVATE (line 33937) | SQLITE_PRIVATE void tdsqlite3TreeViewWinFunc(TreeView *pView, const Wind...
function SQLITE_PRIVATE (line 33949) | SQLITE_PRIVATE void tdsqlite3TreeViewExpr(TreeView *pView, const Expr *p...
function SQLITE_PRIVATE (line 34275) | SQLITE_PRIVATE void tdsqlite3TreeViewBareExprList(
function SQLITE_PRIVATE (line 34311) | SQLITE_PRIVATE void tdsqlite3TreeViewExprList(
function SQLITE_WSD (line 34349) | static SQLITE_WSD struct tdsqlite3PrngType {
function SQLITE_API (line 34358) | SQLITE_API void tdsqlite3_randomness(int N, void *pBuf){
function SQLITE_PRIVATE (line 34445) | SQLITE_PRIVATE void tdsqlite3PrngSaveState(void){
function SQLITE_PRIVATE (line 34452) | SQLITE_PRIVATE void tdsqlite3PrngRestoreState(void){
type SQLiteThread (line 34504) | struct SQLiteThread {
function SQLITE_PRIVATE (line 34513) | SQLITE_PRIVATE int tdsqlite3ThreadCreate(
function SQLITE_PRIVATE (line 34550) | SQLITE_PRIVATE int tdsqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
type SQLiteThread (line 34576) | struct SQLiteThread {
function tdsqlite3ThreadProc (line 34585) | static unsigned __stdcall tdsqlite3ThreadProc(
function SQLITE_PRIVATE (line 34608) | SQLITE_PRIVATE int tdsqlite3ThreadCreate(
function SQLITE_PRIVATE (line 34646) | SQLITE_PRIVATE int tdsqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
type SQLiteThread (line 34681) | struct SQLiteThread {
function SQLITE_PRIVATE (line 34688) | SQLITE_PRIVATE int tdsqlite3ThreadCreate(
function SQLITE_PRIVATE (line 34712) | SQLITE_PRIVATE int tdsqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
function SQLITE_PRIVATE (line 34905) | SQLITE_PRIVATE u32 tdsqlite3Utf8Read(
function tdsqlite3VdbeMemTranslate (line 34941) | int tdsqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
function SQLITE_PRIVATE (line 35090) | SQLITE_PRIVATE int tdsqlite3VdbeMemHandleBom(Mem *pMem){
function SQLITE_PRIVATE (line 35128) | SQLITE_PRIVATE int tdsqlite3Utf8CharLen(const char *zIn, int nByte){
function SQLITE_PRIVATE (line 35158) | SQLITE_PRIVATE int tdsqlite3Utf8To8(unsigned char *zIn){
function SQLITE_PRIVATE (line 35182) | SQLITE_PRIVATE char *tdsqlite3Utf16to8(tdsqlite3 *db, const void *z, int...
function SQLITE_PRIVATE (line 35203) | SQLITE_PRIVATE int tdsqlite3Utf16ByteLen(const void *zIn, int nChar){
function SQLITE_PRIVATE (line 35228) | SQLITE_PRIVATE void tdsqlite3UtfSelfTest(void){
function SQLITE_PRIVATE (line 35306) | SQLITE_PRIVATE void tdsqlite3Coverage(int x){
function SQLITE_PRIVATE (line 35332) | SQLITE_PRIVATE int tdsqlite3FaultSim(int iTest){
function SQLITE_PRIVATE (line 35342) | SQLITE_PRIVATE int tdsqlite3IsNaN(double x){
function SQLITE_PRIVATE (line 35357) | SQLITE_PRIVATE int tdsqlite3Strlen30(const char *z){
function SQLITE_PRIVATE (line 35369) | SQLITE_PRIVATE char *tdsqlite3ColumnType(Column *pCol, char *zDflt){
function SQLITE_NOINLINE (line 35379) | static SQLITE_NOINLINE void tdsqlite3ErrorFinish(tdsqlite3 *db, int err...
function SQLITE_PRIVATE (line 35389) | SQLITE_PRIVATE void tdsqlite3Error(tdsqlite3 *db, int err_code){
function SQLITE_PRIVATE (line 35399) | SQLITE_PRIVATE void tdsqlite3SystemError(tdsqlite3 *db, int rc){
function SQLITE_PRIVATE (line 35428) | SQLITE_PRIVATE void tdsqlite3ErrorWithMsg(tdsqlite3 *db, int err_code, c...
function SQLITE_PRIVATE (line 35461) | SQLITE_PRIVATE void tdsqlite3ErrorMsg(Parse *pParse, const char *zFormat...
function SQLITE_PRIVATE (line 35484) | SQLITE_PRIVATE int tdsqlite3ErrorToParser(tdsqlite3 *db, int errCode){
function SQLITE_PRIVATE (line 35509) | SQLITE_PRIVATE void tdsqlite3Dequote(char *z){
function SQLITE_PRIVATE (line 35531) | SQLITE_PRIVATE void tdsqlite3DequoteExpr(Expr *p){
function SQLITE_PRIVATE (line 35540) | SQLITE_PRIVATE void tdsqlite3TokenInit(Token *p, char *z){
function SQLITE_API (line 35558) | SQLITE_API int tdsqlite3_stricmp(const char *zLeft, const char *zRight){
function SQLITE_PRIVATE (line 35566) | SQLITE_PRIVATE int tdsqlite3StrICmp(const char *zLeft, const char *zRight){
function SQLITE_API (line 35585) | SQLITE_API int tdsqlite3_strnicmp(const char *zLeft, const char *zRight,...
function LONGDOUBLE_TYPE (line 35604) | static LONGDOUBLE_TYPE tdsqlite3Pow10(int E){
function SQLITE_PRIVATE (line 35669) | SQLITE_PRIVATE int tdsqlite3AtoF(const char *z, double *pResult, int len...
function compare2pow63 (line 35877) | static int compare2pow63(const char *zNum, int incr){
function SQLITE_PRIVATE (line 35910) | SQLITE_PRIVATE int tdsqlite3Atoi64(const char *zNum, i64 *pNum, int leng...
function SQLITE_PRIVATE (line 36012) | SQLITE_PRIVATE int tdsqlite3DecOrHexToI64(const char *z, i64 *pOut){
function SQLITE_PRIVATE (line 36042) | SQLITE_PRIVATE int tdsqlite3GetInt32(const char *zNum, int *pValue){
function SQLITE_PRIVATE (line 36101) | SQLITE_PRIVATE int tdsqlite3Atoi(const char *z){
function putVarint64 (line 36136) | static int SQLITE_NOINLINE putVarint64(unsigned char *p, u64 v){
function SQLITE_PRIVATE (line 36160) | SQLITE_PRIVATE int tdsqlite3PutVarint(unsigned char *p, u64 v){
function SQLITE_PRIVATE (line 36190) | SQLITE_PRIVATE u8 tdsqlite3GetVarint(const unsigned char *p, u64 *v){
function SQLITE_PRIVATE (line 36351) | SQLITE_PRIVATE u8 tdsqlite3GetVarint32(const unsigned char *p, u32 *v){
function SQLITE_PRIVATE (line 36474) | SQLITE_PRIVATE int tdsqlite3VarintLen(u64 v){
function SQLITE_PRIVATE (line 36484) | SQLITE_PRIVATE u32 tdsqlite3Get4byte(const u8 *p){
function SQLITE_PRIVATE (line 36502) | SQLITE_PRIVATE void tdsqlite3Put4byte(unsigned char *p, u32 v){
function SQLITE_PRIVATE (line 36526) | SQLITE_PRIVATE u8 tdsqlite3HexToInt(int h){
function SQLITE_PRIVATE (line 36544) | SQLITE_PRIVATE void *tdsqlite3HexToBlob(tdsqlite3 *db, const char *z, in...
function logBadConnection (line 36565) | static void logBadConnection(const char *zType){
function SQLITE_PRIVATE (line 36586) | SQLITE_PRIVATE int tdsqlite3SafetyCheckOk(tdsqlite3 *db){
function SQLITE_PRIVATE (line 36603) | SQLITE_PRIVATE int tdsqlite3SafetyCheckSickOrOk(tdsqlite3 *db){
function SQLITE_PRIVATE (line 36623) | SQLITE_PRIVATE int tdsqlite3AddInt64(i64 *pA, i64 iB){
function SQLITE_PRIVATE (line 36643) | SQLITE_PRIVATE int tdsqlite3SubInt64(i64 *pA, i64 iB){
function SQLITE_PRIVATE (line 36658) | SQLITE_PRIVATE int tdsqlite3MulInt64(i64 *pA, i64 iB){
function SQLITE_PRIVATE (line 36684) | SQLITE_PRIVATE int tdsqlite3AbsInt32(int x){
function SQLITE_PRIVATE (line 36708) | SQLITE_PRIVATE void tdsqlite3FileSuffix3(const char *zBaseFilename, char...
function SQLITE_PRIVATE (line 36727) | SQLITE_PRIVATE LogEst tdsqlite3LogEstAdd(LogEst a, LogEst b){
function SQLITE_PRIVATE (line 36754) | SQLITE_PRIVATE LogEst tdsqlite3LogEst(u64 x){
function SQLITE_PRIVATE (line 36778) | SQLITE_PRIVATE LogEst tdsqlite3LogEstFromDouble(double x){
function SQLITE_PRIVATE (line 36799) | SQLITE_PRIVATE u64 tdsqlite3LogEstToInt(LogEst x){
function SQLITE_PRIVATE (line 36853) | SQLITE_PRIVATE VList *tdsqlite3VListAdd(
function SQLITE_PRIVATE (line 36891) | SQLITE_PRIVATE const char *tdsqlite3VListNumToName(VList *pIn, int iVal){
function SQLITE_PRIVATE (line 36907) | SQLITE_PRIVATE int tdsqlite3VListNameToNum(VList *pIn, const char *zName...
function SQLITE_PRIVATE (line 36944) | SQLITE_PRIVATE void tdsqlite3HashInit(Hash *pNew){
function SQLITE_PRIVATE (line 36956) | SQLITE_PRIVATE void tdsqlite3HashClear(Hash *pH){
function strHash (line 36976) | static unsigned int strHash(const char *z){
function insertElement (line 36993) | static void insertElement(
function rehash (line 37027) | static int rehash(Hash *pH, unsigned int new_size){
function HashElem (line 37068) | static HashElem *findElementWithHash(
function removeElementGivenHash (line 37103) | static void removeElementGivenHash(
function SQLITE_PRIVATE (line 37138) | SQLITE_PRIVATE void *tdsqlite3HashFind(const Hash *pH, const char *pKey){
function SQLITE_PRIVATE (line 37158) | SQLITE_PRIVATE void *tdsqlite3HashInsert(Hash *pH, const char *pKey, voi...
function SQLITE_PRIVATE (line 37204) | SQLITE_PRIVATE const char *tdsqlite3OpcodeName(int i){
type unixShm (line 37584) | typedef struct unixShm unixShm;
type unixShmNode (line 37585) | typedef struct unixShmNode unixShmNode;
type unixInodeInfo (line 37586) | typedef struct unixInodeInfo unixInodeInfo;
type UnixUnusedFd (line 37587) | typedef struct UnixUnusedFd UnixUnusedFd;
type UnixUnusedFd (line 37595) | struct UnixUnusedFd {
type unixFile (line 37605) | typedef struct unixFile unixFile;
type unixFile (line 37606) | struct unixFile {
function sqlite_uint64 (line 37762) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 37770) | __declspec(naked) __inline sqlite_uint64 __cdecl tdsqlite3Hwtime(void){
function sqlite_uint64 (line 37781) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 37789) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function tdsqlite3Hwtime (line 37812) | tdsqlite3Hwtime(void){ return ((sqlite_uint64)0); }
function local_ioerr (line 37850) | static void local_ioerr(){
function posixOpen (line 37955) | static int posixOpen(const char *zFile, int flags, int mode){
type unix_syscall (line 37969) | struct unix_syscall {
type stat (line 37987) | struct stat
type stat (line 38000) | struct stat
type stat (line 38121) | struct stat
function robustFchown (line 38143) | static int robustFchown(int fd, uid_t uid, gid_t gid){
function unixSetSystemCall (line 38157) | static int unixSetSystemCall(
function tdsqlite3_syscall_ptr (line 38200) | static tdsqlite3_syscall_ptr unixGetSystemCall(
function robust_open (line 38260) | static int robust_open(const char *z, int f, mode_t m){
function unixEnterMutex (line 38323) | static void unixEnterMutex(void){
function unixLeaveMutex (line 38327) | static void unixLeaveMutex(void){
function unixMutexHeld (line 38332) | static int unixMutexHeld(void) {
function lockTrace (line 38365) | static int lockTrace(int fd, int op, struct flock *p){
function robust_ftruncate (line 38423) | static int robust_ftruncate(int h, tdsqlite3_int64 sz){
function sqliteErrorFromPosixError (line 38448) | static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) {
type vxworksFileId (line 38490) | struct vxworksFileId {
type vxworksFileId (line 38502) | struct vxworksFileId
function vxworksSimplifyName (line 38517) | static int vxworksSimplifyName(char *z, int n){
type vxworksFileId (line 38551) | struct vxworksFileId
type vxworksFileId (line 38552) | struct vxworksFileId
type vxworksFileId (line 38553) | struct vxworksFileId
function vxworksReleaseFileId (line 38593) | static void vxworksReleaseFileId(struct vxworksFileId *pId){
type unixFileId (line 38705) | struct unixFileId {
type unixInodeInfo (line 38746) | struct unixInodeInfo {
function unixFileMutexHeld (line 38780) | int unixFileMutexHeld(unixFile *pFile){
function unixFileMutexNotheld (line 38784) | int unixFileMutexNotheld(unixFile *pFile){
function unixLogErrorAtLine (line 38807) | static int unixLogErrorAtLine(
function robust_close (line 38872) | static void robust_close(unixFile *pFile, int h, int lineno){
function storeLastErrno (line 38883) | static void storeLastErrno(unixFile *pFile, int error){
function closePendingFds (line 38890) | static void closePendingFds(unixFile *pFile){
function releaseInodeInfo (line 38909) | static void releaseInodeInfo(unixFile *pFile){
function findInodeInfo (line 38946) | static int findInodeInfo(
function fileHasMoved (line 39038) | static int fileHasMoved(unixFile *pFile){
function verifyDbFile (line 39059) | static void verifyDbFile(unixFile *pFile){
function unixCheckReservedLock (line 39092) | static int unixCheckReservedLock(tdsqlite3_file *id, int *pResOut){
function osSetPosixAdvisoryLock (line 39149) | static int osSetPosixAdvisoryLock(
function unixFileLock (line 39189) | static int unixFileLock(unixFile *pFile, struct flock *pLock){
function unixLock (line 39239) | static int unixLock(tdsqlite3_file *id, int eFileLock){
function setPendingFd (line 39466) | static void setPendingFd(unixFile *pFile){
function posixUnlock (line 39489) | static int posixUnlock(tdsqlite3_file *id, int eFileLock, int handleNFSU...
function unixUnlock (line 39649) | static int unixUnlock(tdsqlite3_file *id, int eFileLock){
function closeUnixFile (line 39671) | static int closeUnixFile(tdsqlite3_file *id){
function unixClose (line 39706) | static int unixClose(tdsqlite3_file *id){
function nolockCheckReservedLock (line 39757) | static int nolockCheckReservedLock(tdsqlite3_file *NotUsed, int *pResOut){
function nolockLock (line 39762) | static int nolockLock(tdsqlite3_file *NotUsed, int NotUsed2){
function nolockUnlock (line 39766) | static int nolockUnlock(tdsqlite3_file *NotUsed, int NotUsed2){
function nolockClose (line 39774) | static int nolockClose(tdsqlite3_file *id) {
function dotlockCheckReservedLock (line 39819) | static int dotlockCheckReservedLock(tdsqlite3_file *id, int *pResOut) {
function dotlockLock (line 39860) | static int dotlockLock(tdsqlite3_file *id, int eFileLock) {
function dotlockUnlock (line 39910) | static int dotlockUnlock(tdsqlite3_file *id, int eFileLock) {
function dotlockClose (line 39953) | static int dotlockClose(tdsqlite3_file *id) {
function robust_flock (line 39983) | static int robust_flock(int fd, int op){
function flockCheckReservedLock (line 39999) | static int flockCheckReservedLock(tdsqlite3_file *id, int *pResOut){
function flockLock (line 40079) | static int flockLock(tdsqlite3_file *id, int eFileLock) {
function flockUnlock (line 40123) | static int flockUnlock(tdsqlite3_file *id, int eFileLock) {
function flockClose (line 40157) | static int flockClose(tdsqlite3_file *id) {
function semXCheckReservedLock (line 40186) | static int semXCheckReservedLock(tdsqlite3_file *id, int *pResOut) {
function semXLock (line 40253) | static int semXLock(tdsqlite3_file *id, int eFileLock) {
function semXUnlock (line 40286) | static int semXUnlock(tdsqlite3_file *id, int eFileLock) {
function semXClose (line 40323) | static int semXClose(tdsqlite3_file *id) {
type afpLockingContext (line 40359) | typedef struct afpLockingContext afpLockingContext;
type afpLockingContext (line 40360) | struct afpLockingContext {
type ByteRangeLockPB2 (line 40365) | struct ByteRangeLockPB2
function afpSetLock (line 40383) | static int afpSetLock(
function afpCheckReservedLock (line 40429) | static int afpCheckReservedLock(tdsqlite3_file *id, int *pResOut){
function afpLock (line 40498) | static int afpLock(tdsqlite3_file *id, int eFileLock){
function afpUnlock (line 40680) | static int afpUnlock(tdsqlite3_file *id, int eFileLock) {
function afpClose (line 40783) | static int afpClose(tdsqlite3_file *id) {
function nfsUnlock (line 40831) | static int nfsUnlock(tdsqlite3_file *id, int eFileLock){
function seekAndRead (line 40867) | static int seekAndRead(unixFile *id, tdsqlite3_int64 offset, void *pBuf,...
function unixRead (line 40916) | static int unixRead(
function seekAndWriteFd (line 40975) | static int seekAndWriteFd(
function seekAndWrite (line 41021) | static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int ...
function unixWrite (line 41030) | static int unixWrite(
function full_fsync (line 41165) | static int full_fsync(int fd, int fullSync, int dataOnly){
function openDirectory (line 41261) | static int openDirectory(const char *zFilename, int *pFd){
function unixSync (line 41298) | static int unixSync(tdsqlite3_file *id, int flags){
function unixTruncate (line 41348) | static int unixTruncate(tdsqlite3_file *id, i64 nByte){
function unixFileSize (line 41398) | static int unixFileSize(tdsqlite3_file *id, i64 *pSize){
function fcntlSizeHint (line 41436) | static int fcntlSizeHint(unixFile *pFile, i64 nByte){
function unixModeBit (line 41505) | static void unixModeBit(unixFile *pFile, unsigned char mask, int *pArg){
function unixFileControl (line 41521) | static int unixFileControl(tdsqlite3_file *id, int op, void *pArg){
function setDeviceCharacteristics (line 41645) | static void setDeviceCharacteristics(unixFile *pFd){
function setDeviceCharacteristics (line 41670) | static void setDeviceCharacteristics(unixFile *pFile){
function unixSectorSize (line 41752) | static int unixSectorSize(tdsqlite3_file *id){
function unixDeviceCharacteristics (line 41771) | static int unixDeviceCharacteristics(tdsqlite3_file *id){
function unixGetpagesize (line 41785) | static int unixGetpagesize(void){
type unixShmNode (line 41828) | struct unixShmNode {
type unixShm (line 41860) | struct unixShm {
function unixShmSystemLock (line 41881) | static int unixShmSystemLock(
function unixShmRegionPerMap (line 41959) | static int unixShmRegionPerMap(void){
function unixShmPurge (line 41973) | static void unixShmPurge(unixFile *pFd){
type flock (line 42008) | struct flock
function unixOpenSharedMemory (line 42101) | static int unixOpenSharedMemory(unixFile *pDbFd){
function unixShmMap (line 42243) | static int unixShmMap(
function unixShmLock (line 42386) | static int unixShmLock(
function unixShmBarrier (line 42498) | static void unixShmBarrier(
function unixShmUnmap (line 42517) | static int unixShmUnmap(
function unixUnmapfile (line 42574) | static void unixUnmapfile(unixFile *pFd){
function unixRemapfile (line 42599) | static void unixRemapfile(
function unixMapfile (line 42691) | static int unixMapfile(unixFile *pFd, i64 nMap){
function unixFetch (line 42728) | static int unixFetch(tdsqlite3_file *fd, i64 iOff, int nAmt, void **pp){
function unixUnfetch (line 42759) | static int unixUnfetch(tdsqlite3_file *fd, i64 iOff, void *p){
function tdsqlite3_io_methods (line 42979) | static const tdsqlite3_io_methods *autolockIoFinderImpl(
function tdsqlite3_io_methods (line 43043) | static const tdsqlite3_io_methods *vxworksIoFinderImpl(
type tdsqlite3_io_methods (line 43076) | typedef const tdsqlite3_io_methods *(*finder_type)(const char*,unixFile*);
function fillInUnixFile (line 43089) | static int fillInUnixFile(
type stat (line 43275) | struct stat
function unixGetTempname (line 43299) | static int unixGetTempname(int nBuf, char *zBuf){
function UnixUnusedFd (line 43349) | static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
function getFileMode (line 43399) | static int getFileMode(
function findCreateFileMode (line 43438) | static int findCreateFileMode(
function unixOpen (line 43515) | static int unixOpen(
function unixDelete (line 43789) | static int unixDelete(
function unixAccess (line 43837) | static int unixAccess(
function mkFullPathname (line 43864) | static int mkFullPathname(
function unixFullPathname (line 43897) | static int unixFullPathname(
function unixDlError (line 44001) | static void unixDlError(tdsqlite3_vfs *NotUsed, int nBuf, char *zBufOut){
function unixDlClose (line 44034) | static void unixDlClose(tdsqlite3_vfs *NotUsed, void *pHandle){
function unixRandomness (line 44048) | static int unixRandomness(tdsqlite3_vfs *NotUsed, int nBuf, char *zBuf){
function unixSleep (line 44095) | static int unixSleep(tdsqlite3_vfs *NotUsed, int microseconds){
function unixCurrentTimeInt64 (line 44135) | static int unixCurrentTimeInt64(tdsqlite3_vfs *NotUsed, tdsqlite3_int64 ...
function unixCurrentTime (line 44167) | static int unixCurrentTime(tdsqlite3_vfs *NotUsed, double *prNow){
function unixGetLastError (line 44185) | static int unixGetLastError(tdsqlite3_vfs *NotUsed, int NotUsed2, char *...
type proxyLockingContext (line 44356) | typedef struct proxyLockingContext proxyLockingContext;
type proxyLockingContext (line 44357) | struct proxyLockingContext {
function proxyGetLockPath (line 44374) | static int proxyGetLockPath(const char *dbPath, char *lPath, size_t maxL...
function proxyCreateLockPath (line 44415) | static int proxyCreateLockPath(const char *lockPath){
function proxyCreateUnixFile (line 44455) | static int proxyCreateUnixFile(
type timespec (line 44546) | struct timespec
function proxyGetHostID (line 44552) | static int proxyGetHostID(unsigned char *pHostID, int *pError){
function proxyBreakConchLock (line 44592) | static int proxyBreakConchLock(unixFile *pFile, uuid_t myHostID){
function proxyConchLock (line 44652) | static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
function proxyTakeConch (line 44730) | static int proxyTakeConch(unixFile *pFile){
function proxyReleaseConch (line 44952) | static int proxyReleaseConch(unixFile *pFile){
function proxyCreateConchPathname (line 44982) | static int proxyCreateConchPathname(char *dbPath, char **pConchPath){
function switchLockProxyPath (line 45019) | static int switchLockProxyPath(unixFile *pFile, const char *path) {
function proxyGetDbPathForUnixFile (line 45055) | static int proxyGetDbPathForUnixFile(unixFile *pFile, char *dbPath){
function proxyTransformUnixFile (line 45086) | static int proxyTransformUnixFile(unixFile *pFile, const char *path) {
function proxyFileControl (line 45173) | static int proxyFileControl(tdsqlite3_file *id, int op, void *pArg){
function proxyCheckReservedLock (line 45246) | static int proxyCheckReservedLock(tdsqlite3_file *id, int *pResOut) {
function proxyLock (line 45285) | static int proxyLock(tdsqlite3_file *id, int eFileLock) {
function proxyUnlock (line 45309) | static int proxyUnlock(tdsqlite3_file *id, int eFileLock) {
function proxyClose (line 45328) | static int proxyClose(tdsqlite3_file *id) {
function SQLITE_API (line 45390) | SQLITE_API int tdsqlite3_os_init(void){
function SQLITE_API (line 45490) | SQLITE_API int tdsqlite3_os_end(void){
function sqlite_uint64 (line 45594) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 45602) | __declspec(naked) __inline sqlite_uint64 __cdecl tdsqlite3Hwtime(void){
function sqlite_uint64 (line 45613) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function sqlite_uint64 (line 45621) | __inline__ sqlite_uint64 tdsqlite3Hwtime(void){
function tdsqlite3Hwtime (line 45644) | tdsqlite3Hwtime(void){ return ((sqlite_uint64)0); }
function local_ioerr (line 45682) | static void local_ioerr(){
type winShm (line 45937) | typedef struct winShm winShm;
type winShmNode (line 45938) | typedef struct winShmNode winShmNode;
type winceLock (line 45946) | typedef struct winceLock {
type winFile (line 45958) | typedef struct winFile winFile;
type winFile (line 45959) | struct winFile {
type winVfsAppData (line 45992) | typedef struct winVfsAppData winVfsAppData;
type winVfsAppData (line 45993) | struct winVfsAppData {
type winMemData (line 46115) | typedef struct winMemData winMemData;
type winMemData (line 46116) | struct winMemData {
type winMemData (line 46132) | struct winMemData
type win_syscall (line 46201) | struct win_syscall {
function winSetSystemCall (line 46862) | static int winSetSystemCall(
function tdsqlite3_syscall_ptr (line 46905) | static tdsqlite3_syscall_ptr winGetSystemCall(
function SQLITE_API (line 46947) | SQLITE_API int tdsqlite3_win32_compact_heap(LPUINT pnLargest){
function SQLITE_API (line 46987) | SQLITE_API int tdsqlite3_win32_reset_heap(){
function SQLITE_API (line 47032) | SQLITE_API void tdsqlite3_win32_write_debug(const char *zBuf, int nBuf){
function SQLITE_API (line 47078) | SQLITE_API void tdsqlite3_win32_sleep(DWORD milliseconds){
function SQLITE_PRIVATE (line 47093) | SQLITE_PRIVATE DWORD tdsqlite3Win32Wait(HANDLE hObject){
function SQLITE_API (line 47127) | SQLITE_API int tdsqlite3_win32_is_nt(void){
function winMemFree (line 47189) | static void winMemFree(void *pPrior){
function winMemSize (line 47237) | static int winMemSize(void *p){
function winMemRoundup (line 47261) | static int winMemRoundup(int n){
function winMemInit (line 47268) | static int winMemInit(void *pAppData){
function winMemShutdown (line 47317) | static void winMemShutdown(void *pAppData){
function SQLITE_PRIVATE (line 47348) | SQLITE_PRIVATE const tdsqlite3_mem_methods *tdsqlite3MemGetWin32(void){
function SQLITE_PRIVATE (line 47362) | SQLITE_PRIVATE void tdsqlite3MemSetDefault(void){
function LPWSTR (line 47372) | static LPWSTR winUtf8ToUnicode(const char *zText){
function LPWSTR (line 47425) | static LPWSTR winMbcsToUnicode(const char *zText, int useAnsi){
function SQLITE_API (line 47515) | SQLITE_API LPWSTR tdsqlite3_win32_utf8_to_unicode(const char *zText){
function SQLITE_API (line 47531) | SQLITE_API char *tdsqlite3_win32_unicode_to_utf8(LPCWSTR zWideText){
function SQLITE_API (line 47547) | SQLITE_API char *tdsqlite3_win32_mbcs_to_utf8(const char *zText){
function SQLITE_API (line 47563) | SQLITE_API char *tdsqlite3_win32_mbcs_to_utf8_v2(const char *zText, int ...
function SQLITE_API (line 47579) | SQLITE_API char *tdsqlite3_win32_utf8_to_mbcs(const char *zText){
function SQLITE_API (line 47595) | SQLITE_API char *tdsqlite3_win32_utf8_to_mbcs_v2(const char *zText, int ...
function SQLITE_API (line 47612) | SQLITE_API int tdsqlite3_win32_set_directory8(
function SQLITE_API (line 47649) | SQLITE_API int tdsqlite3_win32_set_directory16(
function SQLITE_API (line 47671) | SQLITE_API int tdsqlite3_win32_set_directory(
function winGetLastErrorMsg (line 47683) | static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
function winLogErrorAtLine (line 47774) | static int winLogErrorAtLine(
function winRetryIoerr (line 47844) | static int winRetryIoerr(int *pnRetry, DWORD *pError){
function winLogIoerr (line 47873) | static void winLogIoerr(int nRetry, int lineno){
type tm (line 47893) | struct tm
type tm (line 47895) | struct tm
function winceMutexAcquire (line 47925) | static void winceMutexAcquire(HANDLE h){
function winceCreateLock (line 47940) | static int winceCreateLock(const char *zFilename, winFile *pFile){
function winceDestroyLock (line 48034) | static void winceDestroyLock(winFile *pFile){
function BOOL (line 48068) | static BOOL winceLockFile(
function BOOL (line 48134) | static BOOL winceUnlockFile(
function BOOL (line 48203) | static BOOL winLockFile(
function BOOL (line 48235) | static BOOL winUnlockFile(
function winSeekFile (line 48280) | static int winSeekFile(winFile *pFile, tdsqlite3_int64 iOffset){
function winClose (line 48353) | static int winClose(tdsqlite3_file *id){
function winTruncate (line 48598) | static int winTruncate(tdsqlite3_file *id, tdsqlite3_int64 nByte){
function winSync (line 48687) | static int winSync(tdsqlite3_file *id, int flags){
function winFileSize (line 48772) | static int winFileSize(tdsqlite3_file *id, tdsqlite3_int64 *pSize){
function winGetReadLock (line 48850) | static int winGetReadLock(winFile *pFile){
function winUnlockReadLock (line 48885) | static int winUnlockReadLock(winFile *pFile){
function winLock (line 48932) | static int winLock(tdsqlite3_file *id, int locktype){
function winCheckReservedLock (line 49075) | static int winCheckReservedLock(tdsqlite3_file *id, int *pResOut){
function winUnlock (line 49111) | static int winUnlock(tdsqlite3_file *id, int locktype){
function winNolockLock (line 49161) | static int winNolockLock(tdsqlite3_file *id, int locktype){
function winNolockCheckReservedLock (line 49167) | static int winNolockCheckReservedLock(tdsqlite3_file *id, int *pResOut){
function winNolockUnlock (line 49173) | static int winNolockUnlock(tdsqlite3_file *id, int locktype){
function winModeBit (line 49188) | static void winModeBit(winFile *pFile, unsigned char mask, int *pArg){
function winFileControl (line 49206) | static int winFileControl(tdsqlite3_file *id, int op, void *pArg){
function winSectorSize (line 49341) | static int winSectorSize(tdsqlite3_file *id){
function winDeviceCharacteristics (line 49349) | static int winDeviceCharacteristics(tdsqlite3_file *id){
function winShmEnterMutex (line 49379) | static void winShmEnterMutex(void){
function winShmLeaveMutex (line 49382) | static void winShmLeaveMutex(void){
function winShmMutexHeld (line 49386) | static int winShmMutexHeld(void) {
type winShmNode (line 49414) | struct winShmNode {
type winShm (line 49458) | struct winShm {
function winShmSystemLock (line 49481) | static int winShmSystemLock(
function winShmPurge (line 49529) | static void winShmPurge(tdsqlite3_vfs *pVfs, int deleteFlag){
function winLockSharedMemory (line 49580) | static int winLockSharedMemory(winShmNode *pShmNode){
function winOpenSharedMemory (line 49609) | static int winOpenSharedMemory(winFile *pDbFd){
function winShmUnmap (line 49718) | static int winShmUnmap(
function winShmLock (line 49759) | static int winShmLock(
function winShmBarrier (line 49868) | static void winShmBarrier(
function winShmMap (line 49896) | static int winShmMap(
function winUnmapfile (line 50050) | static int winUnmapfile(winFile *pFile){
function winMapfile (line 50099) | static int winMapfile(winFile *pFd, tdsqlite3_int64 nByte){
function winFetch (line 50197) | static int winFetch(tdsqlite3_file *fd, i64 iOff, int nAmt, void **pp){
function winUnfetch (line 50239) | static int winUnfetch(tdsqlite3_file *fd, i64 iOff, void *p){
function winMakeEndInDirSep (line 50395) | static int winMakeEndInDirSep(int nBuf, char *zBuf){
function winGetTempname (line 50415) | static int winGetTempname(tdsqlite3_vfs *pVfs, char **pzBuf){
function winIsDir (line 50646) | static int winIsDir(const void *zConverted){
function winOpen (line 50681) | static int winOpen(
function winDelete (line 51001) | static int winDelete(
function winAccess (line 51109) | static int winAccess(
function BOOL (line 51187) | static BOOL winIsDriveLetterAndColon(
function BOOL (line 51199) | static BOOL winIsVerbatimPathname(
function winFullPathname (line 51235) | static int winFullPathname(
function winDlError (line 51460) | static void winDlError(tdsqlite3_vfs *pVfs, int nBuf, char *zBufOut){
function winDlClose (line 51472) | static void winDlClose(tdsqlite3_vfs *pVfs, void *pHandle){
type EntropyGatherer (line 51485) | typedef struct EntropyGatherer EntropyGatherer;
type EntropyGatherer (line 51486) | struct EntropyGatherer {
function xorMemory (line 51495) | static void xorMemory(EntropyGatherer *p, unsigned char *x, int sz){
function winRandomness (line 51509) | static int winRandomness(tdsqlite3_vfs *pVfs, int nBuf, char *zBuf){
function winSleep (line 51566) | static int winSleep(tdsqlite3_vfs *pVfs, int microsec){
function winCurrentTimeInt64 (line 51591) | static int winCurrentTimeInt64(tdsqlite3_vfs *pVfs, tdsqlite3_int64 *piN...
function winCurrentTime (line 51634) | static int winCurrentTime(tdsqlite3_vfs *pVfs, double *prNow){
function winGetLastError (line 51674) | static int winGetLastError(tdsqlite3_vfs *pVfs, int nBuf, char *zBuf){
function SQLITE_API (line 51684) | SQLITE_API int tdsqlite3_os_init(void){
function SQLITE_API (line 51819) | SQLITE_API int tdsqlite3_os_end(void){
type MemVfs (line 51862) | typedef struct tdsqlite3_vfs MemVfs;
type MemFile (line 51863) | typedef struct MemFile MemFile;
type MemFile (line 51871) | struct MemFile {
function memdbClose (line 51968) | static int memdbClose(tdsqlite3_file *pFile){
function memdbRead (line 51977) | static int memdbRead(
function memdbEnlarge (line 51996) | static int memdbEnlarge(MemFile *p, tdsqlite3_int64 newSz){
function memdbWrite (line 52016) | static int memdbWrite(
function memdbTruncate (line 52045) | static int memdbTruncate(tdsqlite3_file *pFile, sqlite_int64 size){
function memdbSync (line 52055) | static int memdbSync(tdsqlite3_file *pFile, int flags){
function memdbFileSize (line 52062) | static int memdbFileSize(tdsqlite3_file *pFile, sqlite_int64 *pSize){
function memdbLock (line 52071) | static int memdbLock(tdsqlite3_file *pFile, int eLock){
function memdbCheckReservedLock (line 52086) | static int memdbCheckReservedLock(tdsqlite3_file *pFile, int *pResOut){
function memdbFileControl (line 52095) | static int memdbFileControl(tdsqlite3_file *pFile, int op, void *pArg){
function memdbSectorSize (line 52122) | static int memdbSectorSize(tdsqlite3_file *pFile){
function memdbDeviceCharacteristics (line 52130) | static int memdbDeviceCharacteristics(tdsqlite3_file *pFile){
function memdbFetch (line 52138) | static int memdbFetch(
function memdbUnfetch (line 52155) | static int memdbUnfetch(tdsqlite3_file *pFile, tdsqlite3_int64 iOfst, vo...
function memdbOpen (line 52164) | static int memdbOpen(
function memdbDelete (line 52191) | static int memdbDelete(tdsqlite3_vfs *pVfs, const char *zPath, int dirSy...
function memdbAccess (line 52202) | static int memdbAccess(
function memdbFullPathname (line 52217) | static int memdbFullPathname(
function memdbDlError (line 52239) | static void memdbDlError(tdsqlite3_vfs *pVfs, int nByte, char *zErrMsg){
function memdbDlClose (line 52253) | static void memdbDlClose(tdsqlite3_vfs *pVfs, void *pHandle){
function memdbRandomness (line 52261) | static int memdbRandomness(tdsqlite3_vfs *pVfs, int nByte, char *zBufOut){
function memdbSleep (line 52269) | static int memdbSleep(tdsqlite3_vfs *pVfs, int nMicro){
function memdbCurrentTime (line 52277) | static int memdbCurrentTime(tdsqlite3_vfs *pVfs, double *pTimeOut){
function memdbGetLastError (line 52282) | static int memdbGetLastError(tdsqlite3_vfs *pVfs, int a, char *b){
function memdbCurrentTimeInt64 (line 52285) | static int memdbCurrentTimeInt64(tdsqlite3_vfs *pVfs, tdsqlite3_int64 *p){
function MemFile (line 52293) | static MemFile *memdbFromDbSchema(tdsqlite3 *db, const char *zSchema){
function SQLITE_API (line 52383) | SQLITE_API int tdsqlite3_deserialize(
function SQLITE_PRIVATE (line 52449) | SQLITE_PRIVATE int tdsqlite3MemdbInit(void){
type Bitvec (line 52557) | struct Bitvec {
function SQLITE_PRIVATE (line 52578) | SQLITE_PRIVATE Bitvec *tdsqlite3BitvecCreate(u32 iSize){
function SQLITE_PRIVATE (line 52593) | SQLITE_PRIVATE int tdsqlite3BitvecTestNotNull(Bitvec *p, u32 i){
function SQLITE_PRIVATE (line 52616) | SQLITE_PRIVATE int tdsqlite3BitvecTest(Bitvec *p, u32 i){
function SQLITE_PRIVATE (line 52632) | SQLITE_PRIVATE int tdsqlite3BitvecSet(Bitvec *p, u32 i){
function SQLITE_PRIVATE (line 52703) | SQLITE_PRIVATE void tdsqlite3BitvecClear(Bitvec *p, u32 i, void *pBuf){
function SQLITE_PRIVATE (line 52740) | SQLITE_PRIVATE void tdsqlite3BitvecDestroy(Bitvec *p){
function SQLITE_PRIVATE (line 52755) | SQLITE_PRIVATE u32 tdsqlite3BitvecSize(Bitvec *p){
function SQLITE_PRIVATE (line 52800) | SQLITE_PRIVATE int tdsqlite3BitvecBuiltinTest(int sz, int *aOp){
type PCache (line 52918) | struct PCache {
function pcacheDump (line 52946) | void pcacheDump(PCache *pCache){
function SQLITE_PRIVATE (line 52985) | SQLITE_PRIVATE int tdsqlite3PcachePageSanity(PgHdr *pPg){
function pcacheManageDirtyList (line 53035) | static void pcacheManageDirtyList(PgHdr *pPage, u8 addRemove){
function pcacheUnpin (line 53105) | static void pcacheUnpin(PgHdr *p){
function numberOfCachePages (line 53117) | static int numberOfCachePages(PCache *p){
function SQLITE_PRIVATE (line 53136) | SQLITE_PRIVATE int tdsqlite3PcacheInitialize(void){
function SQLITE_PRIVATE (line 53146) | SQLITE_PRIVATE void tdsqlite3PcacheShutdown(void){
function SQLITE_PRIVATE (line 53156) | SQLITE_PRIVATE int tdsqlite3PcacheSize(void){ return sizeof(PCache); }
function SQLITE_PRIVATE (line 53170) | SQLITE_PRIVATE int tdsqlite3PcacheOpen(
function SQLITE_PRIVATE (line 53196) | SQLITE_PRIVATE int tdsqlite3PcacheSetPageSize(PCache *pCache, int szPage){
function SQLITE_PRIVATE (line 53240) | SQLITE_PRIVATE tdsqlite3_pcache_page *tdsqlite3PcacheFetch(
function SQLITE_PRIVATE (line 53281) | SQLITE_PRIVATE int tdsqlite3PcacheFetchStress(
function SQLITE_NOINLINE (line 53337) | static SQLITE_NOINLINE PgHdr *pcacheFetchFinishWithInit(
function SQLITE_PRIVATE (line 53363) | SQLITE_PRIVATE PgHdr *tdsqlite3PcacheFetchFinish(
function SQLITE_NOINLINE (line 53386) | SQLITE_NOINLINE tdsqlite3PcacheRelease(PgHdr *p){
function SQLITE_PRIVATE (line 53401) | SQLITE_PRIVATE void tdsqlite3PcacheRef(PgHdr *p){
function SQLITE_PRIVATE (line 53413) | SQLITE_PRIVATE void tdsqlite3PcacheDrop(PgHdr *p){
function SQLITE_PRIVATE (line 53427) | SQLITE_PRIVATE void tdsqlite3PcacheMakeDirty(PgHdr *p){
function SQLITE_PRIVATE (line 53446) | SQLITE_PRIVATE void tdsqlite3PcacheMakeClean(PgHdr *p){
function SQLITE_PRIVATE (line 53463) | SQLITE_PRIVATE void tdsqlite3PcacheCleanAll(PCache *pCache){
function SQLITE_PRIVATE (line 53474) | SQLITE_PRIVATE void tdsqlite3PcacheClearWritable(PCache *pCache){
function SQLITE_PRIVATE (line 53486) | SQLITE_PRIVATE void tdsqlite3PcacheClearSyncFlags(PCache *pCache){
function SQLITE_PRIVATE (line 53497) | SQLITE_PRIVATE void tdsqlite3PcacheMove(PgHdr *p, Pgno newPgno){
function SQLITE_PRIVATE (line 53519) | SQLITE_PRIVATE void tdsqlite3PcacheTruncate(PCache *pCache, Pgno pgno){
function SQLITE_PRIVATE (line 53552) | SQLITE_PRIVATE void tdsqlite3PcacheClose(PCache *pCache){
function SQLITE_PRIVATE (line 53561) | SQLITE_PRIVATE void tdsqlite3PcacheClear(PCache *pCache){
function PgHdr (line 53569) | static PgHdr *pcacheMergeDirtyList(PgHdr *pA, PgHdr *pB){
function PgHdr (line 53606) | static PgHdr *pcacheSortDirtyList(PgHdr *pIn){
function SQLITE_PRIVATE (line 53641) | SQLITE_PRIVATE PgHdr *tdsqlite3PcacheDirtyList(PCache *pCache){
function SQLITE_PRIVATE (line 53655) | SQLITE_PRIVATE int tdsqlite3PcacheRefCount(PCache *pCache){
function SQLITE_PRIVATE (line 53662) | SQLITE_PRIVATE int tdsqlite3PcachePageRefcount(PgHdr *p){
function SQLITE_PRIVATE (line 53669) | SQLITE_PRIVATE int tdsqlite3PcachePagecount(PCache *pCache){
function SQLITE_PRIVATE (line 53678) | SQLITE_PRIVATE int tdsqlite3PcacheGetCachesize(PCache *pCache){
function SQLITE_PRIVATE (line 53686) | SQLITE_PRIVATE void tdsqlite3PcacheSetCachesize(PCache *pCache, int mxPa...
function SQLITE_PRIVATE (line 53698) | SQLITE_PRIVATE int tdsqlite3PcacheSetSpillsize(PCache *p, int mxPage){
function SQLITE_PRIVATE (line 53715) | SQLITE_PRIVATE void tdsqlite3PcacheShrink(PCache *pCache){
function SQLITE_PRIVATE (line 53724) | SQLITE_PRIVATE int tdsqlite3HeaderSizePcache(void){ return ROUND8(sizeof...
function SQLITE_PRIVATE (line 53730) | SQLITE_PRIVATE int tdsqlite3PCachePercentDirty(PCache *pCache){
function SQLITE_PRIVATE (line 53742) | SQLITE_PRIVATE int tdsqlite3PCacheIsDirty(PCache *pCache){
function SQLITE_PRIVATE (line 53753) | SQLITE_PRIVATE void tdsqlite3PcacheIterateDirty(PCache *pCache, void (*x...
type PCache1 (line 53847) | typedef struct PCache1 PCache1;
type PgHdr1 (line 53848) | typedef struct PgHdr1 PgHdr1;
type PgFreeslot (line 53849) | typedef struct PgFreeslot PgFreeslot;
type PGroup (line 53850) | typedef struct PGroup PGroup;
type PgHdr1 (line 53868) | struct PgHdr1 {
type PGroup (line 53909) | struct PGroup {
type PCache1 (line 53926) | struct PCache1 {
type PgFreeslot (line 53960) | struct PgFreeslot {
function SQLITE_WSD (line 53967) | static SQLITE_WSD struct PCacheGlobal {
function SQLITE_PRIVATE (line 54026) | SQLITE_PRIVATE void tdsqlite3PCacheBufferSetup(void *pBuf, int sz, int n){
function pcache1InitBulk (line 54052) | static int pcache1InitBulk(PCache1 *pCache){
function pcache1Free (line 54133) | static void pcache1Free(void *p){
function pcache1MemSize (line 54166) | static int pcache1MemSize(void *p){
function PgHdr1 (line 54183) | static PgHdr1 *pcache1AllocPage(PCache1 *pCache, int benignMalloc){
function pcache1FreePage (line 54234) | static void pcache1FreePage(PgHdr1 *p){
function SQLITE_PRIVATE (line 54256) | SQLITE_PRIVATE void *tdsqlite3PageMalloc(int sz){
function SQLITE_PRIVATE (line 54264) | SQLITE_PRIVATE void tdsqlite3PageFree(void *p){
function pcache1UnderMemoryPressure (line 54285) | static int pcache1UnderMemoryPressure(PCache1 *pCache){
function pcache1ResizeHash (line 54302) | static void pcache1ResizeHash(PCache1 *p){
function PgHdr1 (line 54343) | static PgHdr1 *pcache1PinPage(PgHdr1 *pPage){
function pcache1RemoveFromHash (line 54368) | static void pcache1RemoveFromHash(PgHdr1 *pPage, int freeFlag){
function pcache1EnforceMaxPage (line 54386) | static void pcache1EnforceMaxPage(PCache1 *pCache){
function pcache1TruncateUnsafe (line 54411) | static void pcache1TruncateUnsafe(
function pcache1Init (line 54462) | static int pcache1Init(void *NotUsed){
function pcache1Shutdown (line 54515) | static void pcache1Shutdown(void *NotUsed){
function tdsqlite3_pcache (line 54529) | static tdsqlite3_pcache *pcache1Create(int szPage, int szExtra, int bPur...
function pcache1Cachesize (line 54579) | static void pcache1Cachesize(tdsqlite3_pcache *p, int nMax){
function pcache1Shrink (line 54598) | static void pcache1Shrink(tdsqlite3_pcache *p){
function pcache1Pagecount (line 54615) | static int pcache1Pagecount(tdsqlite3_pcache *p){
function SQLITE_NOINLINE (line 54633) | static SQLITE_NOINLINE PgHdr1 *pcache1FetchStage2(
function PgHdr1 (line 54761) | static PgHdr1 *pcache1FetchNoMutex(
function PgHdr1 (line 54791) | static PgHdr1 *pcache1FetchWithMutex(
function tdsqlite3_pcache_page (line 54806) | static tdsqlite3_pcache_page *pcache1Fetch(
function pcache1Unpin (line 54837) | static void pcache1Unpin(
function pcache1Rekey (line 54872) | static void pcache1Rekey(
function pcache1Truncate (line 54912) | static void pcache1Truncate(tdsqlite3_pcache *p, unsigned int iLimit){
function pcache1Destroy (line 54927) | static void pcache1Destroy(tdsqlite3_pcache *p){
function SQLITE_PRIVATE (line 54950) | SQLITE_PRIVATE void tdsqlite3PCacheSetDefault(void){
function SQLITE_PRIVATE (line 54972) | SQLITE_PRIVATE int tdsqlite3HeaderSizePcache1(void){ return ROUND8(sizeo...
function SQLITE_PRIVATE (line 54978) | SQLITE_PRIVATE tdsqlite3_mutex *tdsqlite3Pcache1Mutex(void){
function SQLITE_PRIVATE (line 54992) | SQLITE_PRIVATE int tdsqlite3PcacheReleaseMemory(int nReq){
function SQLITE_PRIVATE (line 55022) | SQLITE_PRIVATE void tdsqlite3PcacheStats(
type RowSetEntry (line 55128) | struct RowSetEntry {
type RowSetChunk (line 55140) | struct RowSetChunk {
type RowSet (line 55150) | struct RowSet {
function SQLITE_PRIVATE (line 55172) | SQLITE_PRIVATE RowSet *tdsqlite3RowSetInit(tdsqlite3 *db){
function SQLITE_PRIVATE (line 55194) | SQLITE_PRIVATE void tdsqlite3RowSetClear(void *pArg){
function SQLITE_PRIVATE (line 55214) | SQLITE_PRIVATE void tdsqlite3RowSetDelete(void *pArg){
type RowSetEntry (line 55227) | struct RowSetEntry
type RowSetChunk (line 55232) | struct RowSetChunk
function SQLITE_PRIVATE (line 55252) | SQLITE_PRIVATE void tdsqlite3RowSetInsert(RowSet *p, i64 rowid){
type RowSetEntry (line 55283) | struct RowSetEntry
type RowSetEntry (line 55284) | struct RowSetEntry
type RowSetEntry (line 55285) | struct RowSetEntry
type RowSetEntry (line 55287) | struct RowSetEntry
type RowSetEntry (line 55288) | struct RowSetEntry
type RowSetEntry (line 55318) | struct RowSetEntry
type RowSetEntry (line 55318) | struct RowSetEntry
type RowSetEntry (line 55320) | struct RowSetEntry
function rowSetTreeToList (line 55347) | static void rowSetTreeToList(
type RowSetEntry (line 55382) | struct RowSetEntry
type RowSetEntry (line 55383) | struct RowSetEntry
type RowSetEntry (line 55386) | struct RowSetEntry
type RowSetEntry (line 55387) | struct RowSetEntry
type RowSetEntry (line 55418) | struct RowSetEntry
type RowSetEntry (line 55418) | struct RowSetEntry
type RowSetEntry (line 55420) | struct RowSetEntry
type RowSetEntry (line 55421) | struct RowSetEntry
function SQLITE_PRIVATE (line 55450) | SQLITE_PRIVATE int tdsqlite3RowSetNext(RowSet *p, i64 *pRowid){
function SQLITE_PRIVATE (line 55484) | SQLITE_PRIVATE int tdsqlite3RowSetTest(RowSet *pRowSet, int iBatch, tdsq...
type Wal (line 55626) | typedef struct Wal Wal;
type PagerSavepoint (line 56146) | typedef struct PagerSavepoint PagerSavepoint;
type PagerSavepoint (line 56147) | struct PagerSavepoint {
type Pager (line 56333) | struct Pager {
function SQLITE_PRIVATE (line 56538) | SQLITE_PRIVATE int tdsqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){
function assert_pager_state (line 56575) | static int assert_pager_state(Pager *p){
function setGetterMethod (line 56773) | static void setGetterMethod(Pager *pPager){
function subjRequiresPage (line 56798) | static int subjRequiresPage(PgHdr *pPg){
function pageInJournal (line 56816) | static int pageInJournal(Pager *pPager, PgHdr *pPg){
function read32bits (line 56828) | static int read32bits(tdsqlite3_file *fd, i64 offset, u32 *pRes){
function write32bits (line 56847) | static int write32bits(tdsqlite3_file *fd, i64 offset, u32 val){
function pagerUnlockDb (line 56862) | static int pagerUnlockDb(Pager *pPager, int eLock){
function pagerLockDb (line 56890) | static int pagerLockDb(Pager *pPager, int eLock){
function jrnlBufferSize (line 56923) | static int jrnlBufferSize(Pager *pPager){
function u32 (line 56969) | static u32 pager_datahash(int nByte, unsigned char *pData){
function u32 (line 56977) | static u32 pager_pagehash(PgHdr *pPage){
function pager_set_pagehash (line 56980) | static void pager_set_pagehash(PgHdr *pPage){
function checkPage (line 56990) | static void checkPage(PgHdr *pPg){
function readMasterJournal (line 57028) | static int readMasterJournal(tdsqlite3_file *pJrnl, char *zMaster, u32 n...
function i64 (line 57084) | static i64 journalHdrOffset(Pager *pPager){
function zeroJournalHdr (line 57117) | static int zeroJournalHdr(Pager *pPager, int doTruncate){
function writeJournalHdr (line 57167) | static int writeJournalHdr(Pager *pPager){
function readJournalHdr (line 57285) | static int readJournalHdr(
function writeMasterJournal (line 57410) | static int writeMasterJournal(Pager *pPager, const char *zMaster){
function pager_reset (line 57478) | static void pager_reset(Pager *pPager){
function SQLITE_PRIVATE (line 57487) | SQLITE_PRIVATE u32 tdsqlite3PagerDataVersion(Pager *pPager){
function releaseAllSavepoints (line 57496) | static void releaseAllSavepoints(Pager *pPager){
function addToSavepointBitvecs (line 57515) | static int addToSavepointBitvecs(Pager *pPager, Pgno pgno){
function pager_unlock (line 57547) | static void pager_unlock(Pager *pPager){
function pager_error (line 57644) | static int pager_error(Pager *pPager, int rc){
function pagerFlushOnCommit (line 57678) | static int pagerFlushOnCommit(Pager *pPager, int bCommit){
function pager_end_transaction (line 57738) | static int pager_end_transaction(Pager *pPager, int hasMaster, int bComm...
function pagerUnlockAndRollback (line 57885) | static void pagerUnlockAndRollback(Pager *pPager){
function u32 (line 57919) | static u32 pager_cksum(Pager *pPager, const u8 *aData){
function pagerReportSize (line 57934) | static void pagerReportSize(Pager *pPager){
function SQLITE_PRIVATE (line 57950) | SQLITE_PRIVATE void tdsqlite3PagerAlignReserve(Pager *pDest, Pager *pSrc){
function pager_playback_one_page (line 57995) | static int pager_playback_one_page(
function pager_delmaster (line 58267) | static int pager_delmaster(Pager *pPager, const char *zMaster){
function pager_truncate (line 58378) | static int pager_truncate(Pager *pPager, Pgno nPage){
function SQLITE_PRIVATE (line 58414) | SQLITE_PRIVATE int tdsqlite3SectorSize(tdsqlite3_file *pFile){
function setSectorSize (line 58448) | static void setSectorSize(Pager *pPager){
function pager_playback (line 58521) | static int pager_playback(Pager *pPager, int isHot){
function readDbPage (line 58732) | static int readDbPage(PgHdr *pPg){
function pager_write_changecounter (line 58797) | static void pager_write_changecounter(PgHdr *pPg){
function pagerUndoCallback (line 58824) | static int pagerUndoCallback(void *pCtx, Pgno iPg){
function pagerRollbackWal (line 58859) | static int pagerRollbackWal(Pager *pPager){
function pagerWalFrames (line 58891) | static int pagerWalFrames(
function pagerBeginReadTransaction (line 58958) | static int pagerBeginReadTransaction(Pager *pPager){
function pagerPagecount (line 58991) | static int pagerPagecount(Pager *pPager, Pgno *pnPage){
function pagerOpenWalIfPresent (line 59051) | static int pagerOpenWalIfPresent(Pager *pPager){
function pagerPlaybackSavepoint (line 59118) | static int pagerPlaybackSavepoint(Pager *pPager, PagerSavepoint *pSavepo...
function SQLITE_PRIVATE (line 59230) | SQLITE_PRIVATE void tdsqlite3PagerSetCachesize(Pager *pPager, int mxPage){
function SQLITE_PRIVATE (line 59238) | SQLITE_PRIVATE int tdsqlite3PagerSetSpillsize(Pager *pPager, int mxPage){
function pagerFixMaplimit (line 59245) | static void pagerFixMaplimit(Pager *pPager){
function SQLITE_PRIVATE (line 59261) | SQLITE_PRIVATE void tdsqlite3PagerSetMmapLimit(Pager *pPager, tdsqlite3_...
function SQLITE_PRIVATE (line 59269) | SQLITE_PRIVATE void tdsqlite3PagerShrink(Pager *pPager){
function SQLITE_PRIVATE (line 59325) | SQLITE_PRIVATE void tdsqlite3PagerSetFlags(
function pagerOpentemp (line 59385) | static int pagerOpentemp(
function SQLITE_PRIVATE (line 59424) | SQLITE_PRIVATE void tdsqlite3PagerSetBusyHandler(
function SQLITE_PRIVATE (line 59468) | SQLITE_PRIVATE int tdsqlite3PagerSetPagesize(Pager *pPager, u32 *pPageSi...
function SQLITE_PRIVATE (line 59537) | SQLITE_PRIVATE void *tdsqlite3PagerTempSpace(Pager *pPager){
function SQLITE_PRIVATE (line 59548) | SQLITE_PRIVATE int tdsqlite3PagerMaxPageCount(Pager *pPager, int mxPage){
function disable_simulated_io_errors (line 59572) | void disable_simulated_io_errors(void){
function enable_simulated_io_errors (line 59576) | void enable_simulated_io_errors(void){
function SQLITE_PRIVATE (line 59598) | SQLITE_PRIVATE int tdsqlite3PagerReadFileheader(Pager *pPager, int N, un...
function SQLITE_PRIVATE (line 59626) | SQLITE_PRIVATE void tdsqlite3PagerPagecount(Pager *pPager, int *pnPage){
function pager_wait_on_lock (line 59647) | static int pager_wait_on_lock(Pager *pPager, int locktype){
function assertTruncateConstraintCb (line 59689) | static void assertTruncateConstraintCb(PgHdr *pPg){
function assertTruncateConstraint (line 59693) | static void assertTruncateConstraint(Pager *pPager){
function SQLITE_PRIVATE (line 59711) | SQLITE_PRIVATE void tdsqlite3PagerTruncateImage(Pager *pPager, Pgno nPage){
function pagerSyncHotJournal (line 59742) | static int pagerSyncHotJournal(Pager *pPager){
function pagerAcquireMapPage (line 59764) | static int pagerAcquireMapPage(
function pagerReleaseMapPage (line 59808) | static void pagerReleaseMapPage(PgHdr *pPg){
function pagerFreeMapHdrs (line 59821) | static void pagerFreeMapHdrs(Pager *pPager){
function databaseIsUnmoved (line 59835) | static int databaseIsUnmoved(Pager *pPager){
function SQLITE_PRIVATE (line 59869) | SQLITE_PRIVATE int tdsqlite3PagerClose(Pager *pPager, tdsqlite3 *db){
function SQLITE_PRIVATE (line 59935) | SQLITE_PRIVATE Pgno tdsqlite3PagerPagenumber(DbPage *pPg){
function SQLITE_PRIVATE (line 59943) | SQLITE_PRIVATE void tdsqlite3PagerRef(DbPage *pPg){
function syncJournal (line 59982) | static int syncJournal(Pager *pPager, int newHdr){
function pager_write_pagelist (line 60125) | static int pager_write_pagelist(Pager *pPager, PgHdr *pList){
function openSubJournal (line 60217) | static int openSubJournal(Pager *pPager){
function subjournalPage (line 60243) | static int subjournalPage(PgHdr *pPg){
function subjournalPageIfRequired (line 60285) | static int subjournalPageIfRequired(PgHdr *pPg){
function pagerStress (line 60312) | static int pagerStress(void *p, PgHdr *pPg){
function SQLITE_PRIVATE (line 60389) | SQLITE_PRIVATE int tdsqlite3PagerFlush(Pager *pPager){
function SQLITE_PRIVATE (line 60438) | SQLITE_PRIVATE int tdsqlite3PagerOpen(
function hasHotJournal (line 60821) | static int hasHotJournal(Pager *pPager, int *pExists){
function SQLITE_PRIVATE (line 60941) | SQLITE_PRIVATE int tdsqlite3PagerSharedLock(Pager *pPager){
function pagerUnlockIfUnused (line 61158) | static void pagerUnlockIfUnused(Pager *pPager){
function getPageNormal (line 61222) | static int getPageNormal(
function getPageMMap (line 61324) | static int getPageMMap(
function getPageError (line 61396) | static int getPageError(
function SQLITE_PRIVATE (line 61412) | SQLITE_PRIVATE int tdsqlite3PagerGet(
function SQLITE_PRIVATE (line 61432) | SQLITE_PRIVATE DbPage *tdsqlite3PagerLookup(Pager *pPager, Pgno pgno){
function SQLITE_PRIVATE (line 61455) | SQLITE_PRIVATE void tdsqlite3PagerUnrefNotNull(DbPage *pPg){
function SQLITE_PRIVATE (line 61467) | SQLITE_PRIVATE void tdsqlite3PagerUnref(DbPage *pPg){
function SQLITE_PRIVATE (line 61470) | SQLITE_PRIVATE void tdsqlite3PagerUnrefPageOne(DbPage *pPg){
function pager_open_journal (line 61503) | static int pager_open_journal(Pager *pPager){
function SQLITE_PRIVATE (line 61592) | SQLITE_PRIVATE int tdsqlite3PagerBegin(Pager *pPager, int exFlag, int su...
function SQLITE_NOINLINE (line 61661) | static SQLITE_NOINLINE int pagerAddPageToRollbackJournal(PgHdr *pPg){
function pager_write (line 61718) | static int pager_write(PgHdr *pPg){
function SQLITE_NOINLINE (line 61810) | static SQLITE_NOINLINE int pagerWriteLargeSector(PgHdr *pPg){
function SQLITE_PRIVATE (line 61904) | SQLITE_PRIVATE int tdsqlite3PagerWrite(PgHdr *pPg){
function SQLITE_PRIVATE (line 61928) | SQLITE_PRIVATE int tdsqlite3PagerIswriteable(DbPage *pPg){
function SQLITE_PRIVATE (line 61953) | SQLITE_PRIVATE void tdsqlite3PagerDontWrite(PgHdr *pPg){
function pager_incr_changecounter (line 61987) | static int pager_incr_changecounter(Pager *pPager, int isDirectMode){
function SQLITE_PRIVATE (line 62070) | SQLITE_PRIVATE int tdsqlite3PagerSync(Pager *pPager, const char *zMaster){
function SQLITE_PRIVATE (line 62093) | SQLITE_PRIVATE int tdsqlite3PagerExclusiveLock(Pager *pPager){
function SQLITE_PRIVATE (line 62135) | SQLITE_PRIVATE int tdsqlite3PagerCommitPhaseOne(
function SQLITE_PRIVATE (line 62365) | SQLITE_PRIVATE int tdsqlite3PagerCommitPhaseTwo(Pager *pPager){
function SQLITE_PRIVATE (line 62431) | SQLITE_PRIVATE int tdsqlite3PagerRollback(Pager *pPager){
function SQLITE_PRIVATE (line 62481) | SQLITE_PRIVATE u8 tdsqlite3PagerIsreadonly(Pager *pPager){
function SQLITE_PRIVATE (line 62489) | SQLITE_PRIVATE int tdsqlite3PagerRefcount(Pager *pPager){
function SQLITE_PRIVATE (line 62498) | SQLITE_PRIVATE int tdsqlite3PagerMemUsed(Pager *pPager){
function SQLITE_PRIVATE (line 62509) | SQLITE_PRIVATE int tdsqlite3PagerPageRefcount(DbPage *pPage){
function SQLITE_PRIVATE (line 62517) | SQLITE_PRIVATE int *tdsqlite3PagerStats(Pager *pPager){
function SQLITE_PRIVATE (line 62545) | SQLITE_PRIVATE void tdsqlite3PagerCacheStat(Pager *pPager, int eStat, in...
function SQLITE_PRIVATE (line 62568) | SQLITE_PRIVATE int tdsqlite3PagerIsMemdb(Pager *pPager){
function SQLITE_NOINLINE (line 62582) | static SQLITE_NOINLINE int pagerOpenSavepoint(Pager *pPager, int nSavepo...
function SQLITE_PRIVATE (line 62627) | SQLITE_PRIVATE int tdsqlite3PagerOpenSavepoint(Pager *pPager, int nSavep...
function SQLITE_PRIVATE (line 62669) | SQLITE_PRIVATE int tdsqlite3PagerSavepoint(Pager *pPager, int op, int iS...
function SQLITE_PRIVATE (line 62748) | SQLITE_PRIVATE const char *tdsqlite3PagerFilename(const Pager *pPager, i...
function SQLITE_PRIVATE (line 62756) | SQLITE_PRIVATE tdsqlite3_vfs *tdsqlite3PagerVfs(Pager *pPager){
function SQLITE_PRIVATE (line 62765) | SQLITE_PRIVATE tdsqlite3_file *tdsqlite3PagerFile(Pager *pPager){
function SQLITE_PRIVATE (line 62773) | SQLITE_PRIVATE void tdsqlite3PagerResetLockTimeout(Pager *pPager){
function SQLITE_PRIVATE (line 62783) | SQLITE_PRIVATE tdsqlite3_file *tdsqlite3PagerJrnlFile(Pager *pPager){
function SQLITE_PRIVATE (line 62794) | SQLITE_PRIVATE const char *tdsqlite3PagerJournalname(Pager *pPager){
function SQLITE_PRIVATE (line 62802) | SQLITE_PRIVATE void tdsqlite3PagerSetCodec(
function SQLITE_PRIVATE (line 62821) | SQLITE_PRIVATE void *tdsqlite3PagerGetCodec(Pager *pPager){
function SQLITE_PRIVATE (line 62832) | SQLITE_PRIVATE void *tdsqlite3PagerCodec(PgHdr *pPg){
function SQLITE_PRIVATE (line 62841) | SQLITE_PRIVATE int tdsqlite3PagerState(Pager *pPager){
function SQLITE_PRIVATE (line 62872) | SQLITE_PRIVATE int tdsqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pg...
function SQLITE_PRIVATE (line 63010) | SQLITE_PRIVATE void tdsqlite3PagerRekey(DbPage *pPg, Pgno iNew, u16 flags){
function SQLITE_PRIVATE (line 63019) | SQLITE_PRIVATE void *tdsqlite3PagerGetData(DbPage *pPg){
function SQLITE_PRIVATE (line 63028) | SQLITE_PRIVATE void *tdsqlite3PagerGetExtra(DbPage *pPg){
function SQLITE_PRIVATE (line 63042) | SQLITE_PRIVATE int tdsqlite3PagerLockingMode(Pager *pPager, int eMode){
function SQLITE_PRIVATE (line 63075) | SQLITE_PRIVATE int tdsqlite3PagerSetJournalMode(Pager *pPager, int eMode){
function SQLITE_PRIVATE (line 63166) | SQLITE_PRIVATE int tdsqlite3PagerGetJournalMode(Pager *pPager){
function SQLITE_PRIVATE (line 63175) | SQLITE_PRIVATE int tdsqlite3PagerOkToChangeJournalMode(Pager *pPager){
function SQLITE_PRIVATE (line 63188) | SQLITE_PRIVATE i64 tdsqlite3PagerJournalSizeLimit(Pager *pPager, i64 iLi...
function SQLITE_PRIVATE (line 63202) | SQLITE_PRIVATE tdsqlite3_backup **tdsqlite3PagerBackupPtr(Pager *pPager){
function SQLITE_PRIVATE (line 63210) | SQLITE_PRIVATE void tdsqlite3PagerClearCache(Pager *pPager){
function SQLITE_PRIVATE (line 63225) | SQLITE_PRIVATE int tdsqlite3PagerCheckpoint(
function SQLITE_PRIVATE (line 63245) | SQLITE_PRIVATE int tdsqlite3PagerWalCallback(Pager *pPager){
function SQLITE_PRIVATE (line 63253) | SQLITE_PRIVATE int tdsqlite3PagerWalSupported(Pager *pPager){
function pagerExclusiveLock (line 63263) | static int pagerExclusiveLock(Pager *pPager){
function pagerOpenWal (line 63283) | static int pagerOpenWal(Pager *pPager){
function SQLITE_PRIVATE (line 63328) | SQLITE_PRIVATE int tdsqlite3PagerOpenWal(
function SQLITE_PRIVATE (line 63367) | SQLITE_PRIVATE int tdsqlite3PagerCloseWal(Pager *pPager, tdsqlite3 *db){
function SQLITE_PRIVATE (line 63412) | SQLITE_PRIVATE int tdsqlite3PagerSnapshotGet(Pager *pPager, tdsqlite3_sn...
function SQLITE_PRIVATE (line 63425) | SQLITE_PRIVATE int tdsqlite3PagerSnapshotOpen(Pager *pPager, tdsqlite3_s...
function SQLITE_PRIVATE (line 63439) | SQLITE_PRIVATE int tdsqlite3PagerSnapshotRecover(Pager *pPager){
function SQLITE_PRIVATE (line 63461) | SQLITE_PRIVATE int tdsqlite3PagerSnapshotCheck(Pager *pPager, tdsqlite3_...
function SQLITE_PRIVATE (line 63475) | SQLITE_PRIVATE void tdsqlite3PagerSnapshotUnlock(Pager *pPager){
function SQLITE_PRIVATE (line 63491) | SQLITE_PRIVATE int tdsqlite3PagerWalFramesize(Pager *pPager){
function SQLITE_API (line 63502) | SQLITE_API int tdsqlite3pager_is_mj_pgno(Pager *pPager, Pgno pgno) {
function SQLITE_API (line 63506) | SQLITE_API void tdsqlite3pager_error(Pager *pPager, int error) {
function SQLITE_API (line 63512) | SQLITE_API void tdsqlite3pager_reset(Pager *pPager){
type WalIndexHdr (line 63833) | typedef struct WalIndexHdr WalIndexHdr;
type WalIterator (line 63834) | typedef struct WalIterator WalIterator;
type WalCkptInfo (line 63835) | typedef struct WalCkptInfo WalCkptInfo;
type WalIndexHdr (line 63851) | struct WalIndexHdr {
type WalCkptInfo (line 63924) | struct WalCkptInfo {
type Wal (line 63972) | struct Wal {
type u16 (line 64023) | typedef u16 ht_slot;
type WalIterator (line 64040) | struct WalIterator {
function SQLITE_NOINLINE (line 64090) | static SQLITE_NOINLINE int walIndexPageRealloc(
function walIndexPage (line 64135) | static int walIndexPage(
function WalCkptInfo (line 64149) | static volatile WalCkptInfo *walCkptInfo(Wal *pWal){
function WalIndexHdr (line 64157) | static volatile WalIndexHdr *walIndexHdr(Wal *pWal){
function walChecksumBytes (line 64183) | static void walChecksumBytes(
function walShmBarrier (line 64222) | static void walShmBarrier(Wal *pWal){
function walIndexWriteHdr (line 64233) | static void walIndexWriteHdr(Wal *pWal){
function walEncodeFrame (line 64259) | static void walEncodeFrame(
function walDecodeFrame (line 64290) | static int walDecodeFrame(
function walLockShared (line 64369) | static int walLockShared(Wal *pWal, int lockIdx){
function walUnlockShared (line 64379) | static void walUnlockShared(Wal *pWal, int lockIdx){
function walLockExclusive (line 64385) | static int walLockExclusive(Wal *pWal, int lockIdx, int n){
function walUnlockExclusive (line 64395) | static void walUnlockExclusive(Wal *pWal, int lockIdx, int n){
function walHash (line 64408) | static int walHash(u32 iPage){
function walNextHash (line 64413) | static int walNextHash(int iPriorHash){
type WalHashLoc (line 64422) | typedef struct WalHashLoc WalHashLoc;
type WalHashLoc (line 64423) | struct WalHashLoc {
function walHashGet (line 64443) | static int walHashGet(
function walFramePage (line 64472) | static int walFramePage(u32 iFrame){
function u32 (line 64486) | static u32 walFramePgno(Wal *pWal, u32 iFrame){
function walCleanupHash (line 64506) | static void walCleanupHash(Wal *pWal){
function walIndexAppend (line 64568) | static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
function walIndexRecover (line 64658) | static int walIndexRecover(Wal *pWal){
function walIndexClose (line 64831) | static void walIndexClose(Wal *pWal, int isDelete){
function SQLITE_PRIVATE (line 64859) | SQLITE_PRIVATE int tdsqlite3WalOpen(
function SQLITE_PRIVATE (line 64933) | SQLITE_PRIVATE void tdsqlite3WalLimit(Wal *pWal, i64 iLimit){
function walIteratorNext (line 64947) | static int walIteratorNext(
function walMerge (line 65000) | static void walMerge(
function walMergesort (line 65057) | static void walMergesort(
function walIteratorFree (line 65120) | static void walIteratorFree(WalIterator *p){
function walIteratorInit (line 65137) | static int walIteratorInit(Wal *pWal, u32 nBackfill, WalIterator **pp){
function walBusyLock (line 65218) | static int walBusyLock(
function walPagesize (line 65236) | static int walPagesize(Wal *pWal){
function walRestartHdr (line 65257) | static void walRestartHdr(Wal *pWal, u32 salt1){
function walCheckpoint (line 65304) | static int walCheckpoint(
function walLimitSize (line 65503) | static void walLimitSize(Wal *pWal, i64 nMax){
function SQLITE_PRIVATE (line 65520) | SQLITE_PRIVATE int tdsqlite3WalClose(
function walIndexTryHdr (line 65601) | static int walIndexTryHdr(Wal *pWal, int *pChanged){
function walIndexReadHdr (line 65665) | static int walIndexReadHdr(Wal *pWal, int *pChanged){
function walBeginShmUnreliable (line 65785) | static int walBeginShmUnreliable(Wal *pWal, int *pChanged){
function walTryBeginRead (line 65980) | static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
function SQLITE_PRIVATE (line 66209) | SQLITE_PRIVATE int tdsqlite3WalSnapshotRecover(Wal *pWal){
function SQLITE_PRIVATE (line 66279) | SQLITE_PRIVATE int tdsqlite3WalBeginReadTransaction(Wal *pWal, int *pCha...
function SQLITE_PRIVATE (line 66370) | SQLITE_PRIVATE void tdsqlite3WalEndReadTransaction(Wal *pWal){
function SQLITE_PRIVATE (line 66386) | SQLITE_PRIVATE int tdsqlite3WalFindFrame(
function SQLITE_PRIVATE (line 66488) | SQLITE_PRIVATE int tdsqlite3WalReadFrame(
function SQLITE_PRIVATE (line 66508) | SQLITE_PRIVATE Pgno tdsqlite3WalDbsize(Wal *pWal){
function SQLITE_PRIVATE (line 66529) | SQLITE_PRIVATE int tdsqlite3WalBeginWriteTransaction(Wal *pWal){
function SQLITE_PRIVATE (line 66567) | SQLITE_PRIVATE int tdsqlite3WalEndWriteTransaction(Wal *pWal){
function SQLITE_PRIVATE (line 66589) | SQLITE_PRIVATE int tdsqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno...
function SQLITE_PRIVATE (line 66629) | SQLITE_PRIVATE void tdsqlite3WalSavepoint(Wal *pWal, u32 *aWalData){
function SQLITE_PRIVATE (line 66643) | SQLITE_PRIVATE int tdsqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData){
function walRestartLog (line 66680) | static int walRestartLog(Wal *pWal){
type WalWriter (line 66727) | typedef struct WalWriter {
function walWriteToLog (line 66743) | static int walWriteToLog(
function walWriteOneFrame (line 66768) | static int walWriteOneFrame(
function walRewriteChecksums (line 66798) | static int walRewriteChecksums(Wal *pWal, u32 iLast){
function SQLITE_PRIVATE (line 66847) | SQLITE_PRIVATE int tdsqlite3WalFrames(
function SQLITE_PRIVATE (line 67089) | SQLITE_PRIVATE int tdsqlite3WalCheckpoint(
function SQLITE_PRIVATE (line 67199) | SQLITE_PRIVATE int tdsqlite3WalCallback(Wal *pWal){
function SQLITE_PRIVATE (line 67232) | SQLITE_PRIVATE int tdsqlite3WalExclusiveMode(Wal *pWal, int op){
function SQLITE_PRIVATE (line 67274) | SQLITE_PRIVATE int tdsqlite3WalHeapMemory(Wal *pWal){
function SQLITE_PRIVATE (line 67283) | SQLITE_PRIVATE int tdsqlite3WalSnapshotGet(Wal *pWal, tdsqlite3_snapshot...
function SQLITE_PRIVATE (line 67307) | SQLITE_PRIVATE void tdsqlite3WalSnapshotOpen(Wal *pWal, tdsqlite3_snapsh...
function SQLITE_API (line 67315) | SQLITE_API int tdsqlite3_snapshot_cmp(tdsqlite3_snapshot *p1, tdsqlite3_...
function SQLITE_PRIVATE (line 67339) | SQLITE_PRIVATE int tdsqlite3WalSnapshotCheck(Wal *pWal, tdsqlite3_snapsh...
function SQLITE_PRIVATE (line 67358) | SQLITE_PRIVATE void tdsqlite3WalSnapshotUnlock(Wal *pWal){
function SQLITE_PRIVATE (line 67372) | SQLITE_PRIVATE int tdsqlite3WalFramesize(Wal *pWal){
function SQLITE_PRIVATE (line 67380) | SQLITE_PRIVATE tdsqlite3_file *tdsqlite3WalFile(Wal *pWal){
function lockBtreeMutex (line 67414) | static void lockBtreeMutex(Btree *p){
function unlockBtreeMutex (line 67428) | static void SQLITE_NOINLINE unlockBtreeMutex(Btree *p){
function SQLITE_PRIVATE (line 67458) | SQLITE_PRIVATE void tdsqlite3BtreeEnter(Btree *p){
function btreeLockCarefully (line 67492) | static void SQLITE_NOINLINE btreeLockCarefully(Btree *p){
function SQLITE_PRIVATE (line 67530) | SQLITE_PRIVATE void tdsqlite3BtreeLeave(Btree *p){
function SQLITE_PRIVATE (line 67548) | SQLITE_PRIVATE int tdsqlite3BtreeHoldsMutex(Btree *p){
function btreeEnterAll (line 67573) | static void SQLITE_NOINLINE btreeEnterAll(tdsqlite3 *db){
function SQLITE_PRIVATE (line 67587) | SQLITE_PRIVATE void tdsqlite3BtreeEnterAll(tdsqlite3 *db){
function btreeLeaveAll (line 67590) | static void SQLITE_NOINLINE btreeLeaveAll(tdsqlite3 *db){
function SQLITE_PRIVATE (line 67599) | SQLITE_PRIVATE void tdsqlite3BtreeLeaveAll(tdsqlite3 *db){
function SQLITE_PRIVATE (line 67610) | SQLITE_PRIVATE int tdsqlite3BtreeHoldsAllMutexes(tdsqlite3 *db){
function SQLITE_PRIVATE (line 67639) | SQLITE_PRIVATE int tdsqlite3SchemaMutexHeld(tdsqlite3 *db, int iDb, Sche...
function SQLITE_PRIVATE (line 67663) | SQLITE_PRIVATE void tdsqlite3BtreeEnter(Btree *p){
function SQLITE_PRIVATE (line 67666) | SQLITE_PRIVATE void tdsqlite3BtreeEnterAll(tdsqlite3 *db){
function SQLITE_PRIVATE (line 67685) | SQLITE_PRIVATE void tdsqlite3BtreeEnterCursor(BtCursor *pCur){
function SQLITE_PRIVATE (line 67689) | SQLITE_PRIVATE void tdsqlite3BtreeLeaveCursor(BtCursor *pCur){
function SQLITE_API (line 67787) | SQLITE_API int tdsqlite3_enable_shared_cache(int enable){
function corruptPageError (line 67823) | int corruptPageError(int lineno, MemPage *p){
function hasSharedCacheTableLock (line 67866) | static int hasSharedCacheTableLock(
function hasReadConflicts (line 67953) | static int hasReadConflicts(Btree *pBtree, Pgno iRoot){
function querySharedCacheTableLock (line 67973) | static int querySharedCacheTableLock(Btree *p, Pgno iTab, u8 eLock){
function setSharedCacheTableLock (line 68045) | static int setSharedCacheTableLock(Btree *p, Pgno iTable, u8 eLock){
function clearAllSharedCacheTableLocks (line 68109) | static void clearAllSharedCacheTableLocks(Btree *p){
function downgradeAllSharedCacheTableLocks (line 68153) | static void downgradeAllSharedCacheTableLocks(Btree *p){
function cursorHoldsMutex (line 68178) | static int cursorHoldsMutex(BtCursor *p){
function cursorOwnsBtShared (line 68190) | static int cursorOwnsBtShared(BtCursor *p){
function invalidateAllOverflowCache (line 68206) | static void invalidateAllOverflowCache(BtShared *pBt){
function invalidateIncrblobCursors (line 68228) | static void invalidateIncrblobCursors(
function btreeSetHasContent (line 68288) | static int btreeSetHasContent(BtShared *pBt, Pgno pgno){
function btreeGetHasContent (line 68310) | static int btreeGetHasContent(BtShared *pBt, Pgno pgno){
function btreeClearHasContent (line 68319) | static void btreeClearHasContent(BtShared *pBt){
function btreeReleaseAllCursorPages (line 68327) | static void btreeReleaseAllCursorPages(BtCursor *pCur){
function saveCursorKey (line 68351) | static int saveCursorKey(BtCursor *pCur){
function saveCursorPosition (line 68393) | static int saveCursorPosition(BtCursor *pCur){
function saveAllCursors (line 68443) | static int saveAllCursors(BtShared *pBt, Pgno iRoot, BtCursor *pExcept){
function saveCursorsOnList (line 68460) | static int SQLITE_NOINLINE saveCursorsOnList(
function SQLITE_PRIVATE (line 68485) | SQLITE_PRIVATE void tdsqlite3BtreeClearCursor(BtCursor *pCur){
function btreeMoveto (line 68497) | static int btreeMoveto(
function btreeRestoreCursorPosition (line 68535) | static int btreeRestoreCursorPosition(BtCursor *pCur){
function SQLITE_PRIVATE (line 68578) | SQLITE_PRIVATE int tdsqlite3BtreeCursorHasMoved(BtCursor *pCur){
function SQLITE_PRIVATE (line 68591) | SQLITE_PRIVATE BtCursor *tdsqlite3BtreeFakeValidCursor(void){
function SQLITE_PRIVATE (line 68610) | SQLITE_PRIVATE int tdsqlite3BtreeCursorRestore(BtCursor *pCur, int *pDif...
function SQLITE_PRIVATE (line 68634) | SQLITE_PRIVATE void tdsqlite3BtreeCursorHint(BtCursor *pCur, int eHintTy...
function SQLITE_PRIVATE (line 68642) | SQLITE_PRIVATE void tdsqlite3BtreeCursorHintFlags(BtCursor *pCur, unsign...
function Pgno (line 68658) | static Pgno ptrmapPageno(BtShared *pBt, Pgno pgno){
function ptrmapPut (line 68682) | static void ptrmapPut(BtShared *pBt, Pgno key, u8 eType, Pgno parent, in...
function ptrmapGet (line 68741) | static int ptrmapGet(BtShared *pBt, Pgno key, u8 *pEType, Pgno *pPgno){
function SQLITE_NOINLINE (line 68800) | static SQLITE_NOINLINE void btreeParseCellAdjustSizeForOverflow(
function btreeParseCellPtrNoPayload (line 68845) | static void btreeParseCellPtrNoPayload(
function btreeParseCellPtr (line 68862) | static void btreeParseCellPtr(
function btreeParseCellPtrIndex (line 68930) | static void btreeParseCellPtrIndex(
function btreeParseCell (line 68967) | static void btreeParseCell(
function u16 (line 68987) | static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
function u16 (line 69035) | static u16 cellSizePtrNoPayload(MemPage *pPage, u8 *pCell){
function u16 (line 69061) | static u16 cellSize(MemPage *pPage, int iCell){
function ptrmapPutOvflPtr (line 69073) | static void ptrmapPutOvflPtr(MemPage *pPage, MemPage *pSrc, u8 *pCell,in...
function defragmentPage (line 69104) | static int defragmentPage(MemPage *pPage, int nMaxFrag){
function u8 (line 69240) | static u8 *pageFindSlot(MemPage *pPg, int nByte, int *pRc){
function allocateSpace (line 69308) | static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
function freeSpace (line 69404) | static int freeSpace(MemPage *pPage, u16 iStart, u16 iSize){
function decodeFlags (line 69511) | static int decodeFlags(MemPage *pPage, int flagByte){
function btreeComputeFreeSpace (line 69564) | static int btreeComputeFreeSpace(MemPage *pPage){
function SQLITE_NOINLINE (line 69646) | static SQLITE_NOINLINE int btreeCellSizeCheck(MemPage *pPage){
function btreeInitPage (line 69687) | static int btreeInitPage(MemPage *pPage){
function zeroPage (line 69740) | static void zeroPage(MemPage *pPage, int flags){
function MemPage (line 69777) | static MemPage *btreePageFromDbPage(DbPage *pDbPage, Pgno pgno, BtShared...
function btreeGetPage (line 69801) | static int btreeGetPage(
function MemPage (line 69823) | static MemPage *btreePageLookup(BtShared *pBt, Pgno pgno){
function Pgno (line 69837) | static Pgno btreePagecount(BtShared *pBt){
function SQLITE_PRIVATE (line 69841) | SQLITE_PRIVATE u32 tdsqlite3BtreeLastPage(Btree *p){
function getAndInitPage (line 69859) | static int getAndInitPage(
function releasePageNotNull (line 69918) | static void releasePageNotNull(MemPage *pPage){
function releasePage (line 69927) | static void releasePage(MemPage *pPage){
function releasePageOne (line 69930) | static void releasePageOne(MemPage *pPage){
function btreeGetUnusedPage (line 69950) | static int btreeGetUnusedPage(
function pageReinit (line 69979) | static void pageReinit(DbPage *pData){
function btreeInvokeBusyHandler (line 70001) | static int btreeInvokeBusyHandler(void *pArg){
function SQLITE_PRIVATE (line 70030) | SQLITE_PRIVATE int tdsqlite3BtreeOpen(
function removeFromSharingList (line 70328) | static int removeFromSharingList(BtShared *pBt){
function allocateTempSpace (line 70367) | static void allocateTempSpace(BtShared *pBt){
function freeTempSpace (line 70396) | static void freeTempSpace(BtShared *pBt){
function SQLITE_PRIVATE (line 70407) | SQLITE_PRIVATE int tdsqlite3BtreeClose(Btree *p){
function SQLITE_PRIVATE (line 70469) | SQLITE_PRIVATE int tdsqlite3BtreeSetCacheSize(Btree *p, int mxPage){
function SQLITE_PRIVATE (line 70488) | SQLITE_PRIVATE int tdsqlite3BtreeSetSpillSize(Btree *p, int mxPage){
function SQLITE_PRIVATE (line 70503) | SQLITE_PRIVATE int tdsqlite3BtreeSetMmapLimit(Btree *p, tdsqlite3_int64 ...
function SQLITE_PRIVATE (line 70522) | SQLITE_PRIVATE int tdsqlite3BtreeSetPagerFlags(
function SQLITE_PRIVATE (line 70555) | SQLITE_PRIVATE int tdsqlite3BtreeSetPageSize(Btree *p, int pageSize, int...
function SQLITE_PRIVATE (line 70588) | SQLITE_PRIVATE int tdsqlite3BtreeGetPageSize(Btree *p){
function SQLITE_PRIVATE (line 70603) | SQLITE_PRIVATE int tdsqlite3BtreeGetReserveNoMutex(Btree *p){
function SQLITE_PRIVATE (line 70619) | SQLITE_PRIVATE int tdsqlite3BtreeGetOptimalReserve(Btree *p){
function SQLITE_PRIVATE (line 70636) | SQLITE_PRIVATE int tdsqlite3BtreeMaxPageCount(Btree *p, int mxPage){
function SQLITE_PRIVATE (line 70662) | SQLITE_PRIVATE int tdsqlite3BtreeSecureDelete(Btree *p, int newFlag){
function SQLITE_PRIVATE (line 70683) | SQLITE_PRIVATE int tdsqlite3BtreeSetAutoVacuum(Btree *p, int autoVacuum){
function SQLITE_PRIVATE (line 70707) | SQLITE_PRIVATE int tdsqlite3BtreeGetAutoVacuum(Btree *p){
function setDefaultSyncFlag (line 70731) | static void setDefaultSyncFlag(BtShared *pBt, u8 safety_level){
function lockBtree (line 70763) | static int lockBtree(BtShared *pBt){
function countValidCursors (line 70951) | static int countValidCursors(BtShared *pBt, int wrOnly){
function unlockBtreeIfUnused (line 70970) | static void unlockBtreeIfUnused(BtShared *pBt){
function newDatabase (line 70987) | static int newDatabase(BtShared *pBt){
function SQLITE_PRIVATE (line 71031) | SQLITE_PRIVATE int tdsqlite3BtreeNewDb(Btree *p){
function SQLITE_PRIVATE (line 71075) | SQLITE_PRIVATE int tdsqlite3BtreeBeginTrans(Btree *p, int wrflag, int *p...
function setChildPtrmaps (line 71238) | static int setChildPtrmaps(MemPage *pPage){
function modifyPagePointer (line 71283) | static int modifyPagePointer(MemPage *pPage, Pgno iFrom, Pgno iTo, u8 eT...
function relocatePage (line 71344) | static int relocatePage(
function incrVacuumStep (line 71438) | static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg, int bC...
function Pgno (line 71534) | static Pgno finalDbSize(BtShared *pBt, Pgno nOrig, Pgno nFree){
function SQLITE_PRIVATE (line 71560) | SQLITE_PRIVATE int tdsqlite3BtreeIncrVacuum(Btree *p){
function autoVacuumCommit (line 71602) | static int autoVacuumCommit(BtShared *pBt){
function SQLITE_PRIVATE (line 71681) | SQLITE_PRIVATE int tdsqlite3BtreeCommitPhaseOne(Btree *p, const char *zM...
function btreeEndTransaction (line 71708) | static void btreeEndTransaction(Btree *p){
function SQLITE_PRIVATE (line 71770) | SQLITE_PRIVATE int tdsqlite3BtreeCommitPhaseTwo(Btree *p, int bCleanup){
function SQLITE_PRIVATE (line 71802) | SQLITE_PRIVATE int tdsqlite3BtreeCommit(Btree *p){
function SQLITE_PRIVATE (line 71839) | SQLITE_PRIVATE int tdsqlite3BtreeTripAllCursors(Btree *pBtree, int errCo...
function btreeSetNPage (line 71871) | static void btreeSetNPage(BtShared *pBt, MemPage *pPage1){
function SQLITE_PRIVATE (line 71890) | SQLITE_PRIVATE int tdsqlite3BtreeRollback(Btree *p, int tripCode, int wr...
function SQLITE_PRIVATE (line 71955) | SQLITE_PRIVATE int tdsqlite3BtreeBeginStmt(Btree *p, int iStatement){
function SQLITE_PRIVATE (line 71986) | SQLITE_PRIVATE int tdsqlite3BtreeSavepoint(Btree *p, int op, int iSavepo...
function btreeCursor (line 72057) | static int btreeCursor(
function btreeCursorWithLock (line 72122) | static int btreeCursorWithLock(
function SQLITE_PRIVATE (line 72135) | SQLITE_PRIVATE int tdsqlite3BtreeCursor(
function SQLITE_PRIVATE (line 72157) | SQLITE_PRIVATE int tdsqlite3BtreeCursorSize(void){
function SQLITE_PRIVATE (line 72169) | SQLITE_PRIVATE void tdsqlite3BtreeCursorZero(BtCursor *p){
function SQLITE_PRIVATE (line 72177) | SQLITE_PRIVATE int tdsqlite3BtreeCloseCursor(BtCursor *pCur){
function cellInfoEqual (line 72214) | static int cellInfoEqual(CellInfo *a, CellInfo *b){
function assertCellInfo (line 72222) | static void assertCellInfo(BtCursor *pCur){
function SQLITE_NOINLINE (line 72231) | static SQLITE_NOINLINE void getCellInfo(BtCursor *pCur){
function SQLITE_PRIVATE (line 72246) | SQLITE_PRIVATE int tdsqlite3BtreeCursorIsValid(BtCursor *pCur){
function SQLITE_PRIVATE (line 72250) | SQLITE_PRIVATE int tdsqlite3BtreeCursorIsValidNN(BtCursor *pCur){
function SQLITE_PRIVATE (line 72261) | SQLITE_PRIVATE i64 tdsqlite3BtreeIntegerKey(BtCursor *pCur){
function SQLITE_PRIVATE (line 72272) | SQLITE_PRIVATE void tdsqlite3BtreeCursorPin(BtCursor *pCur){
function SQLITE_PRIVATE (line 72276) | SQLITE_PRIVATE void tdsqlite3BtreeCursorUnpin(BtCursor *pCur){
function SQLITE_PRIVATE (line 72286) | SQLITE_PRIVATE i64 tdsqlite3BtreeOffset(BtCursor *pCur){
function SQLITE_PRIVATE (line 72304) | SQLITE_PRIVATE u32 tdsqlite3BtreePayloadSize(BtCursor *pCur){
function SQLITE_PRIVATE (line 72324) | SQLITE_PRIVATE tdsqlite3_int64 tdsqlite3BtreeMaxRecordSize(BtCursor *pCur){
function getOverflowPage (line 72349) | static int getOverflowPage(
function copyPayload (line 72417) | static int copyPayload(
function accessPayload (line 72467) | static int accessPayload(
function SQLITE_PRIVATE (line 72668) | SQLITE_PRIVATE int tdsqlite3BtreePayload(BtCursor *pCur, u32 offset, u32...
function SQLITE_NOINLINE (line 72682) | static SQLITE_NOINLINE int accessPayloadChecked(
function SQLITE_PRIVATE (line 72696) | SQLITE_PRIVATE int tdsqlite3BtreePayloadChecked(BtCursor *pCur, u32 offs...
function SQLITE_PRIVATE (line 72764) | SQLITE_PRIVATE const void *tdsqlite3BtreePayloadFetch(BtCursor *pCur, u3...
function moveToChild (line 72778) | static int moveToChild(BtCursor *pCur, u32 newPgno){
function assertParentIndex (line 72805) | static void assertParentIndex(MemPage *pParent, int iIdx, Pgno iChild){
function moveToParent (line 72827) | static void moveToParent(BtCursor *pCur){
function moveToRoot (line 72868) | static int moveToRoot(BtCursor *pCur){
function moveToLeftmost (line 72955) | static int moveToLeftmost(BtCursor *pCur){
function moveToRightmost (line 72980) | static int moveToRightmost(BtCursor *pCur){
function SQLITE_PRIVATE (line 73003) | SQLITE_PRIVATE int tdsqlite3BtreeFirst(BtCursor *pCur, int *pRes){
function SQLITE_PRIVATE (line 73025) | SQLITE_PRIVATE int tdsqlite3BtreeLast(BtCursor *pCur, int *pRes){
function SQLITE_PRIVATE (line 73095) | SQLITE_PRIVATE int tdsqlite3BtreeMovetoUnpacked(
function SQLITE_PRIVATE (line 73346) | SQLITE_PRIVATE int tdsqlite3BtreeEof(BtCursor *pCur){
function SQLITE_PRIVATE (line 73359) | SQLITE_PRIVATE i64 tdsqlite3BtreeRowCountEst(BtCursor *pCur){
function SQLITE_NOINLINE (line 73399) | static SQLITE_NOINLINE int btreeNext(BtCursor *pCur){
function SQLITE_PRIVATE (line 73469) | SQLITE_PRIVATE int tdsqlite3BtreeNext(BtCursor *pCur, int flags){
function SQLITE_NOINLINE (line 73509) | static SQLITE_NOINLINE int btreePrevious(BtCursor *pCur){
function SQLITE_PRIVATE (line 73558) | SQLITE_PRIVATE int tdsqlite3BtreePrevious(BtCursor *pCur, int flags){
function allocateBtreePage (line 73596) | static int allocateBtreePage(
function freePage2 (line 73918) | static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){
function freePage (line 74048) | static void freePage(MemPage *pPage, int *pRC){
function clearCell (line 74058) | static int clearCell(
function fillInCell (line 74141) | static int fillInCell(
function dropCell (line 74331) | static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
function insertCell (line 74387) | static void insertCell(
type CellArray (line 74562) | typedef struct CellArray CellArray;
type CellArray (line 74563) | struct CellArray {
function populateCellCache (line 74576) | static void populateCellCache(CellArray *p, int idx, int N){
function SQLITE_NOINLINE (line 74594) | static SQLITE_NOINLINE u16 computeCellSize(CellArray *p, int N){
function u16 (line 74600) | static u16 cachedCellSize(CellArray *p, int N){
function rebuildPage (line 74619) | static int rebuildPage(
function pageInsertArray (line 74710) | static int pageInsertArray(
function pageFreeArray (line 74775) | static int pageFreeArray(
function editPage (line 74832) | static int editPage(
function balance_quick (line 74960) | static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
function ptrmapCheckPages (line 75062) | static int ptrmapCheckPages(MemPage **apPage, int nPage){
function copyNodeContent (line 75115) | static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){
function balance_nonroot (line 75197) | static int balance_nonroot(
function balance_deeper (line 75983) | static int balance_deeper(MemPage *pRoot, MemPage **ppChild){
function anotherValidCursor (line 76041) | static int anotherValidCursor(BtCursor *pCur){
function balance (line 76064) | static int balance(BtCursor *pCur){
function btreeOverwriteContent (line 76190) | static int btreeOverwriteContent(
function btreeOverwriteCell (line 76233) | static int btreeOverwriteCell(BtCursor *pCur, const BtreePayload *pX){
function SQLITE_PRIVATE (line 76312) | SQLITE_PRIVATE int tdsqlite3BtreeInsert(
function SQLITE_PRIVATE (line 76593) | SQLITE_PRIVATE int tdsqlite3BtreeDelete(BtCursor *pCur, u8 flags){
function btreeCreateTable (line 76777) | static int btreeCreateTable(Btree *p, int *piTable, int createTabFlags){
function SQLITE_PRIVATE (line 76920) | SQLITE_PRIVATE int tdsqlite3BtreeCreateTable(Btree *p, int *piTable, int...
function clearDatabasePage (line 76932) | static int clearDatabasePage(
function SQLITE_PRIVATE (line 76999) | SQLITE_PRIVATE int tdsqlite3BtreeClearTable(Btree *p, int iTable, int *p...
function SQLITE_PRIVATE (line 77023) | SQLITE_PRIVATE int tdsqlite3BtreeClearTableOfCursor(BtCursor *pCur){
function btreeDropTable (line 77047) | static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
function SQLITE_PRIVATE (line 77132) | SQLITE_PRIVATE int tdsqlite3BtreeDropTable(Btree *p, int iTable, int *pi...
function SQLITE_PRIVATE (line 77161) | SQLITE_PRIVATE void tdsqlite3BtreeGetMeta(Btree *p, int idx, u32 *pMeta){
function SQLITE_PRIVATE (line 77191) | SQLITE_PRIVATE int tdsqlite3BtreeUpdateMeta(Btree *p, int idx, u32 iMeta){
function SQLITE_PRIVATE (line 77224) | SQLITE_PRIVATE int tdsqlite3BtreeCount(tdsqlite3 *db, BtCursor *pCur, i6...
function SQLITE_PRIVATE (line 77294) | SQLITE_PRIVATE Pager *tdsqlite3BtreePager(Btree *p){
function checkAppendMsg (line 77302) | static void checkAppendMsg(
function getPageReferenced (line 77332) | static int getPageReferenced(IntegrityCk *pCheck, Pgno iPg){
function setPageReferenced (line 77340) | static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){
function checkRef (line 77354) | static int checkRef(IntegrityCk *pCheck, Pgno iPage){
function checkPtrmap (line 77374) | static void checkPtrmap(
function checkList (line 77403) | static void checkList(
function btreeHeapInsert (line 77492) | static void btreeHeapInsert(u32 *aHeap, u32 x){
function btreeHeapPull (line 77502) | static int btreeHeapPull(u32 *aHeap, u32 *pOut){
function checkTreePage (line 77536) | static int checkTreePage(
function SQLITE_PRIVATE (line 77806) | SQLITE_PRIVATE char *tdsqlite3BtreeIntegrityCheck(
function SQLITE_PRIVATE (line 77945) | SQLITE_PRIVATE const char *tdsqlite3BtreeGetFilename(Btree *p){
function SQLITE_PRIVATE (line 77958) | SQLITE_PRIVATE const char *tdsqlite3BtreeGetJournalname(Btree *p){
function SQLITE_PRIVATE (line 77966) | SQLITE_PRIVATE int tdsqlite3BtreeIsInTrans(Btree *p){
function SQLITE_PRIVATE (line 77980) | SQLITE_PRIVATE int tdsqlite3BtreeCheckpoint(Btree *p, int eMode, int *pn...
function SQLITE_PRIVATE (line 77999) | SQLITE_PRIVATE int tdsqlite3BtreeIsInReadTrans(Btree *p){
function SQLITE_PRIVATE (line 78005) | SQLITE_PRIVATE int tdsqlite3BtreeIsInBackup(Btree *p){
function SQLITE_PRIVATE (line 78031) | SQLITE_PRIVATE void *tdsqlite3BtreeSchema(Btree *p, int nBytes, void(*xF...
function SQLITE_PRIVATE (line 78047) | SQLITE_PRIVATE int tdsqlite3BtreeSchemaLocked(Btree *p){
function SQLITE_PRIVATE (line 78064) | SQLITE_PRIVATE int tdsqlite3BtreeLockTable(Btree *p, int iTab, u8 isWrit...
function SQLITE_PRIVATE (line 78094) | SQLITE_PRIVATE int tdsqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32...
function SQLITE_PRIVATE (line 78142) | SQLITE_PRIVATE void tdsqlite3BtreeIncrblobCursor(BtCursor *pCur){
function SQLITE_PRIVATE (line 78153) | SQLITE_PRIVATE int tdsqlite3BtreeSetVersion(Btree *pBtree, int iVersion){
function SQLITE_PRIVATE (line 78188) | SQLITE_PRIVATE int tdsqlite3BtreeCursorHasHint(BtCursor *pCsr, unsigned ...
function SQLITE_PRIVATE (line 78195) | SQLITE_PRIVATE int tdsqlite3BtreeIsReadonly(Btree *p){
function SQLITE_PRIVATE (line 78202) | SQLITE_PRIVATE int tdsqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(...
function SQLITE_PRIVATE (line 78208) | SQLITE_PRIVATE int tdsqlite3BtreeSharable(Btree *p){
function SQLITE_PRIVATE (line 78217) | SQLITE_PRIVATE int tdsqlite3BtreeConnectionCount(Btree *p){
type tdsqlite3_backup (line 78245) | struct tdsqlite3_backup {
function Btree (line 78306) | static Btree *findBtree(tdsqlite3 *pErrorDb, tdsqlite3 *pDb, const char ...
function setDestPgsz (line 78337) | static int setDestPgsz(tdsqlite3_backup *p){
function checkReadTransaction (line 78349) | static int checkReadTransaction(tdsqlite3 *db, Btree *p){
function SQLITE_API (line 78365) | SQLITE_API tdsqlite3_backup *tdsqlite3_backup_init(
function isFatalError (line 78461) | static int isFatalError(int rc){
function backupOnePage (line 78470) | static int backupOnePage(
function backupTruncateFile (line 78566) | static int backupTruncateFile(tdsqlite3_file *pFile, i64 iSize){
function attachBackupObject (line 78579) | static void attachBackupObject(tdsqlite3_backup *p){
function SQLITE_API (line 78591) | SQLITE_API int tdsqlite3_backup_step(tdsqlite3_backup *p, int nPage){
function SQLITE_API (line 78845) | SQLITE_API int tdsqlite3_backup_finish(tdsqlite3_backup *p){
function SQLITE_API (line 78899) | SQLITE_API int tdsqlite3_backup_remaining(tdsqlite3_backup *p){
function SQLITE_API (line 78913) | SQLITE_API int tdsqlite3_backup_pagecount(tdsqlite3_backup *p){
function SQLITE_NOINLINE (line 78935) | static SQLITE_NOINLINE void backupUpdate(
function SQLITE_PRIVATE (line 78960) | SQLITE_PRIVATE void tdsqlite3BackupUpdate(tdsqlite3_backup *pBackup, Pgn...
function SQLITE_PRIVATE (line 78975) | SQLITE_PRIVATE void tdsqlite3BackupRestart(tdsqlite3_backup *pBackup){
function SQLITE_PRIVATE (line 78992) | SQLITE_PRIVATE int tdsqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
function SQLITE_PRIVATE (line 79081) | SQLITE_PRIVATE int tdsqlite3VdbeCheckMemInvariants(Mem *p){
function vdbeMemRenderNum (line 79152)
Copy disabled (too large)
Download .json
Condensed preview — 1609 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (29,200K chars).
[
{
"path": ".clang-format",
"chars": 5680,
"preview": "---\nLanguage: Cpp\n# BasedOnStyle: Google\nAccessModifierOffset: -1\nAlignAfterOpenBracket: Align\nAlignArrayOfStruc"
},
{
"path": ".gitattributes",
"chars": 2574,
"preview": "* text=auto\n\n*.cpp text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent\n*.hpp text whitespace=blank-"
},
{
"path": ".gitignore",
"chars": 77,
"preview": "**/*build*/\n**/.*.swp\n**/.DS_Store\n**/auto/\ndocs/\n/tdlib/\nvcpkg/\n.clang-tidy\n"
},
{
"path": "CHANGELOG.md",
"chars": 119178,
"preview": "Changes in 1.8.0 (29 Dec 2021):\n\n* Changed the type of user, basic group and supergroup identifiers from `int32` to `int"
},
{
"path": "CMake/AddCXXCompilerFlag.cmake",
"chars": 2757,
"preview": "# - Adds a compiler flag if it is supported by the compiler\n#\n# This function checks that the supplied compiler flag is "
},
{
"path": "CMake/FindAtomics.cmake",
"chars": 2035,
"preview": "# Original issue:\n# * https://gitlab.kitware.com/cmake/cmake/-/issues/23021#note_1098733\n#\n# For reference:\n# * https://"
},
{
"path": "CMake/FindReadline.cmake",
"chars": 1204,
"preview": "if (APPLE)\n find_path(READLINE_INCLUDE_DIR readline/readline.h /opt/homebrew/opt/readline/include /usr/local/opt/readli"
},
{
"path": "CMake/GeneratePkgConfig.cmake",
"chars": 3050,
"preview": "function(get_relative_link OUTPUT PATH)\n if (PATH MATCHES \"^[$]<[$]<CONFIG:DEBUG>:\")\n set(${OUTPUT} \"\" PARENT_SCOPE)"
},
{
"path": "CMake/GetGitRevisionDescription.cmake",
"chars": 4981,
"preview": "# - Returns a version string from Git\n#\n# These functions force a re-configure on each git commit so that you can\n# trus"
},
{
"path": "CMake/GetGitRevisionDescription.cmake.in",
"chars": 1377,
"preview": "#\n# Internal file for GetGitRevisionDescription.cmake\n#\n# Requires CMake 2.6 or newer (uses the 'function' command)\n#\n# "
},
{
"path": "CMake/PreventInSourceBuild.cmake",
"chars": 607,
"preview": "function(prevent_in_source_build)\n get_filename_component(REAL_SOURCE_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\" REALPATH)\n get"
},
{
"path": "CMake/TdSetUpCompiler.cmake",
"chars": 7282,
"preview": "# Configures C++17 compiler, setting TDLib-specific compilation options.\n\nfunction(td_set_up_compiler)\n set(CMAKE_EXPOR"
},
{
"path": "CMake/iOS.cmake",
"chars": 12463,
"preview": "# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake\n# files which are included with CMake"
},
{
"path": "CMake/illumos.cmake",
"chars": 284,
"preview": "if (CMAKE_SYSTEM_NAME STREQUAL \"SunOS\")\n #\n # Determine if the host is running an illumos distribution:\n #\n execute_"
},
{
"path": "CMakeLists.txt",
"chars": 53738,
"preview": "cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\n\nproject(TDLib VERSION 1.8.62 LANGUAGES CXX C)\n\nif (NOT DEFINED CMAKE_M"
},
{
"path": "Doxyfile",
"chars": 107760,
"preview": "# Doxyfile 1.8.13\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
},
{
"path": "LICENSE_1_0.txt",
"chars": 1338,
"preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
},
{
"path": "README.md",
"chars": 8384,
"preview": "# TDLib\n\nTDLib (Telegram Database library) is a cross-platform library for building [Telegram](https://telegram.org) cli"
},
{
"path": "SplitSource.php",
"chars": 25979,
"preview": "<?php\n\nfunction disjoint_set_find(&$parents, $x) {\n if ($parents[$x] !== $x) {\n return $parents[$x] = disjoint"
},
{
"path": "TdConfig.cmake",
"chars": 323,
"preview": "include(CMakeFindDependencyMacro)\n#TODO: write all external dependencies\nif (EXISTS \"${CMAKE_CURRENT_LIST_DIR}/TdTargets"
},
{
"path": "benchmark/CMakeLists.txt",
"chars": 3460,
"preview": "if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS \"3.10\"))\n message(FATAL_ERROR \"CMake >= 3.10 is require"
},
{
"path": "benchmark/bench_actor.cpp",
"chars": 9697,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_crypto.cpp",
"chars": 14299,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_db.cpp",
"chars": 7140,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_empty.cpp",
"chars": 274,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_handshake.cpp",
"chars": 2270,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_http.cpp",
"chars": 2274,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_http_reader.cpp",
"chars": 3176,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_http_server.cpp",
"chars": 2716,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_http_server_cheat.cpp",
"chars": 3753,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_http_server_fast.cpp",
"chars": 3235,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_log.cpp",
"chars": 3648,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_misc.cpp",
"chars": 24166,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_queue.cpp",
"chars": 19382,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/bench_tddb.cpp",
"chars": 3836,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/check_proxy.cpp",
"chars": 6873,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/check_tls.cpp",
"chars": 12344,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/hashmap_build.cpp",
"chars": 12441,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/hashset_memory.cpp",
"chars": 4895,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/rmdir.cpp",
"chars": 1269,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "benchmark/wget.cpp",
"chars": 1607,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "build.html",
"chars": 41126,
"preview": "<!DOCTYPE html>\n<html>\n\n<head>\n <title>TDLib build instructions</title>\n <meta name=\"viewport\" content=\"width=device-w"
},
{
"path": "example/README.md",
"chars": 20215,
"preview": "# TDLib usage and build examples\n\nThis directory contains basic examples of TDLib usage from different programming langu"
},
{
"path": "example/android/.gitignore",
"chars": 28,
"preview": "/SDK*\n/tdlib*\n/third-party*\n"
},
{
"path": "example/android/AddIntDef.php",
"chars": 1766,
"preview": "<?php\n if ($argc !== 2) {\n exit();\n }\n $file = file_get_contents($argv[1]);\n\n if (strpos($file, 'andr"
},
{
"path": "example/android/CMakeLists.txt",
"chars": 2747,
"preview": "cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\n\nproject(TdAndroid VERSION 1.0 LANGUAGES CXX)\n\nset(TD_DIR ${CMAKE_CURRE"
},
{
"path": "example/android/Dockerfile",
"chars": 1113,
"preview": "FROM --platform=linux/amd64 ubuntu:24.04 AS build\n\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install "
},
{
"path": "example/android/README.md",
"chars": 3713,
"preview": "# TDLib Android example\n\nThis is an example of building `TDLib` for Android.\nYou need a Bash shell on Linux, macOS, or W"
},
{
"path": "example/android/build-openssl.sh",
"chars": 3482,
"preview": "#!/usr/bin/env bash\n\nANDROID_SDK_ROOT=${1:-SDK}\nANDROID_NDK_VERSION=${2:-23.2.8568313}\nOPENSSL_INSTALL_DIR=${3:-third-pa"
},
{
"path": "example/android/build-tdlib.sh",
"chars": 5284,
"preview": "#!/usr/bin/env bash\n\nANDROID_SDK_ROOT=${1:-SDK}\nANDROID_NDK_VERSION=${2:-23.2.8568313}\nOPENSSL_INSTALL_DIR=${3:-third-pa"
},
{
"path": "example/android/check-environment.sh",
"chars": 1607,
"preview": "#!/usr/bin/env bash\n\n# The script checks that all needed tools are installed and sets OS_NAME, HOST_ARCH, and WGET varia"
},
{
"path": "example/android/fetch-sdk.sh",
"chars": 1081,
"preview": "#!/usr/bin/env bash\n\nANDROID_SDK_ROOT=${1:-SDK}\nANDROID_NDK_VERSION=${2:-23.2.8568313}\n\nif [ -e \"$ANDROID_SDK_ROOT\" ] ; "
},
{
"path": "example/cpp/.gitignore",
"chars": 5,
"preview": "/td/\n"
},
{
"path": "example/cpp/CMakeLists.txt",
"chars": 453,
"preview": "cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\n\nproject(TdExample VERSION 1.0 LANGUAGES CXX)\n\nfind_package(Td 1.8.62 R"
},
{
"path": "example/cpp/README.md",
"chars": 838,
"preview": "# TDLib C++ basic usage examples\n\nTDLib should be prebuilt and installed to local subdirectory `td/`:\n```\ncd <path to TD"
},
{
"path": "example/cpp/td_example.cpp",
"chars": 15094,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/cpp/tdjson_example.cpp",
"chars": 2112,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/csharp/.gitignore",
"chars": 60,
"preview": "/.vs/\n/bin/\n/obj/\n/project.lock.json\n/TdExample.csproj.user\n"
},
{
"path": "example/csharp/README.md",
"chars": 1787,
"preview": "# TDLib C# example\n\nThis is an example of building TDLib with `C++/CLI` support and an example of TDLib usage from C#.\n\n"
},
{
"path": "example/csharp/TdExample.cs",
"chars": 11717,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/csharp/TdExample.csproj",
"chars": 5186,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "example/csharp/TdExample.sln",
"chars": 1389,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 15\nVisualStudioVersion = 15.0.28010.2046\nM"
},
{
"path": "example/ios/Python-Apple-support.patch",
"chars": 5244,
"preview": "diff --git a/Makefile b/Makefile\nindex a1d13e9..8efcf20 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -18,8 +18,13 @@\n # - Ope"
},
{
"path": "example/ios/README.md",
"chars": 2447,
"preview": "# Universal XCFramework build example\n\nBelow are instructions for building TDLib for iOS, watchOS, tvOS, visionOS, and a"
},
{
"path": "example/ios/build-openssl.sh",
"chars": 1120,
"preview": "#!/bin/sh\ncd $(dirname $0)\n\ngit clone https://github.com/beeware/Python-Apple-support\ncd Python-Apple-support\ngit checko"
},
{
"path": "example/ios/build.sh",
"chars": 2730,
"preview": "#!/bin/sh\ncd $(dirname $0)\ntd_path=$(grealpath ../..)\n\nrm -rf build\nmkdir -p build\ncd build\n\nset_cmake_options () {\n # "
},
{
"path": "example/java/.gitignore",
"chars": 61,
"preview": "**/*build/\n/bin/\n/docs/\n/org/drinkless/tdlib/TdApi.java\n/td/\n"
},
{
"path": "example/java/CMakeLists.txt",
"chars": 5087,
"preview": "cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\n\nproject(TdJavaExample VERSION 1.0 LANGUAGES CXX)\n\noption(TD_JSON_JAVA "
},
{
"path": "example/java/README.md",
"chars": 2197,
"preview": "# TDLib Java example\n\nTo run this example, you will need installed JDK >= 1.6.\nFor Javadoc documentation generation PHP "
},
{
"path": "example/java/org/drinkless/tdlib/Client.java",
"chars": 11015,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/java/org/drinkless/tdlib/JsonClient.java",
"chars": 3187,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/java/org/drinkless/tdlib/example/Example.java",
"chars": 36972,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/java/org/drinkless/tdlib/example/JsonExample.java",
"chars": 1827,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/java/td_jni.cpp",
"chars": 8686,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/python/.gitignore",
"chars": 19,
"preview": "/td/\n/tdlib/\n/*.dll"
},
{
"path": "example/python/README.md",
"chars": 462,
"preview": "# TDLib Python example\n\nTo run this example you need to [build](https://github.com/tdlib/td#building) TDLib and copy bui"
},
{
"path": "example/python/tdjson_example.py",
"chars": 11038,
"preview": "#!/usr/bin/env python3\n# Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com),\n# Pellegri"
},
{
"path": "example/swift/.gitignore",
"chars": 31,
"preview": "/xcuserdata/\n/*workspace/\n/td/\n"
},
{
"path": "example/swift/README.md",
"chars": 568,
"preview": "# TDLib swift macOS example\n\nTDLib should be prebuilt and installed to local subdirectory `td/`:\n```\ncd <path to TDLib s"
},
{
"path": "example/swift/src/main.swift",
"chars": 6453,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/swift/src/td-Bridging-Header.h",
"chars": 332,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "example/swift/td.xcodeproj/project.pbxproj",
"chars": 10801,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "example/uwp/LICENSE_1_0.txt",
"chars": 1338,
"preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
},
{
"path": "example/uwp/README.md",
"chars": 2533,
"preview": "# TDLib Universal Windows Platform example\n\nThis is an example of building TDLib SDK for Universal Windows Platform and "
},
{
"path": "example/uwp/SDKManifest.xml",
"chars": 470,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<FileList\n DisplayName=\"TDLib for Universal Windows Platform\"\n ProductFami"
},
{
"path": "example/uwp/Telegram.Td.UWP.nuspec",
"chars": 807,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd\">\n <m"
},
{
"path": "example/uwp/Telegram.Td.UWP.targets",
"chars": 1327,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\n <Propert"
},
{
"path": "example/uwp/[Content_Types].xml",
"chars": 849,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\n <D"
},
{
"path": "example/uwp/app/.gitignore",
"chars": 56,
"preview": "/.vs/\n/bin/\n/obj/\n/project.lock.json\n/TdApp.csproj.user\n"
},
{
"path": "example/uwp/app/App.xaml",
"chars": 240,
"preview": "<Application\n x:Class=\"TdApp.App\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x="
},
{
"path": "example/uwp/app/App.xaml.cs",
"chars": 4148,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed u"
},
{
"path": "example/uwp/app/ApplicationInsights.config",
"chars": 157,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns = \"http://schemas.microsoft.com/ApplicationInsights/20"
},
{
"path": "example/uwp/app/MainPage.xaml",
"chars": 1125,
"preview": "<Page\n x:Class=\"TdApp.MainPage\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"h"
},
{
"path": "example/uwp/app/MainPage.xaml.cs",
"chars": 6467,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed u"
},
{
"path": "example/uwp/app/Package.appxmanifest",
"chars": 1491,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\""
},
{
"path": "example/uwp/app/Properties/AssemblyInfo.cs",
"chars": 1027,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "example/uwp/app/Properties/Default.rd.xml",
"chars": 1233,
"preview": "<!--\n This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n develope"
},
{
"path": "example/uwp/app/TdApp.csproj",
"chars": 6847,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "example/uwp/app/TdApp.sln",
"chars": 2044,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.24720.0\nMini"
},
{
"path": "example/uwp/app/project.json",
"chars": 454,
"preview": "{\n \"dependencies\": {\n \"Microsoft.ApplicationInsights\": \"1.0.0\",\n \"Microsoft.ApplicationInsights.PersistenceChann"
},
{
"path": "example/uwp/build.ps1",
"chars": 4833,
"preview": "param (\r\n [string]$vcpkg_root = $(throw \"-vcpkg_root=<path to vcpkg> is required\"),\r\n [ValidateSet('x86', 'x64', 'ARM'"
},
{
"path": "example/uwp/extension.vsixmanifest",
"chars": 927,
"preview": "<PackageManifest Version=\"2.0.0\" xmlns=\"http://schemas.microsoft.com/developer/vsx-schema/2011\">\n <Metadata>\n <Ident"
},
{
"path": "example/web/.gitignore",
"chars": 93,
"preview": "/OpenSSL_*.tar.gz\n/openssl-OpenSSL_*/\n/tdweb/dist/\n/tdweb/node_modules/\n/tdweb/src/prebuilt/\n"
},
{
"path": "example/web/README.md",
"chars": 1468,
"preview": "# TDLib Web example\n\nThis is an example of building `TDLib` for browsers using [Emscripten](https://github.com/kripken/e"
},
{
"path": "example/web/build-openssl.sh",
"chars": 1437,
"preview": "#!/bin/sh\ncd $(dirname $0)\n\nemconfigure true 2> /dev/null || { echo 'emconfigure not found. Install emsdk and add emconf"
},
{
"path": "example/web/build-tdlib.sh",
"chars": 1607,
"preview": "#!/bin/sh\ncd $(dirname $0)\n\nemcmake true 2> /dev/null || { echo 'emcmake not found. Install emsdk and add emcmake and em"
},
{
"path": "example/web/build-tdweb.sh",
"chars": 109,
"preview": "#!/bin/sh\ncd $(dirname $0)\n\ncd tdweb || exit 1\nnpm install --no-save || exit 1\nnpm run build || exit 1\ncd ..\n"
},
{
"path": "example/web/copy-tdlib.sh",
"chars": 151,
"preview": "#!/bin/sh\ncd $(dirname $0)\n\nDEST=tdweb/src/prebuilt/release/\nmkdir -p $DEST || exit 1\ncp build/wasm/td_wasm.js build/was"
},
{
"path": "example/web/tdweb/README.md",
"chars": 2569,
"preview": "## tdweb - TDLib in a browser\n\n[TDLib](https://github.com/tdlib/td) is a library for building Telegram clients. tdweb is"
},
{
"path": "example/web/tdweb/package.json",
"chars": 2370,
"preview": "{\n \"name\": \"tdweb\",\n \"version\": \"1.8.62\",\n \"description\": \"JavaScript interface for TDLib (Telegram library)\",\n \"mai"
},
{
"path": "example/web/tdweb/src/index.js",
"chars": 18717,
"preview": "import MyWorker from './worker.js';\n//import localforage from 'localforage';\nimport BroadcastChannel from 'broadcast-cha"
},
{
"path": "example/web/tdweb/src/logger.js",
"chars": 930,
"preview": "class Logger {\n constructor() {\n this.setVerbosity('WARNING');\n }\n debug(...str) {\n if (this.checkVerbosity(4))"
},
{
"path": "example/web/tdweb/src/wasm-utils.js",
"chars": 5203,
"preview": "// 1. +++ fetchAndInstantiate() +++ //\n\n// This library function fetches the wasm module at 'url', instantiates it with\n"
},
{
"path": "example/web/tdweb/src/worker.js",
"chars": 25672,
"preview": "import localforage from 'localforage';\nimport log from './logger.js';\nimport { instantiateAny } from './wasm-utils.js';\n"
},
{
"path": "example/web/tdweb/webpack.config.js",
"chars": 1740,
"preview": "const path = require('path');\nconst CleanWebpackPlugin = require('clean-webpack-plugin');\n\nmodule.exports = {\n entry: ["
},
{
"path": "format.ps1",
"chars": 253,
"preview": "./src.ps1 | Select-String -NotMatch \"CxCli.h\" | Select-String -CaseSensitive -NotMatch \"DotNet\" | Select-String -NotMat"
},
{
"path": "format.sh",
"chars": 175,
"preview": "#!/bin/sh\ncd $(dirname $0)\n./src.sh | grep -v CxCli.h | grep -v DotNet | grep -v tl/tl_dotnet_object.h | grep -v /tl-par"
},
{
"path": "memprof/memprof.cpp",
"chars": 8776,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "memprof/memprof.h",
"chars": 790,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "memprof/memprof_stat.cpp",
"chars": 4286,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "memprof/memprof_stat.h",
"chars": 352,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "post.js",
"chars": 40,
"preview": "createTdwebModule.ready.FS = Module.FS;\n"
},
{
"path": "sqlite/CMakeLists.txt",
"chars": 2574,
"preview": "if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS \"3.10\"))\n message(FATAL_ERROR \"CMake >= 3.10 is require"
},
{
"path": "sqlite/sqlite/LICENSE",
"chars": 1462,
"preview": "Copyright (c) 2008, ZETETIC LLC\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without"
},
{
"path": "sqlite/sqlite/sqlite3.c",
"chars": 8274268,
"preview": "/******************************************************************************\n** This file is an amalgamation of many "
},
{
"path": "sqlite/sqlite/sqlite3.h",
"chars": 582539,
"preview": "/*\n** 2001-09-15\n**\n** The author disclaims copyright to this source code. In place of\n** a legal notice, here is a ble"
},
{
"path": "sqlite/sqlite/sqlite3ext.h",
"chars": 36354,
"preview": "/*\n** 2006 June 7\n**\n** The author disclaims copyright to this source code. In place of\n** a legal notice, here is a bl"
},
{
"path": "sqlite/sqlite/sqlite3session.h",
"chars": 75343,
"preview": "#if !defined(__SQLITESESSION_H_) && defined(SQLITE_ENABLE_SESSION)\n#define __SQLITESESSION_H_ 1\n\n/*\n** Make sure we can "
},
{
"path": "src.ps1",
"chars": 143,
"preview": "git ls-tree -r HEAD --name-only benchmark example memprof td tdactor tddb tde2e tdnet tdtl tdutils test | Select-String"
},
{
"path": "src.sh",
"chars": 147,
"preview": "#!/bin/bash\ngit ls-tree -r HEAD --name-only benchmark example memprof td tdactor tddb tde2e tdnet tdtl tdutils test | gr"
},
{
"path": "td/generate/CMakeLists.txt",
"chars": 9277,
"preview": "if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS \"3.10\"))\n message(FATAL_ERROR \"CMake >= 3.10 is require"
},
{
"path": "td/generate/DotnetTlDocumentationGenerator.php",
"chars": 11804,
"preview": "<?php\n\nrequire_once 'TlDocumentationGenerator.php';\n\nclass DotnetTlDocumentationGenerator extends TlDocumentationGenerat"
},
{
"path": "td/generate/DoxygenTlDocumentationGenerator.php",
"chars": 13901,
"preview": "<?php\n\nrequire_once 'TlDocumentationGenerator.php';\n\nclass DoxygenTlDocumentationGenerator extends TlDocumentationGenera"
},
{
"path": "td/generate/JavadocTlDocumentationGenerator.php",
"chars": 9036,
"preview": "<?php\n\nrequire_once 'TlDocumentationGenerator.php';\n\nclass JavadocTlDocumentationGenerator extends TlDocumentationGenera"
},
{
"path": "td/generate/TlDocumentationGenerator.php",
"chars": 15599,
"preview": "<?php\n\nabstract class TlDocumentationGenerator\n{\n private $current_line = '';\n private $documentation = array();\n "
},
{
"path": "td/generate/generate_c.cpp",
"chars": 754,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/generate_common.cpp",
"chars": 2800,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/generate_dotnet.cpp",
"chars": 795,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/generate_java.cpp",
"chars": 921,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/generate_json.cpp",
"chars": 528,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/generate_mtproto.cpp",
"chars": 1044,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/scheme/e2e_api.tl",
"chars": 3944,
"preview": "int ? = Int;\nlong ? = Long;\ndouble ? = Double;\nstring ? = String;\n\nbytes = Bytes;\n\nboolFalse = Bool;\nboolTrue = Bool;\n\nt"
},
{
"path": "td/generate/scheme/mtproto_api.tl",
"chars": 4057,
"preview": "int ? = Int;\nlong ? = Long;\ndouble ? = Double;\nstring ? = String;\n\ndummyHttpWait = HttpWait;\n\nvector {t:Type} # [ t ] = "
},
{
"path": "td/generate/scheme/secret_api.tl",
"chars": 8404,
"preview": "int ? = Int;\nlong ? = Long;\ndouble ? = Double;\nstring ? = String;\n\nbytes = Bytes;\n\nboolFalse = Bool;\nboolTrue = Bool;\n\nt"
},
{
"path": "td/generate/scheme/td_api.tl",
"chars": 1069933,
"preview": "double ? = Double;\nstring ? = String;\n\nint32 = Int32;\nint53 = Int53;\nint64 = Int64;\nbytes = Bytes;\n\nboolFalse = Bool;\nbo"
},
{
"path": "td/generate/scheme/telegram_api.tl",
"chars": 262233,
"preview": "int ? = Int;\nlong ? = Long;\ndouble ? = Double;\nstring ? = String;\n\nbytes = Bytes;\nint256 = Int256;\n\ntrue#3fedd339 = True"
},
{
"path": "td/generate/tl-parser/CMakeLists.txt",
"chars": 508,
"preview": "cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\n\nproject(tl-parser LANGUAGES C)\n\nset(SOURCES crc32.h crc32.c tlc.c tl-p"
},
{
"path": "td/generate/tl-parser/LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "td/generate/tl-parser/crc32.c",
"chars": 15088,
"preview": "/*\n This file is part of VK/KittenPHP-DB-Engine Library.\n\n VK/KittenPHP-DB-Engine Library is free software: you ca"
},
{
"path": "td/generate/tl-parser/crc32.h",
"chars": 1121,
"preview": "/*\n This file is part of VK/KittenPHP-DB-Engine Library.\n\n VK/KittenPHP-DB-Engine Library is free software: you ca"
},
{
"path": "td/generate/tl-parser/portable_endian.h",
"chars": 2248,
"preview": "// \"License\": Public Domain\n// I, Mathias Panzenböck, place this file hereby into the public domain. Use it at your own "
},
{
"path": "td/generate/tl-parser/tl-parser-tree.h",
"chars": 5922,
"preview": "/* \n This file is part of tgl-library\n\n This library is free software; you can redistribute it and/or\n modify i"
},
{
"path": "td/generate/tl-parser/tl-parser.c",
"chars": 80022,
"preview": "/*\n This file is part of tl-parser \n\n tl-parser is free software: you can redistribute it and/or modify\n it und"
},
{
"path": "td/generate/tl-parser/tl-parser.h",
"chars": 4708,
"preview": "/*\n This file is part of tgl-libary/tlc\n\n Tgl-library/tlc is free software: you can redistribute it and/or modify\n"
},
{
"path": "td/generate/tl-parser/tl-tl.h",
"chars": 1844,
"preview": "/*\n This file is part of VK/KittenPHP-DB-Engine.\n\n VK/KittenPHP-DB-Engine is free software: you can redistribute i"
},
{
"path": "td/generate/tl-parser/tlc.c",
"chars": 3816,
"preview": "/*\n This file is part of tl-parser\n\n tl-parser is free software: you can redistribute it and/or modify\n it unde"
},
{
"path": "td/generate/tl-parser/wgetopt.c",
"chars": 33614,
"preview": "/* Getopt for GNU.\nNOTE: getopt is now part of the C library, so if you don't know what\n\"Keep this file name-space clean"
},
{
"path": "td/generate/tl-parser/wgetopt.h",
"chars": 6749,
"preview": "/* Declarations for getopt.\n Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009,2010\n Free Software Foundation, I"
},
{
"path": "td/generate/tl_json_converter.cpp",
"chars": 11665,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_json_converter.h",
"chars": 544,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_c.h",
"chars": 55995,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_cpp.cpp",
"chars": 26427,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_cpp.h",
"chars": 5877,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_dotnet.h",
"chars": 20908,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_h.cpp",
"chars": 14049,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_h.h",
"chars": 5366,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_hpp.cpp",
"chars": 10195,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_hpp.h",
"chars": 6480,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_java.cpp",
"chars": 15962,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_java.h",
"chars": 6810,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_jni_cpp.cpp",
"chars": 25444,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_jni_cpp.h",
"chars": 6032,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_jni_h.cpp",
"chars": 6697,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_jni_h.h",
"chars": 2886,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_td.cpp",
"chars": 9336,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/generate/tl_writer_td.h",
"chars": 2958,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/AuthData.cpp",
"chars": 6932,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/AuthData.h",
"chars": 7205,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/AuthKey.h",
"chars": 3320,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/ConnectionManager.cpp",
"chars": 1092,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/ConnectionManager.h",
"chars": 1928,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/CryptoStorer.h",
"chars": 12509,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/DhCallback.h",
"chars": 830,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/DhHandshake.cpp",
"chars": 6121,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/DhHandshake.h",
"chars": 3054,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/Handshake.cpp",
"chars": 12290,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/Handshake.h",
"chars": 2862,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/HandshakeActor.cpp",
"chars": 3350,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/HandshakeActor.h",
"chars": 1528,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/HandshakeConnection.h",
"chars": 2545,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/HttpTransport.cpp",
"chars": 2772,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/HttpTransport.h",
"chars": 1634,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/IStreamTransport.cpp",
"chars": 895,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/IStreamTransport.h",
"chars": 1356,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/KDF.cpp",
"chars": 4013,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/KDF.h",
"chars": 708,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/MessageId.h",
"chars": 1782,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/MtprotoQuery.h",
"chars": 620,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/NoCryptoStorer.h",
"chars": 1165,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
},
{
"path": "td/mtproto/PacketInfo.h",
"chars": 731,
"preview": "//\n// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026\n//\n// Distributed un"
}
]
// ... and 1409 more files (download for full content)
About this extraction
This page contains the full source code of the tdlib/td GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1609 files (26.9 MB), approximately 7.1M tokens, and a symbol index with 19278 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.